<?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>34564</bug_id>
          
          <creation_ts>2010-02-04 00:02:22 -0800</creation_ts>
          <short_desc>Copying can result in span around block elements on the clipboard</short_desc>
          <delta_ts>2011-12-28 16:45:10 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>HTML Editing</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</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>45449</dependson>
    
    <dependson>46545</dependson>
    
    <dependson>60988</dependson>
    
    <dependson>61454</dependson>
    
    <dependson>61466</dependson>
    
    <dependson>61595</dependson>
    
    <dependson>61597</dependson>
    
    <dependson>61599</dependson>
    
    <dependson>61602</dependson>
    
    <dependson>61605</dependson>
    
    <dependson>61607</dependson>
    
    <dependson>61608</dependson>
    
    <dependson>61610</dependson>
    
    <dependson>61614</dependson>
    
    <dependson>61616</dependson>
    
    <dependson>61617</dependson>
    
    <dependson>61618</dependson>
    
    <dependson>61680</dependson>
    
    <dependson>61681</dependson>
    
    <dependson>61682</dependson>
    
    <dependson>61683</dependson>
    
    <dependson>61887</dependson>
    
    <dependson>65824</dependson>
    
    <dependson>65833</dependson>
          <blocked>42850</blocked>
    
    <blocked>62041</blocked>
    
    <blocked>12248</blocked>
    
    <blocked>12319</blocked>
    
    <blocked>24009</blocked>
    
    <blocked>26483</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tony Chang">tony</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>darin</cc>
    
    <cc>dglazkov</cc>
    
    <cc>enrica</cc>
    
    <cc>eric</cc>
    
    <cc>mitz</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>sullivan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>187653</commentid>
    <comment_count>0</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2010-02-04 00:02:22 -0800</bug_when>
    <thetext>Bug 26937 is related in that the pasted html is invalid (with spans around divs), but even if we fix bug 26937 at paste time, we shouldn&apos;t be putting invalid HTML in the clipboard.

Comments 5+ on bug 26937 describe the problem in more detail.  Comment 7 has an example that will generate invalid HTML on the clipboard.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>276385</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2010-09-09 02:58:49 -0700</bug_when>
    <thetext>This bug seems to be still causing a lot of problems in pasting side.  I have a plan to fix this issue in several iterations:
1. Isolate the code to find the special ancestors into a function, and call this function before calling serializeNodes.
2. Modify ReplaceSelectionCommand so that it&apos;ll remove duplicated style from all top-level nodes in the fragment.
3. Add an ability for serializeNodes to annotate document + editing style on each top-level nodes in the fragment.  We&apos;ll use this only if there is no special common ancestor.
4. Stop wrapping styles in createMarkup</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409366</commentid>
    <comment_count>2</comment_count>
      <attachid>94727</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-24 19:22:32 -0700</bug_when>
    <thetext>Created attachment 94727
work in progress</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409378</commentid>
    <comment_count>3</comment_count>
    <who name="Annie Sullivan">sullivan</who>
    <bug_when>2011-05-24 19:39:05 -0700</bug_when>
    <thetext>Can you give an example of how styles will get applied to top-level nodes? For example, if I have the following HTML:

&lt;ul&gt;
  &lt;li&gt;Line One&lt;/li&gt;
  &lt;li&gt;Line Two&lt;/li&gt;
&lt;/ul&gt;

And the text should be red, would it look like this:

&lt;ul&gt;
  &lt;li&gt;&lt;font color=&quot;ff0000&quot;&gt;Line One&lt;/font&gt;&lt;/li&gt;
  &lt;li&gt;&lt;font color=&quot;ff0000&quot;&gt;Line Two&lt;/font&gt;&lt;/li&gt;
&lt;/ul&gt;

Or like this:

&lt;ul style=&quot;color:red&quot;&gt;
  &lt;li&gt;Line One&lt;/li&gt;
  &lt;li&gt;Line Two&lt;/li&gt;
&lt;/ul&gt;

Or something else? Do I understand correctly that we currently wrap the &lt;font&gt; or &lt;span&gt; tag around the entire &lt;ul&gt;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409381</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-24 19:41:41 -0700</bug_when>
    <thetext>The latter.  We&apos;d have to include all computed style in inline declaration when we copy and remove them all when we paste.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409710</commentid>
    <comment_count>5</comment_count>
    <who name="Annie Sullivan">sullivan</who>
    <bug_when>2011-05-25 09:55:44 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; The latter.  We&apos;d have to include all computed style in inline declaration when we copy and remove them all when we paste.

The latter is complicated for a few reasons:

1. Some styles apply differently to block elements than to inline ones. For example, setting background-color on the ul will look very different than wrapping the list items in background-color styled spans.

2. The former behavior is how WebKit currently behaves if you select the list in a contenteditable region and use execCommand to apply a style. It&apos;s confusing for web developers to have the two different ways styles can be applied (of course, the current span-wrapping is worse).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>409716</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-25 10:04:08 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; 1. Some styles apply differently to block elements than to inline ones. For example, setting background-color on the ul will look very different than wrapping the list items in background-color styled spans.

Sure but the style is coming from the ancestors, and we apply the style on children when we paste anyways.

&gt; 2. The former behavior is how WebKit currently behaves if you select the list in a contenteditable region and use execCommand to apply a style. It&apos;s confusing for web developers to have the two different ways styles can be applied (of course, the current span-wrapping is worse).

This is irrelevant because we&apos;ll strip all redundant styles in paste side.  And it&apos;s impossible to get the same behavior between serialization code and ApplyStyleCommand because we can&apos;t modify DOM when we serialize DOM.

New approach will only be visible to websites if they manually interrupt paste event and grab the clipboard content directly but then they need to deal with different kinds of markup anyways now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>410957</commentid>
    <comment_count>7</comment_count>
      <attachid>95063</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-26 15:59:38 -0700</bug_when>
    <thetext>Created attachment 95063
work in progress 2

Smart replace is broken and there&apos;s something wrong with XML copy &amp; paste right now but this patch is a good representative of where I&apos;m heading.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411055</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-26 18:03:52 -0700</bug_when>
    <thetext>This patch requires the following tests be rebaselined.  I&apos;ll covert them to text-based tests first to make the correctness clear.
editing/pasteboard/4700297.html
editing/pasteboard/5065605.html
editing/pasteboard/5089327.html
editing/pasteboard/5483567.html
editing/pasteboard/emacs-ctrl-k-y-001.html
editing/pasteboard/interchange-newline-2.html
editing/pasteboard/merge-end-3.html
editing/pasteboard/merge-end-5.html
editing/pasteboard/merge-end-blockquote.html
editing/pasteboard/merge-end-borders.html
editing/pasteboard/merge-end-list.html
editing/pasteboard/merge-end-table.html
editing/pasteboard/paste-line-endings-007.html
editing/pasteboard/paste-line-endings-008.html
editing/pasteboard/paste-line-endings-009.html
editing/pasteboard/paste-text-004.html
editing/pasteboard/paste-text-005.html
editing/pasteboard/paste-text-008.html
editing/pasteboard/paste-text-009.html
editing/pasteboard/paste-text-010.html
editing/pasteboard/smart-paste-001.html
editing/pasteboard/smart-paste-003.html
editing/pasteboard/smart-paste-006.html
editing/pasteboard/smart-paste-007.html
editing/pasteboard/smart-paste-008.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411113</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-26 21:07:11 -0700</bug_when>
    <thetext>More tests to convert:

editing/pasteboard/5027857.html
editing/pasteboard/interchange-newline-1.html
editing/pasteboard/merge-end-1.html
editing/pasteboard/merge-end-2.html
editing/pasteboard/paste-blockquote-3.html
editing/pasteboard/paste-noscript-xhtml.xhtml
editing/pasteboard/paste-noscript.html
editing/pasteboard/paste-pre-001.html
editing/pasteboard/paste-pre-002.html
editing/pasteboard/paste-table-001.html
editing/pasteboard/paste-text-001.html
editing/pasteboard/paste-text-002.html
editing/pasteboard/paste-text-003.html
editing/pasteboard/paste-unrendered-select.html
editing/pasteboard/smart-paste-002.html
editing/pasteboard/smart-paste-004.html
editing/pasteboard/smart-paste-005.html

These are actually more important because the correctness of rebaselines for these tests is less obvious.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411657</commentid>
    <comment_count>10</comment_count>
      <attachid>95214</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-27 14:12:02 -0700</bug_when>
    <thetext>Created attachment 95214
work in progress 3

This approach is flawed as it turns out.  I need to remove UA default styles when we serialize markup instead of removing them in the paste side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>411738</commentid>
    <comment_count>11</comment_count>
      <attachid>95235</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-05-27 17:30:24 -0700</bug_when>
    <thetext>Created attachment 95235
work in progress 4

Okay, now only 34 tests fail and 2 tests crash. I&apos;ll have to split changes and see which change is causing which failure now.  Also, we&apos;d have to be more clever about avoiding presentational elements when we&apos;re pasting contents.  e.g. when we copy &amp; paste &lt;b&gt;&lt;i&gt;hello&lt;/i&gt;&lt;/b&gt; at the same place, we&apos;ll end up nesting them like &lt;b&gt;&lt;i&gt;&lt;b style=&quot;font-weight: normal; font-style: normal;&quot;&gt;&lt;i&gt;hello&lt;/i&gt;&lt;/b&gt;&lt;/i&gt;&lt;/b&gt;.  Maybe I&apos;ll file a blocker and fix it separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>414671</commentid>
    <comment_count>12</comment_count>
      <attachid>95857</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-02 23:41:03 -0700</bug_when>
    <thetext>Created attachment 95857
work in progress 5

There are 3-4 regressions and 8 layout tests fail but there are no crashes so it&apos;s getting there.  I&apos;m hoping to get this ready for a review by the end of next week.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415304</commentid>
    <comment_count>13</comment_count>
      <attachid>95991</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-03 17:05:36 -0700</bug_when>
    <thetext>Created attachment 95991
alpha version

This patch works in the sense that there are no obvious regressions.  I&apos;ll try cleaning up the code and submit for a review on Monday.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415309</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-03 17:10:07 -0700</bug_when>
    <thetext>Attachment 95991 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;LayoutTests/editing/deleting/deleting-line...&quot; exit_code: 1

Source/WebCore/editing/EditingStyle.h:126:  The parameter name &quot;element&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 19 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>415407</commentid>
    <comment_count>15</comment_count>
      <attachid>96010</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-03 23:06:27 -0700</bug_when>
    <thetext>Created attachment 96010
beta version

Cleaned up the patch.  This is ready for a review once I write the change log entries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>415417</commentid>
    <comment_count>16</comment_count>
      <attachid>96013</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-04 00:01:27 -0700</bug_when>
    <thetext>Created attachment 96013
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>419342</commentid>
    <comment_count>17</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-12 15:08:13 -0700</bug_when>
    <thetext>Can someone review my patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420432</commentid>
    <comment_count>18</comment_count>
      <attachid>96013</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-14 08:35:39 -0700</bug_when>
    <thetext>Comment on attachment 96013
Patch

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

&gt; LayoutTests/editing/execCommand/insert-list-with-noneditable-content-expected.txt:7
&gt; -|       style=&quot;background-color: LightGray;&quot;
&gt; +|       style=&quot;background-color: rgb(211, 211, 211); &quot;

Is this intentional?

&gt; LayoutTests/editing/pasteboard/5065605-expected.txt:47
&gt;  |   &lt;font&gt;
&gt;  |     class=&quot;Apple-style-span&quot;
&gt;  |     color=&quot;#ff0000&quot;
&gt; -|     &lt;span&gt;
&gt; +|     &lt;font&gt;
&gt;  |       class=&quot;Apple-style-span&quot;
&gt; +|       color=&quot;#ff0000&quot;
&gt; +|       &quot;This text should be red.&quot;
&gt; +|     &lt;div&gt;

The fonts are now nested?  Yet neither of them provides any font information?

&gt; LayoutTests/editing/pasteboard/display-block-on-spans-expected.txt:33
&gt;  |   &lt;b&gt;
&gt; -|     &quot;This&lt;#selection-caret&gt;&quot;
&gt; -|   &lt;b&gt;
&gt; +|     &lt;b&gt;
&gt; +|       &quot;This&lt;#selection-caret&gt;&quot;

The bolds are now nested?

&gt; LayoutTests/editing/pasteboard/paste-pre-001-expected.txt:10
&gt; -execPasteCommand: &lt;div id=&quot;test&quot; class=&quot;editing&quot;&gt; &lt;pre&gt;&lt;span class=&quot;Apple-style-span&quot; style=&quot;font-family: Times; white-space: normal; &quot;&gt;&lt;pre&gt;foo bar&lt;/pre&gt;&lt;/span&gt;&lt;/pre&gt; &lt;/div&gt;
&gt; +execPasteCommand: &lt;div id=&quot;test&quot; class=&quot;editing&quot;&gt; &lt;pre&gt;&lt;pre&gt;foo bar&lt;/pre&gt;&lt;/pre&gt; &lt;/div&gt;

Is this change intentional?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>420489</commentid>
    <comment_count>19</comment_count>
      <attachid>96013</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-14 09:26:50 -0700</bug_when>
    <thetext>Comment on attachment 96013
Patch

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

&gt;&gt; LayoutTests/editing/execCommand/insert-list-with-noneditable-content-expected.txt:7
&gt;&gt; +|       style=&quot;background-color: rgb(211, 211, 211); &quot;
&gt; 
&gt; Is this intentional?

As I mentioned in the change log, this is visually identical.  It&apos;s just that we&apos;re preserving background color in different code path.

&gt;&gt; LayoutTests/editing/pasteboard/5065605-expected.txt:47
&gt;&gt; +|     &lt;div&gt;
&gt; 
&gt; The fonts are now nested?  Yet neither of them provides any font information?

Not quite.  We used to nest font, span, font, div, font, div font.  Now we only have font, font, div, font.

&gt;&gt; LayoutTests/editing/pasteboard/display-block-on-spans-expected.txt:33
&gt;&gt; +|       &quot;This&lt;#selection-caret&gt;&quot;
&gt; 
&gt; The bolds are now nested?

Yeah, sad but we should be able to improve it in follow ups.

&gt;&gt; LayoutTests/editing/pasteboard/paste-pre-001-expected.txt:10
&gt;&gt; +execPasteCommand: &lt;div id=&quot;test&quot; class=&quot;editing&quot;&gt; &lt;pre&gt;&lt;pre&gt;foo bar&lt;/pre&gt;&lt;/pre&gt; &lt;/div&gt;
&gt; 
&gt; Is this change intentional?

Yes, this span wasn&apos;t doing anything useful because pre overrode both font-family and white-space.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>421439</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-15 10:46:55 -0700</bug_when>
    <thetext>Ping reviewers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424723</commentid>
    <comment_count>21</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-06-21 13:51:31 -0700</bug_when>
    <thetext>Any reviewers?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>445637</commentid>
    <comment_count>22</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-02 17:35:28 -0700</bug_when>
    <thetext>Ping reviewers again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447445</commentid>
    <comment_count>23</comment_count>
      <attachid>96013</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-05 15:23:10 -0700</bug_when>
    <thetext>Comment on attachment 96013
Patch

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

I would like to review this patch, but it is too large for me to comprehend.  Is it possible to break it into smaller patches?  Here&apos;s one suggestion on how to do that:

a) a patch for adding inline style declarations to top level elements (we would still wrap in an apple style span)
b) a patch for wraping top level text nodes with a style span (maybe in addition to the apple style span)
c) a patch to remove apple style span since it is now redundant

I admit that it would make the resulting html worse temporarily (since we&apos;re duplicating styles), but hopefully that wouldn&apos;t be more than a few weeks.

&gt; LayoutTests/editing/pasteboard/paste-text-with-style-expected.txt:40
&gt; +|     &lt;div&gt;
&gt; +|       style=&quot;font-style: normal; font-weight: normal; &quot;
&gt; +|       &lt;i&gt;
&gt; +|         &quot;hello italic&quot;

In this test, why did the div end up inside the &lt;i&gt; further up the DOM?  This test seems to have gone from valid html to invalid html.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447479</commentid>
    <comment_count>24</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-05 16:52:00 -0700</bug_when>
    <thetext>I talked with Tony about this and I&apos;m going to split this patch into two pieces:
1. Add style removal logic to RelaceSelectionCommand.  We can even add tests to ensure redundant styles are not added here.
2. Update serialization code not to use wrapping span.

I&apos;ll first update the existing patch for ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447517</commentid>
    <comment_count>25</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-05 17:59:47 -0700</bug_when>
    <thetext>It appears that this patch is now broken due to various changes in ReplaceSelectionCommand.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447544</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-05 19:09:09 -0700</bug_when>
    <thetext>Apparently, this was caused by r92330 and I found various regressions caused by r92330 while investigating the issue.  It turned out that this bug really blocks the bug 26483.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447564</commentid>
    <comment_count>27</comment_count>
      <attachid>103144</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-05 20:37:48 -0700</bug_when>
    <thetext>Created attachment 103144
updated</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447568</commentid>
    <comment_count>28</comment_count>
      <attachid>103144</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-05 21:15:05 -0700</bug_when>
    <thetext>Comment on attachment 103144
updated

Attachment 103144 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9328055

New failing tests:
fast/events/ondrop-text-html.html
editing/pasteboard/paste-pre-002.html
editing/pasteboard/paste-code-in-pre.html
editing/pasteboard/onpaste-text-html.html
editing/pasteboard/paste-text-011.html
editing/pasteboard/paste-pre-001.html
editing/pasteboard/data-transfer-items.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447683</commentid>
    <comment_count>29</comment_count>
      <attachid>103171</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-06 17:43:25 -0700</bug_when>
    <thetext>Created attachment 103171
rebaselined more tests for chromium</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>447744</commentid>
    <comment_count>30</comment_count>
      <attachid>103171</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-07 06:41:01 -0700</bug_when>
    <thetext>Comment on attachment 103171
rebaselined more tests for chromium

Attachment 103171 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9329470

New failing tests:
fast/events/ondrop-text-html.html
editing/pasteboard/paste-code-in-pre.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448294</commentid>
    <comment_count>31</comment_count>
      <attachid>103299</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-08 15:10:42 -0700</bug_when>
    <thetext>Created attachment 103299
updated after r92620</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448295</commentid>
    <comment_count>32</comment_count>
      <attachid>103299</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-08 15:12:06 -0700</bug_when>
    <thetext>Comment on attachment 103299
updated after r92620

Most of rebaselines in this patch are due to the bug 65824 so the final patch should be even smaller than this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448323</commentid>
    <comment_count>33</comment_count>
      <attachid>103299</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-08-08 15:50:04 -0700</bug_when>
    <thetext>Comment on attachment 103299
updated after r92620

Attachment 103299 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/9333178

New failing tests:
fast/events/ondrop-text-html.html
editing/pasteboard/paste-code-in-pre.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448869</commentid>
    <comment_count>34</comment_count>
      <attachid>103412</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-09 16:07:40 -0700</bug_when>
    <thetext>Created attachment 103412
updated after r92695</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448873</commentid>
    <comment_count>35</comment_count>
      <attachid>103412</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-09 16:16:46 -0700</bug_when>
    <thetext>Comment on attachment 103412
updated after r92695

Oops, I included 2 bad rebaselines.  Uploading a new patch in a minute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448876</commentid>
    <comment_count>36</comment_count>
      <attachid>103414</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-09 16:20:26 -0700</bug_when>
    <thetext>Created attachment 103414
reverted 2 bad rebaselines</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>448877</commentid>
    <comment_count>37</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-09 16:25:06 -0700</bug_when>
    <thetext>I&apos;ve decided to keep code that deals with style spans in ReplaceSelectionCommand to paste contents copied by old versions of WebKit.  We can probably kill it in the future once this version become dominant.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449494</commentid>
    <comment_count>38</comment_count>
      <attachid>103412</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-10 16:59:24 -0700</bug_when>
    <thetext>Comment on attachment 103412
updated after r92695

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

Sorry, comments on the previous patch, but I think they still apply.

&gt; Source/WebCore/editing/markup.cpp:139
&gt; +    Node* traverseNodesForSerialization(Node* startNode, Node* pastEnd, bool shouldEmit);

It would be nice if shouldEmit was an enum.

&gt; Source/WebCore/editing/markup.cpp:223
&gt; +        // &lt;rdar://problem/5371536&gt;

Nit: Maybe add FIXME: ?

&gt; Source/WebCore/editing/markup.cpp:224
&gt; +        // Make sure spans are inline style in paste side e.g. span { display: block }

Nit: Period at the end of the comment.

&gt; Source/WebCore/editing/markup.cpp:226
&gt; +        // FIXME: should this be included in forceInline?

Nit: Capitalize |should|.

&gt; Source/WebCore/editing/markup.cpp:339
&gt; +        Node* lastClosed = traverseNodesForSerialization(startNode, pastEnd, false);

It looks like we traverse the nodes for serialization twice now (once before) so we can determine the highest node to be serialized.  Do you think that will have a perf impact?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449513</commentid>
    <comment_count>39</comment_count>
      <attachid>103412</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-10 17:23:33 -0700</bug_when>
    <thetext>Comment on attachment 103412
updated after r92695

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

&gt;&gt; Source/WebCore/editing/markup.cpp:139
&gt;&gt; +    Node* traverseNodesForSerialization(Node* startNode, Node* pastEnd, bool shouldEmit);
&gt; 
&gt; It would be nice if shouldEmit was an enum.

That&apos;s a good idea.

&gt;&gt; Source/WebCore/editing/markup.cpp:223
&gt;&gt; +        // &lt;rdar://problem/5371536&gt;
&gt; 
&gt; Nit: Maybe add FIXME: ?

Yeah, it should be
// FIXME: &lt;rdar://problem/5371536&gt; Style rules that match pasted content can change it&apos;s appearance
instead

&gt;&gt; Source/WebCore/editing/markup.cpp:224

&gt; 
&gt; Nit: Period at the end of the comment.

Oops, will fix.

&gt;&gt; Source/WebCore/editing/markup.cpp:226
&gt;&gt; +        // FIXME: should this be included in forceInline?
&gt; 
&gt; Nit: Capitalize |should|.

Will fix.

&gt;&gt; Source/WebCore/editing/markup.cpp:339
&gt;&gt; +        Node* lastClosed = traverseNodesForSerialization(startNode, pastEnd, false);
&gt; 
&gt; It looks like we traverse the nodes for serialization twice now (once before) so we can determine the highest node to be serialized.  Do you think that will have a perf impact?

I don&apos;t think it will.  Sure it&apos;ll double the traversal time but I suspect that we spend much more time generating string and concatenating them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449555</commentid>
    <comment_count>40</comment_count>
      <attachid>103567</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-10 18:45:16 -0700</bug_when>
    <thetext>Created attachment 103567
Updated per comment #38</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449556</commentid>
    <comment_count>41</comment_count>
      <attachid>103568</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-10 18:46:58 -0700</bug_when>
    <thetext>Created attachment 103568
Renamed enum values</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449558</commentid>
    <comment_count>42</comment_count>
      <attachid>103568</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-08-10 19:04:57 -0700</bug_when>
    <thetext>Comment on attachment 103568
Renamed enum values

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

&gt; Source/WebCore/ChangeLog:34
&gt; +        with shouldEmit set false first to compute the highest node to be serialized. The second call to

Nit: Use enum name.

&gt; Source/WebCore/ChangeLog:37
&gt; +        Outputs string only if shouldEmit is true.

Nit: Ditto.

&gt; Source/WebCore/editing/markup.cpp:221
&gt; +    bool parentIsTextarea = text-&gt;parentElement() &amp;&amp; text-&gt;parentElement()-&gt;tagQName() == textareaTag;
&gt; +    bool wrappingSpan = shouldApplyWrappingStyle(text) &amp;&amp; !parentIsTextarea;

FWIW, the usage of const bool for local variables seems kind of arbitrary.  I don&apos;t think there&apos;s a style guide rule one way or another (and I don&apos;t have a strong preference, I find them not that useful but not that noisy either), but it would be nice if we were at least consistent within a file.  E.g., you could make these const.

&gt; Source/WebCore/editing/markup.cpp:291
&gt; +    bool shouldAnnotateOrForceInline = element-&gt;isHTMLElement() &amp;&amp; (shouldAnnotate() || addDisplayInline);
&gt; +    bool shouldOverrideStyleAttr = shouldAnnotateOrForceInline || shouldApplyWrappingStyle(element);

...these could be const too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449602</commentid>
    <comment_count>43</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-10 22:45:12 -0700</bug_when>
    <thetext>Thanks for the review!  I&apos;m very excited to land this patch.

(In reply to comment #42)
&gt; &gt; Source/WebCore/ChangeLog:34
&gt; &gt; +        with shouldEmit set false first to compute the highest node to be serialized. The second call to
&gt; 
&gt; Nit: Use enum name.

Fixed.

&gt; &gt; Source/WebCore/ChangeLog:37
&gt; &gt; +        Outputs string only if shouldEmit is true.
&gt; 
&gt; Nit: Ditto.

Fixed.

&gt; &gt; Source/WebCore/editing/markup.cpp:221
&gt; &gt; +    bool parentIsTextarea = text-&gt;parentElement() &amp;&amp; text-&gt;parentElement()-&gt;tagQName() == textareaTag;
&gt; &gt; +    bool wrappingSpan = shouldApplyWrappingStyle(text) &amp;&amp; !parentIsTextarea;
&gt; 
&gt; FWIW, the usage of const bool for local variables seems kind of arbitrary.  I don&apos;t think there&apos;s a style guide rule one way or another (and I don&apos;t have a strong preference, I find them not that useful but not that noisy either), but it would be nice if we were at least consistent within a file.  E.g., you could make these const.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449613</commentid>
    <comment_count>44</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2011-08-10 23:29:27 -0700</bug_when>
    <thetext>Committed r92823: &lt;http://trac.webkit.org/changeset/92823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527800</commentid>
    <comment_count>45</comment_count>
    <who name="">mitz</who>
    <bug_when>2011-12-28 16:45:10 -0800</bug_when>
    <thetext>(In reply to comment #44)
&gt; Committed r92823: &lt;http://trac.webkit.org/changeset/92823&gt;

This change caused bug 75330.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>94727</attachid>
            <date>2011-05-24 19:22:32 -0700</date>
            <delta_ts>2011-05-26 15:59:38 -0700</delta_ts>
            <desc>work in progress</desc>
            <filename>bug-34564-20110524192230.patch</filename>
            <type>text/plain</type>
            <size>12735</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODcyMTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4YWQ2MGQ1MWE4ZTdiMGNj
OGNlZjE1MTc5MzFhYThmYjQ3NWE0YWIxLi4yODgxYjM4Y2NkOGFlNWM3MTJmZDQ5MWU4ZGM1Y2Jm
ZmQzNzZjZjNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTEtMDUtMjQgIFJ5b3N1
a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgQ29weWluZyBjYW4gcmVzdWx0IGluIDxzcGFuPiB0YWdzIGFy
b3VuZCBibG9jayBlbGVtZW50cyBvbiB0aGUgY2xpcGJvYXJkLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ1NjQKKworICAgICAgICBObyBuZXcgdGVz
dHMuIChPT1BTISkKKworICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcik6
CisgICAgICAgIChXZWJDb3JlOjppc1BhcnRpYWxseVNlbGVjdGVkRW1wdHlCbG9jayk6CisgICAg
ICAgIChXZWJDb3JlOjpzaG91bGRCZVNraXBwZWRGb3JTdHlsZWRTZXJpYWxpemF0aW9uKToKKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2Rlcyk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJhdmVyc2VOb2Rl
c0ZvclNlcmlhbGl6YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFya3VwKToKKwog
MjAxMS0wNS0yNCAgSmFtZXMgU2ltb25zZW4gIDxzaW1vbmphbUBjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAK
aW5kZXggNmM5NDJlMWQ1ZDk0NmNkOTQ0ODZiMTNjOTE5ZmVhOTYyMDAwMzRhZi4uOGU1M2U3Mzk4
YjAxOGMyNTIzNGE5NGZjN2Y0YzQwYTBkMzAwZWU5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3Vw
LmNwcApAQCAtMTIwLDEyICsxMjAsNyBAQCBjbGFzcyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvciA6
IHB1YmxpYyBNYXJrdXBBY2N1bXVsYXRvciB7CiBwdWJsaWM6CiAgICAgZW51bSBSYW5nZUZ1bGx5
U2VsZWN0c05vZGUgeyBEb2VzRnVsbHlTZWxlY3ROb2RlLCBEb2VzTm90RnVsbHlTZWxlY3ROb2Rl
IH07CiAKLSAgICBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2Rlcywg
RUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ug
c2hvdWxkQW5ub3RhdGUsIGNvbnN0IFJhbmdlKiByYW5nZSkKLSAgICA6IE1hcmt1cEFjY3VtdWxh
dG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgcmFuZ2UpCi0gICAgLCBtX3Nob3VsZEFubm90
YXRlKHNob3VsZEFubm90YXRlKQotICAgIHsKLSAgICB9Ci0KKyAgICBTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcywgRUFubm90YXRlRm9y
SW50ZXJjaGFuZ2UsIGNvbnN0IFJhbmdlKiwgTm9kZSogaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXpl
ZCA9IDApOwogICAgIE5vZGUqIHNlcmlhbGl6ZU5vZGVzKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSog
cGFzdEVuZCk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFN0cmluZyhjb25zdCBTdHJpbmcmIHMp
IHsgcmV0dXJuIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHJpbmcocyk7IH0KICAgICB2b2lk
IHdyYXBXaXRoTm9kZShOb2RlKiwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0gZmFsc2Us
IFJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9IERvZXNGdWxseVNlbGVjdE5vZGUpOwpAQCAtMTMzLDYg
KzEyOCw4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGFrZVJlc3VsdHMoKTsKIAogcHJpdmF0ZToK
KyAgICBOb2RlKiB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBzdGFydE5vZGUs
IE5vZGUqIHBhc3RFbmQsIGJvb2wgc2hvdWxkRW1pdCk7CisKICAgICB2aXJ0dWFsIHZvaWQgYXBw
ZW5kVGV4dChWZWN0b3I8VUNoYXI+JiBvdXQsIFRleHQqKTsKICAgICBTdHJpbmcgcmVuZGVyZWRU
ZXh0KGNvbnN0IE5vZGUqLCBjb25zdCBSYW5nZSopOwogICAgIFN0cmluZyBzdHJpbmdWYWx1ZUZv
clJhbmdlKGNvbnN0IE5vZGUqLCBjb25zdCBSYW5nZSopOwpAQCAtMTQ0LDggKzE0MSwyMCBAQCBw
cml2YXRlOgogCiAgICAgVmVjdG9yPFN0cmluZz4gbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cDsK
ICAgICBjb25zdCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBtX3Nob3VsZEFubm90YXRlOworICAg
IE5vZGUqIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZDsKKworcHVibGljOgorICAgIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IG1fd3JhcHBpbmdTdHlsZTsKIH07CiAKK1N0eWxlZE1hcmt1cEFjY3Vt
dWxhdG9yOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFi
c29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hv
dWxkQW5ub3RhdGUsCisgICAgY29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBoaWdoZXN0Tm9kZVRv
QmVTZXJpYWxpemVkKQorICAgIDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29s
dmVVUkxzLCByYW5nZSkKKyAgICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5ub3RhdGUpCisg
ICAgLCBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQoaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXpl
ZCkKK3sKK30KKwogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhOb2RlKE5v
ZGUqIG5vZGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgUmFuZ2VGdWxseVNlbGVjdHNO
b2RlIHJhbmdlRnVsbHlTZWxlY3RzTm9kZSkKIHsKICAgICBWZWN0b3I8VUNoYXI+IG1hcmt1cDsK
QEAgLTMyMCw4ICszMjksMzkgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6cmVtb3Zl
RXh0ZXJpb3JTdHlsZXMoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHMKICAgICBzdHlsZS0+
cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCk7CiB9CiAKK3N0YXRpYyBpbmxpbmUgYm9v
bCBpc1BhcnRpYWxseVNlbGVjdGVkRW1wdHlCbG9jayhOb2RlKiBjdXJlbnROb2RlLCBOb2RlKiBu
ZXh0Tm9kZSwgTm9kZSogcGFzdEVuZCkKK3sKKyAgICByZXR1cm4gaXNCbG9jayhjdXJlbnROb2Rl
KSAmJiBjYW5IYXZlQ2hpbGRyZW5Gb3JFZGl0aW5nKGN1cmVudE5vZGUpICYmIG5leHROb2RlID09
IHBhc3RFbmQ7Cit9CisKK3N0YXRpYyBpbmxpbmUgYm9vbCBzaG91bGRCZVNraXBwZWRGb3JTdHls
ZWRTZXJpYWxpemF0aW9uKE5vZGUqIG5vZGUpCit7CisgICAgcmV0dXJuICFub2RlLT5yZW5kZXJl
cigpICYmICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUo
bm9kZSksIHNlbGVjdFRhZyk7Cit9CisKIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpz
ZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQpCiB7CisgICAgaWYg
KCFtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpIHsKKyAgICAgICAgTm9kZSogbGFzdENsb3Nl
ZCA9IHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKHN0YXJ0Tm9kZSwgcGFzdEVuZCwgZmFs
c2UpOworICAgICAgICBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSBsYXN0Q2xvc2VkOwor
ICAgIH0KKworICAgIE5vZGUqIHBhcmVudE9mSGlnaGVzdE5vZGUgPSBtX2hpZ2hlc3ROb2RlVG9C
ZVNlcmlhbGl6ZWQgPyBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQtPnBhcmVudE5vZGUoKSA6
IDA7CisgICAgaWYgKHBhcmVudE9mSGlnaGVzdE5vZGUpIHsKKyAgICAgICAgbV93cmFwcGluZ1N0
eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocGFyZW50T2ZIaWdoZXN0Tm9kZSwgRWRpdGluZ1N0
eWxlOjpJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk7Cisg
ICAgCisgICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJpYnV0ZSBz
aG91bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwKKyAgICAgICAgLy8g
dG8gaGVscCB1cyBkaWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBmcm9tIG9uZXMgdGhhdCB0aGUg
dXNlciBoYXMgYXBwbGllZC4KKyAgICAgICAgLy8gVGhpcyBoZWxwcyB1cyBnZXQgdGhlIGNvbG9y
IG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQuCisgICAgICAgIG1fd3Jh
cHBpbmdTdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdOb2RlT2ZUeXBlKGZp
cnN0UG9zaXRpb25Jbk5vZGUocGFyZW50T2ZIaWdoZXN0Tm9kZSksIGlzTWFpbEJsb2NrcXVvdGUs
IENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7CisgICAgfQorCisKKyAgICByZXR1cm4gdHJhdmVy
c2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oc3RhcnROb2RlLCBwYXN0RW5kLCB0cnVlKTsKK30KKwor
Tm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0
aW9uKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCwgYm9vbCBzaG91bGRFbWl0KQorewog
ICAgIFZlY3RvcjxOb2RlKj4gYW5jZXN0b3JzVG9DbG9zZTsKICAgICBOb2RlKiBuZXh0OwogICAg
IE5vZGUqIGxhc3RDbG9zZWQgPSAwOwpAQCAtMzMzLDYwICszNzMsNjMgQEAgTm9kZSogU3R5bGVk
TWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSog
cGFzdEVuZCkKICAgICAgICAgQVNTRVJUKG4pOwogICAgICAgICBpZiAoIW4pCiAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgCisKICAgICAgICAgbmV4dCA9IG4tPnRyYXZlcnNlTmV4dE5vZGUo
KTsKLSAgICAgICAgYm9vbCBvcGVuZWRUYWcgPSBmYWxzZTsKIAotICAgICAgICBpZiAoaXNCbG9j
ayhuKSAmJiBjYW5IYXZlQ2hpbGRyZW5Gb3JFZGl0aW5nKG4pICYmIG5leHQgPT0gcGFzdEVuZCkK
LSAgICAgICAgICAgIC8vIERvbid0IHdyaXRlIG91dCBlbXB0eSBibG9jayBjb250YWluZXJzIHRo
YXQgYXJlbid0IGZ1bGx5IHNlbGVjdGVkLgorICAgICAgICBpZiAoaXNQYXJ0aWFsbHlTZWxlY3Rl
ZEVtcHR5QmxvY2sobiwgbmV4dCwgcGFzdEVuZCkpCiAgICAgICAgICAgICBjb250aW51ZTsKIAot
ICAgICAgICBpZiAoIW4tPnJlbmRlcmVyKCkgJiYgIWVuY2xvc2luZ05vZGVXaXRoVGFnKGZpcnN0
UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShuKSwgc2VsZWN0VGFnKSkgeworICAgICAgICBpZiAoc2hv
dWxkQmVTa2lwcGVkRm9yU3R5bGVkU2VyaWFsaXphdGlvbihuKSkgewogICAgICAgICAgICAgbmV4
dCA9IG4tPnRyYXZlcnNlTmV4dFNpYmxpbmcoKTsKICAgICAgICAgICAgIC8vIERvbid0IHNraXAg
b3ZlciBwYXN0RW5kLgogICAgICAgICAgICAgaWYgKHBhc3RFbmQgJiYgcGFzdEVuZC0+aXNEZXNj
ZW5kYW50T2YobikpCiAgICAgICAgICAgICAgICAgbmV4dCA9IHBhc3RFbmQ7CiAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIG1hcmt1cCBpZiB3ZSdy
ZSBub3Qgc2tpcHBpbmcgdGhlIGRlc2NlbmRhbnRzCi0gICAgICAgICAgICBhcHBlbmRTdGFydFRh
ZyhuKTsKKyAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgIGFwcGVu
ZFN0YXJ0VGFnKG4pOwogCi0gICAgICAgICAgICAvLyBJZiBub2RlIGhhcyBubyBjaGlsZHJlbiwg
Y2xvc2UgdGhlIHRhZyBub3cuCi0gICAgICAgICAgICBpZiAoIW4tPmNoaWxkTm9kZUNvdW50KCkp
IHsKLSAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWcobik7Ci0gICAgICAgICAgICAgICAgbGFz
dENsb3NlZCA9IG47Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIG9wZW5l
ZFRhZyA9IHRydWU7CisgICAgICAgICAgICBpZiAobi0+Zmlyc3RDaGlsZCgpKSB7CisgICAgICAg
ICAgICAgICAgLy8gRG9uJ3QgY2xvc2UgYW55IGFuY2VzdG9ycyBpZiB0aGUgY3VycmVudCBub2Rl
IGhhcyBjaGlsZHJlbi4KKyAgICAgICAgICAgICAgICBBU1NFUlQobmV4dCA9PSBuLT5maXJzdENo
aWxkKCkpOworICAgICAgICAgICAgICAgIEFTU0VSVChuZXh0ICE9IHBhc3RFbmQpOwogICAgICAg
ICAgICAgICAgIGFuY2VzdG9yc1RvQ2xvc2UuYXBwZW5kKG4pOworICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAg
ICAgICAgICAgICAgICBhcHBlbmRFbmRUYWcobik7CisgICAgICAgICAgICBsYXN0Q2xvc2VkID0g
bjsKICAgICAgICAgfQogCiAgICAgICAgIC8vIElmIHdlIGRpZG4ndCBpbnNlcnQgb3BlbiB0YWcg
YW5kIHRoZXJlJ3Mgbm8gbW9yZSBzaWJsaW5ncyBvciB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRoZSB0
cmF2ZXJzYWwsIHRha2UgY2FyZSBvZiBhbmNlc3RvcnMuCiAgICAgICAgIC8vIEZJWE1FOiBXaGF0
IGhhcHBlbnMgaWYgd2UganVzdCBpbnNlcnRlZCBvcGVuIHRhZyBhbmQgcmVhY2hlZCB0aGUgZW5k
PwotICAgICAgICBpZiAoIW9wZW5lZFRhZyAmJiAoIW4tPm5leHRTaWJsaW5nKCkgfHwgbmV4dCA9
PSBwYXN0RW5kKSkgeworICAgICAgICBpZiAoIW4tPm5leHRTaWJsaW5nKCkgfHwgbmV4dCA9PSBw
YXN0RW5kKSB7CiAgICAgICAgICAgICAvLyBDbG9zZSB1cCB0aGUgYW5jZXN0b3JzLgogICAgICAg
ICAgICAgd2hpbGUgKCFhbmNlc3RvcnNUb0Nsb3NlLmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
ICAgIE5vZGUqIGFuY2VzdG9yID0gYW5jZXN0b3JzVG9DbG9zZS5sYXN0KCk7CiAgICAgICAgICAg
ICAgICAgaWYgKG5leHQgIT0gcGFzdEVuZCAmJiBuZXh0LT5pc0Rlc2NlbmRhbnRPZihhbmNlc3Rv
cikpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIC8vIE5vdCBh
dCB0aGUgZW5kIG9mIHRoZSByYW5nZSwgY2xvc2UgYW5jZXN0b3JzIHVwIHRvIHNpYmxpbmcgb2Yg
bmV4dCBub2RlLgotICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhhbmNlc3Rvcik7CisgICAg
ICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEVu
ZFRhZyhhbmNlc3Rvcik7CiAgICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9IGFuY2VzdG9yOwog
ICAgICAgICAgICAgICAgIGFuY2VzdG9yc1RvQ2xvc2UucmVtb3ZlTGFzdCgpOwogICAgICAgICAg
ICAgfQorICAgICAgICB9CiAKLSAgICAgICAgICAgIC8vIFN1cnJvdW5kIHRoZSBjdXJyZW50bHkg
YWNjdW11bGF0ZWQgbWFya3VwIHdpdGggbWFya3VwIGZvciBhbmNlc3RvcnMgd2UgbmV2ZXIgb3Bl
bmVkIGFzIHdlIGxlYXZlIHRoZSBzdWJ0cmVlKHMpIHJvb3RlZCBhdCB0aG9zZSBhbmNlc3RvcnMu
Ci0gICAgICAgICAgICBDb250YWluZXJOb2RlKiBuZXh0UGFyZW50ID0gbmV4dCA/IG5leHQtPnBh
cmVudE5vZGUoKSA6IDA7Ci0gICAgICAgICAgICBpZiAobmV4dCAhPSBwYXN0RW5kICYmIG4gIT0g
bmV4dFBhcmVudCkgewotICAgICAgICAgICAgICAgIE5vZGUqIGxhc3RBbmNlc3RvckNsb3NlZE9y
U2VsZiA9IG4tPmlzRGVzY2VuZGFudE9mKGxhc3RDbG9zZWQpID8gbGFzdENsb3NlZCA6IG47Ci0g
ICAgICAgICAgICAgICAgZm9yIChDb250YWluZXJOb2RlKiBwYXJlbnQgPSBsYXN0QW5jZXN0b3JD
bG9zZWRPclNlbGYtPnBhcmVudE5vZGUoKTsgcGFyZW50ICYmIHBhcmVudCAhPSBuZXh0UGFyZW50
OyBwYXJlbnQgPSBwYXJlbnQtPnBhcmVudE5vZGUoKSkgewotICAgICAgICAgICAgICAgICAgICAv
LyBBbGwgYW5jZXN0b3JzIHRoYXQgYXJlbid0IGluIHRoZSBhbmNlc3RvcnNUb0Nsb3NlIGxpc3Qg
c2hvdWxkIGVpdGhlciBiZSBhKSB1bnJlbmRlcmVkOgotICAgICAgICAgICAgICAgICAgICBpZiAo
IXBhcmVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICAgICAgICAgICAgICAvLyBvciBiKSBhbmNlc3RvcnMgdGhhdCB3ZSBuZXZlciBlbmNv
dW50ZXJlZCBkdXJpbmcgYSBwcmUtb3JkZXIgdHJhdmVyc2FsIHN0YXJ0aW5nIGF0IHN0YXJ0Tm9k
ZToKLSAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNEZXNjZW5kYW50T2Yo
cGFyZW50KSk7CisgICAgICAgIENvbnRhaW5lck5vZGUqIG5leHRQYXJlbnQgPSBuZXh0ID8gbmV4
dC0+cGFyZW50Tm9kZSgpIDogMDsKKyAgICAgICAgaWYgKCFuLT5uZXh0U2libGluZygpICYmIG5l
eHQgIT0gcGFzdEVuZCAmJiBuICE9IG5leHRQYXJlbnQpIHsKKyAgICAgICAgICAgIE5vZGUqIGxh
c3RBbmNlc3RvckNsb3NlZE9yU2VsZiA9IG4tPmlzRGVzY2VuZGFudE9mKGxhc3RDbG9zZWQpID8g
bGFzdENsb3NlZCA6IG47CisgICAgICAgICAgICBmb3IgKENvbnRhaW5lck5vZGUqIHBhcmVudCA9
IGxhc3RBbmNlc3RvckNsb3NlZE9yU2VsZi0+cGFyZW50Tm9kZSgpOyBwYXJlbnQgJiYgcGFyZW50
ICE9IG5leHRQYXJlbnQ7IHBhcmVudCA9IHBhcmVudC0+cGFyZW50Tm9kZSgpKSB7CisgICAgICAg
ICAgICAgICAgLy8gQWxsIGFuY2VzdG9ycyB0aGF0IGFyZW4ndCBpbiB0aGUgYW5jZXN0b3JzVG9D
bG9zZSBsaXN0IHNob3VsZCBlaXRoZXIgYmUgYSkgdW5yZW5kZXJlZDoKKyAgICAgICAgICAgICAg
ICBpZiAoIXBhcmVudC0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7
CisgICAgICAgICAgICAgICAgLy8gb3IgYikgYW5jZXN0b3JzIHRoYXQgd2UgbmV2ZXIgZW5jb3Vu
dGVyZWQgZHVyaW5nIGEgcHJlLW9yZGVyIHRyYXZlcnNhbCBzdGFydGluZyBhdCBzdGFydE5vZGU6
CisgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNEZXNjZW5kYW50T2YocGFyZW50
KSk7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCiAgICAgICAgICAgICAgICAgICAg
IHdyYXBXaXRoTm9kZShwYXJlbnQpOwotICAgICAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0g
cGFyZW50OwotICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0g
cGFyZW50OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNTU4LDcgKzYwMSwx
MyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgVmVjdG9yPE5vZGUq
Piogbm9kZXMsIEVBbm5vdGF0ZUZvckludGVyYwogCiAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11bGF0
b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCBzaG91bGRBbm5vdGF0ZSwg
dXBkYXRlZFJhbmdlLmdldCgpKTsKKyAgICBOb2RlKiBib2R5ID0gZW5jbG9zaW5nTm9kZVdpdGhU
YWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNlc3RvciksIGJvZHlUYWcpOworICAgIE5v
ZGUqIGZ1bGx5U2VsZWN0ZWRSb290ID0gMDsKKyAgICAvLyBGSVhNRTogRG8gdGhpcyBmb3IgYWxs
IGZ1bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90IGp1c3QgdGhlIGJvZHkuCisgICAgaWYgKGJvZHkg
JiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRz
T2ZOb2RlKGJvZHkpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHJhbmdlKSkKKyAgICAgICAg
ZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5OworICAgIE5vZGUqIHNwZWNpYWxDb21tb25BbmNlc3Rv
ciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCksIGZ1bGx5
U2VsZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0ZSk7CisgICAgU3R5bGVkTWFya3VwQWNjdW11bGF0
b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCBzaG91bGRBbm5vdGF0ZSwg
dXBkYXRlZFJhbmdlLmdldCgpLCBzcGVjaWFsQ29tbW9uQW5jZXN0b3IpOwogICAgIE5vZGUqIHBh
c3RFbmQgPSB1cGRhdGVkUmFuZ2UtPnBhc3RMYXN0Tm9kZSgpOwogCiAgICAgTm9kZSogc3RhcnRO
b2RlID0gdXBkYXRlZFJhbmdlLT5maXJzdE5vZGUoKTsKQEAgLTU4NCwxNCArNjMzLDYgQEAgU3Ry
aW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVz
LCBFQW5ub3RhdGVGb3JJbnRlcmMKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogCi0gICAg
Tm9kZSogYm9keSA9IGVuY2xvc2luZ05vZGVXaXRoVGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUoY29t
bW9uQW5jZXN0b3IpLCBib2R5VGFnKTsKLSAgICBOb2RlKiBmdWxseVNlbGVjdGVkUm9vdCA9IDA7
Ci0gICAgLy8gRklYTUU6IERvIHRoaXMgZm9yIGFsbCBmdWxseSBzZWxlY3RlZCBibG9ja3MsIG5v
dCBqdXN0IHRoZSBib2R5LgotICAgIGlmIChib2R5ICYmIGFyZVJhbmdlc0VxdWFsKFZpc2libGVT
ZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShib2R5KS50b05vcm1hbGl6ZWRS
YW5nZSgpLmdldCgpLCByYW5nZSkpCi0gICAgICAgIGZ1bGx5U2VsZWN0ZWRSb290ID0gYm9keTsK
LQotICAgIE5vZGUqIHNwZWNpYWxDb21tb25BbmNlc3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3Jh
cE1hcmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCksIGZ1bGx5U2VsZWN0ZWRSb290LCBzaG91bGRBbm5v
dGF0ZSk7Ci0KICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9k
ZXMoc3RhcnROb2RlLCBwYXN0RW5kKTsKIAogICAgIGlmIChzcGVjaWFsQ29tbW9uQW5jZXN0b3Ig
JiYgbGFzdENsb3NlZCkgewpAQCAtNjIyLDI3ICs2NjMsMTYgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1
cChjb25zdCBSYW5nZSogcmFuZ2UsIFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQW5ub3RhdGVGb3JJ
bnRlcmMKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChub2RlcykKICAgICAgICAgICAg
ICAgICBub2Rlcy0+YXBwZW5kKGFuY2VzdG9yKTsKLSAgICAgICAgICAgIAorCiAgICAgICAgICAg
ICBsYXN0Q2xvc2VkID0gYW5jZXN0b3I7Ci0gICAgICAgICAgICAKKwogICAgICAgICAgICAgaWYg
KGFuY2VzdG9yID09IHNwZWNpYWxDb21tb25BbmNlc3RvcikKICAgICAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIEFkZCBhIHdyYXBwZXIgc3BhbiB3aXRoIHRo
ZSBzdHlsZXMgdGhhdCBhbGwgb2YgdGhlIG5vZGVzIGluIHRoZSBtYXJrdXAgaW5oZXJpdC4KLSAg
ICBDb250YWluZXJOb2RlKiBwYXJlbnRPZkxhc3RDbG9zZWQgPSBsYXN0Q2xvc2VkID8gbGFzdENs
b3NlZC0+cGFyZW50Tm9kZSgpIDogMDsKLSAgICBpZiAocGFyZW50T2ZMYXN0Q2xvc2VkICYmIHBh
cmVudE9mTGFzdENsb3NlZC0+cmVuZGVyZXIoKSkgewotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0
eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBhcmVudE9mTGFzdENsb3NlZCwgRWRp
dGluZ1N0eWxlOjpJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5kQ29sb3JJbkVmZmVj
dCk7Ci0KLSAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRl
IHNob3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLCB0byBoZWxwCi0g
ICAgICAgIC8vIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRo
ZSB1c2VyIGhhcyBhcHBsaWVkLiAgVGhpcyBoZWxwcyB1cwotICAgICAgICAvLyBnZXQgdGhlIGNv
bG9yIG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQuCi0gICAgICAgIHN0
eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3Np
dGlvbkluTm9kZShwYXJlbnRPZkxhc3RDbG9zZWQpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9z
c0VkaXRpbmdCb3VuZGFyeSkpOwotCi0gICAgICAgIGlmICghc3R5bGUtPmlzRW1wdHkoKSkKLSAg
ICAgICAgICAgIGFjY3VtdWxhdG9yLndyYXBXaXRoU3R5bGVOb2RlKHN0eWxlLT5zdHlsZSgpLCBk
b2N1bWVudCk7Ci0gICAgfQorICAgIGlmIChhY2N1bXVsYXRvci5tX3dyYXBwaW5nU3R5bGUgJiYg
IWFjY3VtdWxhdG9yLm1fd3JhcHBpbmdTdHlsZS0+aXNFbXB0eSgpKQorICAgICAgICBhY2N1bXVs
YXRvci53cmFwV2l0aFN0eWxlTm9kZShhY2N1bXVsYXRvci5tX3dyYXBwaW5nU3R5bGUtPnN0eWxl
KCksIGRvY3VtZW50KTsKIAogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJjaGFuZ2UgbmV3bGluZSBz
aG91bGQgYmUgcGxhY2VkIGluIHRoZSBibG9jayB0aGF0IGl0J3MgaW4sIG5vdCBhZnRlciBhbGwg
b2YgdGhlIGNvbnRlbnQsIHVuY29uZGl0aW9uYWxseS4KICAgICBpZiAoc2hvdWxkQW5ub3RhdGUg
PT0gQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSAmJiBuZWVkSW50ZXJjaGFuZ2VOZXdsaW5lQWZ0ZXIo
dmlzaWJsZUVuZC5wcmV2aW91cygpKSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95063</attachid>
            <date>2011-05-26 15:59:38 -0700</date>
            <delta_ts>2011-05-27 14:12:02 -0700</delta_ts>
            <desc>work in progress 2</desc>
            <filename>wip34564</filename>
            <type>text/plain</type>
            <size>90828</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvaW50ZXJj
aGFuZ2UtbmV3bGluZS0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL2ludGVyY2hhbmdlLW5ld2xpbmUtMi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDg3NDAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvcGFzdGVib2FyZC9pbnRlcmNoYW5nZS1uZXdsaW5lLTItZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC01LDYgKzUsNyBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERP
TVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgpAQCAtMjAsMTAgKzIx
LDggQEAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggNDg4OiAiYmxvY2tzLCB3
aGljaCBicmVha3MgdGhlIG9sZCBjb2RlIGluIHBhc3RlIHRoYXQgaGFuZGxlZCBpbnRlcmNoYW5n
ZSBuZXdsaW5lcy4iCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA3ODR4
NTQKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKLSAgICAg
ICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1eDE4Ci0gICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA1OiAiZiIKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDUsMCkgc2l6ZSAyMHgxOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDUsMCkgd2lk
dGggMjA6ICJiYXIiCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
MjV4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI1OiAiZmJhciIKICAg
ICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTgpIHNpemUgNzg0eDE4CiAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjJ4MTgKICAgICAgICAgICAg
IHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIyOiAiYmF6IgpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1saW5lLWVuZGluZ3MtMDA5LWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLWxpbmUtZW5kaW5ncy0wMDktZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4
NzQwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtbGluZS1lbmRpbmdzLTAwOS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDcg
KzEzLDcgQEAKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hv
dWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSA4IG9mICN0ZXh0ID4gRElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQKIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRE
T01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgRElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gRElWID4g
RElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+
IERJViA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBv
ZiBESVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+
IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSA4IG9mICN0ZXh0ID4gRElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gOCBvZiAjdGV4dCA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCkBAIC01MCw4ICs1MCw2IEBACiAgICAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggNzg6ICJsaW5lIG9uZSIKICAgICAgICAgICAgICAgUmVuZGVyQlIg
e0JSfSBhdCAoNzgsMjIpIHNpemUgMHgwCiAgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwyOCkgc2l6ZSA3ODB4MjgKLSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0
ICgwLDApIHNpemUgN3gyOAotICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRo
IDc6ICJsIgotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDcsMCkgc2l6ZSA3
MngyOAotICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICg3LDApIHdpZHRoIDcyOiAiaW5lIHR3
byIKLWNhcmV0OiBwb3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAyIHtESVZ9
IG9mIGNoaWxkIDEge0RJVn0gb2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9mIGJv
ZHkKKyAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzl4MjgK
KyAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3OTogImxpbmUgdHdvIgor
Y2FyZXQ6IHBvc2l0aW9uIDggb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0RJVn0gb2Yg
Y2hpbGQgMSB7RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9mIGJvZHkKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtYWZ0ZXItZGVsZXRlLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9w
YXN0ZWJvYXJkL21lcmdlLWFmdGVyLWRlbGV0ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3NDAz
KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1h
ZnRlci1kZWxldGUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNSwxMCArMTUsOCBA
QAogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAogICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDQsMCkgc2l6ZSA3NzZ4NTQgW2JvcmRlcjogKDFweCBzb2xpZCAj
MDAwMEZGKV0KICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDUsNSkgc2l6ZSA3NjZ4MjAg
W2JvcmRlcjogKDFweCBzb2xpZCAjMDAwMEZGKV0KLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDEsMSkgc2l6ZSA1eDE4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxKSB3aWR0
aCA1OiAiZiIKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDYsMSkgc2l6ZSAyMXgx
OAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDYsMSkgd2lkdGggMjE6ICJmb28iCisgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDEpIHNpemUgMjZ4MTgKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgxLDEpIHdpZHRoIDI2OiAiZmZvbyIKICAgICAgICAgUmVuZGVyQmxvY2sgKGFu
b255bW91cykgYXQgKDEsMjkpIHNpemUgNzc0eDAKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDUsMjkpIHNpemUgNzY2eDIwIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDBGRildCiAgICAg
ICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMSwxKSBzaXplIDB4MTgKSW5kZXg6IExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLWJvcmRlcnMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bh
c3RlYm9hcmQvbWVyZ2UtZW5kLWJvcmRlcnMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQwMykK
KysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5k
LWJvcmRlcnMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04LDcgKzgsNyBAQAogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRE
T01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byA0IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDQgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byA0IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxl
Y3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gOSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDkg
b2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVj
dGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdE
aWRDaGFuZ2VOb3RpZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMApAQCAtMzQs
OCArMzQsNiBAQAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMzIsMCkgc2l6ZSA2
M3gxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDMyLDApIHdpZHRoIDYzOiAicGFyYWdyYXBo
IgogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxOCkgc2l6ZSA3ODR4MjAgW2JvcmRl
cjogKDFweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDEsMSkgc2l6ZSAyOHgxOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGggMjg6
ICJUaGlzIgotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjksMSkgc2l6ZSAyNzF4
MTgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyOSwxKSB3aWR0aCAyNzE6ICIgdGV4dCBzaG91
bGQgYmUgc3Vycm91bmRlZCBieSBhIHJlZCBib3JkZXIuIgotY2FyZXQ6IHBvc2l0aW9uIDQgb2Yg
Y2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hpbGQgMyB7RElWfSBvZiBib2R5
CisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDEpIHNpemUgMjk5eDE4CisgICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxKSB3aWR0aCAyOTk6ICJUaGlzIHRleHQgc2hvdWxkIGJl
IHN1cnJvdW5kZWQgYnkgYSByZWQgYm9yZGVyLiIKK2NhcmV0OiBwb3NpdGlvbiA5IG9mIGNoaWxk
IDEgeyN0ZXh0fSBvZiBjaGlsZCAzIHtESVZ9IG9mIGJvZHkKSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMDgtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtdGV4dC0wMDgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQwMykKKysrIExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMDgtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMDIsMTIgKzEwMiwxNCBAQAogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byAyMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAyMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvIDIwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5p
dHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVE
SVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2Vs
ZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDM3IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMjAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMjAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAyMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxF
R0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAyMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDIwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rp
b246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDIwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMjAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMjAgb2YgI3RleHQgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAyMCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyMCBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDQ1IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDQ1IG9mICN0ZXh0ID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNDUgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGls
bFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIGxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAogICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYw
MApAQCAtMTE5LDE5ICsxMjEsMTMgQEAKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSAzNTF4MjgKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDM1
MTogIk9taXR0ZWQsIGFsbCB0aGUgdm95YWdlIG9mIHRoZWlyIGxpZmUsIgogICAgICAgICBSZW5k
ZXJCbG9jayB7RElWfSBhdCAoMTQsNDIpIHNpemUgNzU2eDU2IFtib3JkZXI6ICgycHggc29saWQg
I0ZGMDAwMCldCi0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxNCwxNCkgc2l6ZSAx
MTR4MjgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxNCwxNCkgd2lkdGggMTE0OiAiSXMgYm91
bmQgaW4gIgotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTI4LDE0KSBzaXplIDI0
M3gyOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEyOCwxNCkgd2lkdGggMjQzOiAic2hhbGxv
d3MgYW5kIGluIG1pc2VyaWVzLiIKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0
LDE0KSBzaXplIDM1N3gyOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDE0LDE0KSB3aWR0aCAz
NTc6ICJJcyBib3VuZCBpbiBzaGFsbG93cyBhbmQgaW4gbWlzZXJpZXMuIgogICAgICAgICBSZW5k
ZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMTQsOTgpIHNpemUgNzU2eDI4Ci0gICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTk3eDI4Ci0gICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCAxOTc6ICJVcG9uIHN1Y2ggYSBmdWxsIHNlYSIKLSAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE5NywwKSBzaXplIDI0M3gyOAotICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDE5NywwKSB3aWR0aCAyNDM6ICJzaGFsbG93cyBhbmQgaW4gbWlzZXJpZXMuIgor
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDQ0MHgyOAorICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDQwOiAiVXBvbiBzdWNoIGEgZnVsbCBzZWFz
aGFsbG93cyBhbmQgaW4gbWlzZXJpZXMuIgogICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykg
YXQgKDAsMTQwKSBzaXplIDc4NHgwCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxNDAp
IHNpemUgNzg0eDU2IFtib3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCi0gICAgICAgIFJlbmRl
clRleHQgeyN0ZXh0fSBhdCAoMTQsMTQpIHNpemUgMTk3eDI4Ci0gICAgICAgICAgdGV4dCBydW4g
YXQgKDE0LDE0KSB3aWR0aCAxOTc6ICJVcG9uIHN1Y2ggYSBmdWxsIHNlYSIKLSAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgyMTEsMTQpIHNpemUgMTg1eDI4Ci0gICAgICAgICAgdGV4dCBy
dW4gYXQgKDIxMSwxNCkgd2lkdGggMTg1OiAiIGFyZSB3ZSBub3cgYWZsb2F0LCIKLWNhcmV0OiBw
b3NpdGlvbiAyMCBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMiB7RElWfSBvZiBib2R5Cisg
ICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTQsMTQpIHNpemUgMzgyeDI4CisgICAgICAg
ICAgdGV4dCBydW4gYXQgKDE0LDE0KSB3aWR0aCAzODI6ICJVcG9uIHN1Y2ggYSBmdWxsIHNlYSBh
cmUgd2Ugbm93IGFmbG9hdCwiCitjYXJldDogcG9zaXRpb24gNDUgb2YgY2hpbGQgMiB7I3RleHR9
IG9mIGNoaWxkIDEge0RJVn0gb2YgYm9keQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1hZnRlci1kZWxldGUtMi1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9t
ZXJnZS1hZnRlci1kZWxldGUtMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3NDAzKQorKysgTGF5
b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1hZnRlci1kZWxl
dGUtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI5LDEwICsyOSw4IEBACiAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDAsNTQpIHdpZHRoIDE1NDogImFmdGVyIHRoZSBwYXN0ZSBvcGVy
YXRpb24uIgogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDIsMTU4KSBzaXplIDc4MHg0OCBb
Ym9yZGVyOiAoMXB4IHNvbGlkICMwMDAwMDApXQogICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMywzKSBzaXplIDc3NHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRjAwMDApXQotICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwxKSBzaXplIDh4MTgKLSAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgxLDEpIHdpZHRoIDg6ICJiIgotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoOSwxKSBzaXplIDIxeDE4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoOSwxKSB3aWR0
aCAyMTogImZvbyIKKyAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMSkgc2l6ZSAy
OXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDEsMSkgd2lkdGggMjk6ICJiZm9vIgogICAg
ICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMSwyNSkgc2l6ZSA3Nzh4MAogICAgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMywyNSkgc2l6ZSA3NzR4MjAgW2JvcmRlcjogKDFweCBz
b2xpZCAjMDAwMDAwKV0KICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDEsMSkgc2l6
ZSAyMHgxOApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2Fy
ZC9tZXJnZS1lbmQtNS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtNS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDg3NDAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVi
b2FyZC9tZXJnZS1lbmQtNS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTksOCArOSwx
MCBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDM2IG9mICN0ZXh0
ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMzYgb2YgI3RleHQgPiBE
SVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFm
ZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxNDcg
b2YgI3RleHQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTQ3IG9mICN0ZXh0ID4g
UCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCkBAIC0yMiwxMSArMjQsNyBAQAogICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDc3OTogIlBhc3RpbmcgYSBwYXJhZ3JhcGggb3IgbGVzcyBpbnRvIGEgc2Vs
ZWN0aW9uIHRoYXQgc3BhbnMgbXVsdGlwbGUgYmxvY2tzIHNob3VsZCBpbnNlcnQgY29udGVudCBp
bnRvIHRoZSBibG9jayBjb250YWluaW5nIHRoZSBzdGFydCIKICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMCwxOCkgd2lkdGggOTk6ICJvZiB0aGUgc2VsZWN0aW9uLiIKICAgICAgIFJlbmRlckJsb2Nr
IHtESVZ9IGF0ICgwLDUyKSBzaXplIDc4NHgyMAotICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBh
dCAoMCwwKSBzaXplIDc4NHgyMCBbYm9yZGVyOiAoMXB4IHNvbGlkICNGRjAwMDApXQotICAgICAg
ICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMSwxKSBzaXplIDMyeDE4Ci0gICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMSwxKSB3aWR0aCAzMjogIlRoaXMgIgotICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMzMsMSkgc2l6ZSAyMzF4MTgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgz
MywxKSB3aWR0aCAyMzE6ICJ0ZXh0IHNob3VsZCBoYXZlIGEgcmVkIGJvcmRlciBhcm91bmQiCi0g
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyNjQsMSkgc2l6ZSAxNngxOAotICAgICAg
ICAgICAgdGV4dCBydW4gYXQgKDI2NCwxKSB3aWR0aCAxNjogIiBpdC4iCi1jYXJldDogcG9zaXRp
b24gMzYgb2YgY2hpbGQgMSB7I3RleHR9IG9mIGNoaWxkIDAge0RJVn0gb2YgY2hpbGQgMiB7RElW
fSBvZiBib2R5CisgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzg0eDIw
IFtib3JkZXI6ICgxcHggc29saWQgIzAwMDBGRildCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3Rl
eHR9IGF0ICgxLDEpIHNpemUgMjc5eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxKSB3
aWR0aCAyNzk6ICJUaGlzIHRleHQgc2hvdWxkIGhhdmUgYSByZWQgYm9yZGVyIGFyb3VuZCBpdC4i
CitjYXJldDogcG9zaXRpb24gMTQ3IG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtQfSBv
ZiBib2R5CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
L2VtYWNzLWN0cmwtay15LTAwMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9lbWFjcy1jdHJsLWsteS0wMDEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvZW1hY3MtY3RybC1rLXktMDAxLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtOCwxNCArOCwxOCBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91
bGREZWxldGVET01SYW5nZTpyYW5nZSBmcm9tIDggb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1M
ID4gI2RvY3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6
IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA4IG9mICN0ZXh0ID4gRElW
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMjEgb2YgI3RleHQgPiBESVYgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOCBvZiAj
dGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDggb2YgI3RleHQg
PiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlv
bkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRD
aGFuZ2VOb3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdl
OnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvIDEzIG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQK
K0VESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOnJhbmdlIGZyb20gOCBvZiAj
dGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDIxIG9mICN0ZXh0
ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hh
bmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGREZWxldGVET01SYW5nZTpy
YW5nZSBmcm9tIDggb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAwIG9mIERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA4IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gMjQgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOCBvZiAjdGV4dCA+IERJViA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDggb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVh
bSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHNob3VsZERlbGV0ZURPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAj
dGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDE2IG9mICN0ZXh0
ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKK0VESVRJTkcgREVMRUdBVEU6
IHNob3VsZERlbGV0ZURPTVJhbmdlOnJhbmdlIGZyb20gOCBvZiAjdGV4dCA+IERJViA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDI0IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnRUZXh0OiB0aHJlZQpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9pbnRlcmNoYW5nZS1uZXdsaW5lLTEt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0
aW5nL3Bhc3RlYm9hcmQvaW50ZXJjaGFuZ2UtbmV3bGluZS0xLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gODc0MDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
L2ludGVyY2hhbmdlLW5ld2xpbmUtMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE4
LDExICsxOCw5IEBACiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMzYpIHdpZHRoIDQ3NjogInNw
YW4sIHdoaWNoIGJyZWFrcyB0aGUgb2xkIGNvZGUgaW4gcGFzdGUgdGhhdCBoYW5kbGVkIGludGVy
Y2hhbmdlIG5ld2xpbmVzLiIKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDcwKSBzaXpl
IDc4NHg1NAogICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4
NHgxOAotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDh4MTgKLSAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDg6ICJ4IgotICAgICAgICAgIFJlbmRl
cklubGluZSB7U1BBTn0gYXQgKDAsMCkgc2l6ZSAyMXgxOAotICAgICAgICAgICAgUmVuZGVyVGV4
dCB7I3RleHR9IGF0ICg4LDApIHNpemUgMjF4MTgKLSAgICAgICAgICAgICAgdGV4dCBydW4gYXQg
KDgsMCkgd2lkdGggMjE6ICJmb28iCisgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgMjl4MTgKKyAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI5OiAi
eGZvbyIKKyAgICAgICAgICBSZW5kZXJJbmxpbmUge1NQQU59IGF0ICgwLDApIHNpemUgMHgxOAog
ICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTgKICAg
ICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOAogICAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjB4MTgKSW5kZXg6IExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbGluZS1lbmRpbmdzLTAw
OC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1saW5lLWVuZGluZ3MtMDA4LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gODc0MDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLWxpbmUtZW5kaW5ncy0wMDgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC0xMyw3ICsxMyw3IEBACiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdB
VEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdl
OnJhbmdlIGZyb20gOCBvZiAjdGV4dCA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6cmFuZ2UgZnJvbSA4IG9mICN0ZXh0ID4gRElWID4gRElWID4gRElWID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+IERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4gRElW
ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJ
ViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gOCBvZiAjdGV4dCA+
IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4g
RElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9t
IDggb2YgI3RleHQgPiBESVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byA4IG9mICN0ZXh0ID4gRElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
YWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFM
U0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0Rp
ZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBhdCAoMCwwKSBzaXpl
IDgwMHg2MDAKQEAgLTQ5LDggKzQ5LDYgQEAKICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNzg6ICJsaW5lIG9uZSIKICAgICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3Vz
KSBhdCAoMiwzMCkgc2l6ZSA3ODB4MAogICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgy
LDMwKSBzaXplIDc4MHgyOAotICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDAp
IHNpemUgN3gyOAotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3OiAibCIK
LSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNywwKSBzaXplIDcyeDI4Ci0gICAg
ICAgICAgICAgIHRleHQgcnVuIGF0ICg3LDApIHdpZHRoIDcyOiAiaW5lIHR3byIKLWNhcmV0OiBw
b3NpdGlvbiAxIG9mIGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAyIHtESVZ9IG9mIGNoaWxkIDEg
e0RJVn0gb2YgY2hpbGQgMyB7RElWfSBvZiBib2R5CisgICAgICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSA3OXgyOAorICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCww
KSB3aWR0aCA3OTogImxpbmUgdHdvIgorY2FyZXQ6IHBvc2l0aW9uIDggb2YgY2hpbGQgMCB7I3Rl
eHR9IG9mIGNoaWxkIDEge0RJVn0gb2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9m
IGJvZHkKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQv
bWVyZ2UtYWZ0ZXItZGVsZXRlLTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtYWZ0ZXItZGVsZXRlLTEt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtYWZ0ZXItZGVsZXRlLTEtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0yOSwxMCArMjksOCBAQAogICAgICAgICAgIHRleHQgcnVuIGF0ICgw
LDU0KSB3aWR0aCAxNTQ6ICJhZnRlciB0aGUgcGFzdGUgb3BlcmF0aW9uLiIKICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgyLDE1OCkgc2l6ZSA3ODB4NDggW2JvcmRlcjogKDFweCBzb2xpZCAj
MDAwMDAwKV0KICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDMsMykgc2l6ZSA3NzR4MjAg
W2JvcmRlcjogKDFweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDEsMSkgc2l6ZSA4eDE4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMSwxKSB3aWR0
aCA4OiAiYiIKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDksMSkgc2l6ZSAyMXgx
OAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDksMSkgd2lkdGggMjE6ICJmb28iCisgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDEpIHNpemUgMjl4MTgKKyAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgxLDEpIHdpZHRoIDI5OiAiYmZvbyIKICAgICAgICAgUmVuZGVyQmxvY2sge0RJ
Vn0gYXQgKDMsMjUpIHNpemUgNzc0eDIwIFtib3JkZXI6ICgxcHggc29saWQgIzAwMDAwMCldCiAg
ICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgxLDEpIHNpemUgMjB4MTgKICAgICAgICAg
ICAgIHRleHQgcnVuIGF0ICgxLDEpIHdpZHRoIDIwOiAiYmFyIgpJbmRleDogTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1b3RlLWludG8tYmxv
Y2txdW90ZS00LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWJsb2NrcXVvdGUtaW50by1ibG9ja3F1b3Rl
LTQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYmxvY2txdW90ZS1pbnRvLWJsb2NrcXVvdGUt
NC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTExLDEwICsxMSw4IEBACiAgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyMiwwKSBzaXplIDMzeDE4CiAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMjIsMCkgd2lkdGggMzM6ICJQYXN0ZSIKICAgICAgICAgICBSZW5kZXJCUiB7
QlJ9IGF0ICg1NSwxNCkgc2l6ZSAweDAKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDIyLDE4KSBzaXplIDMxeDE4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjIsMTgpIHdpZHRo
IDMxOiAiSGVyZSIKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDUzLDE4KSBzaXpl
IDI3eDE4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNTMsMTgpIHdpZHRoIDI3OiAiT25lIgor
ICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjIsMTgpIHNpemUgNTh4MTgKKyAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgyMiwxOCkgd2lkdGggNTg6ICJIZXJlT25lIgogICAgICAgICBS
ZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNikgc2l6ZSA3ODR4MTgKICAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAzMHgxOAogICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggMzA6ICJUd28iCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVuZC00LWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVu
ZC00LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc0MDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVuZC00LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTcsMTAgKzE3LDggQEAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzM2LDAp
IHdpZHRoIDIwOTogIllvdSBzaG91bGQgc2VlIHhmb29cXG5iYXJcXG5iYXp4LiIKICAgICAgIFJl
bmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDc4NHg1NAogICAgICAgICBSZW5kZXJCbG9j
ayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgxOAotICAgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMCwwKSBzaXplIDh4MTgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDAp
IHdpZHRoIDg6ICJ4IgotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoOCwwKSBzaXpl
IDIxeDE4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoOCwwKSB3aWR0aCAyMTogImZvbyIKKyAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyOXgxOAorICAgICAgICAg
ICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjk6ICJ4Zm9vIgogICAgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTgKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4
dH0gYXQgKDAsMCkgc2l6ZSAyMHgxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMjA6ICJiYXIiCkBAIC0yOSw0ICsyNyw0IEBACiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAo
MCwwKSB3aWR0aCAyMjogImJheiIKICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIy
LDApIHNpemUgOHgxOAogICAgICAgICAgICAgdGV4dCBydW4gYXQgKDIyLDApIHdpZHRoIDg6ICJ4
IgotY2FyZXQ6IHBvc2l0aW9uIDMgb2YgY2hpbGQgMyB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0g
b2YgYm9keQorY2FyZXQ6IHBvc2l0aW9uIDMgb2YgY2hpbGQgMiB7I3RleHR9IG9mIGNoaWxkIDIg
e0RJVn0gb2YgYm9keQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFz
dGVib2FyZC9tZXJnZS1lbmQtbGlzdC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtbGlzdC1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDg3NDAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtbGlzdC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTE0LDcgKzE0LDcgQEAKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSAzIG9mICN0ZXh0ID4gRElWID4gTEkgPiBVTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDMgb2YgI3RleHQgPiBESVYgPiBMSSA+IFVMID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gRElWID4gTEkg
PiBVTCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDcgb2YgI3RleHQgPiBESVYg
PiBMSSA+IFVMID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxl
Y3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3
RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTQ4
LDEzICs0OCw5IEBACiAgICAgICAgICAgUmVuZGVyTGlzdEl0ZW0ge0xJfSBhdCAoNDAsMCkgc2l6
ZSA3NDR4MzYKICAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDApIHNpemUgNzQ0
eDE4CiAgICAgICAgICAgICAgIFJlbmRlckxpc3RNYXJrZXIgYXQgKC0xNywwKSBzaXplIDd4MTg6
IGJ1bGxldAotICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAy
OHgxOAotICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDI4OiAiSXRlbSIK
LSAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyOCwwKSBzaXplIDIxeDE4Ci0g
ICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI4LDApIHdpZHRoIDIxOiAiZm9vIgorICAgICAg
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0OXgxOAorICAgICAgICAg
ICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDQ5OiAiSXRlbWZvbyIKICAgICAgICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE4KSBzaXplIDc0NHgxOAotICAgICAgICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAyMHgxOAotICAgICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDIwOiAiYmFyIgotICAgICAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDIwLDApIHNpemUgMTJ4MTgKLSAgICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoMjAsMCkgd2lkdGggMTI6ICIgMSIKLWNhcmV0OiBwb3NpdGlvbiAzIG9mIGNoaWxkIDAgeyN0
ZXh0fSBvZiBjaGlsZCAxIHtESVZ9IG9mIGNoaWxkIDAge0xJfSBvZiBjaGlsZCAwIHtVTH0gb2Yg
Y2hpbGQgMTAge0RJVn0gb2YgYm9keQorICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAzMngxOAorICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDMyOiAiYmFyIDEiCitjYXJldDogcG9zaXRpb24gNyBvZiBjaGlsZCAwIHsjdGV4dH0gb2Yg
Y2hpbGQgMCB7RElWfSBvZiBjaGlsZCAwIHtMSX0gb2YgY2hpbGQgMCB7VUx9IG9mIGNoaWxkIDEw
IHtESVZ9IG9mIGJvZHkKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bh
c3RlYm9hcmQvODE0NS0zLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkLzgxNDUtMy1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDg3NDAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2Fy
ZC84MTQ1LTMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yMCwxMCArMjAsOCBAQAog
ICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDM2KSB3aWR0aCA1MDogInRoZSBlbmQuIgogICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNzApIHNpemUgNzg0eDU2IFtib3JkZXI6ICgxcHggc29s
aWQgIzAwMDAwMCldCiAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgxLDEpIHNpemUgNzgy
eDE4Ci0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNXgxOAotICAg
ICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTogImYiCi0gICAgICAgICAgUmVuZGVy
VGV4dCB7I3RleHR9IGF0ICg1LDApIHNpemUgMjB4MTgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0
ICg1LDApIHdpZHRoIDIwOiAiYmFyIgorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAo
MCwwKSBzaXplIDI1eDE4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyNTog
ImZiYXIiCiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMpIGF0ICgxLDE5KSBzaXplIDc4
MngxOAogICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDIyeDE4CiAg
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMjogImJheiIKSW5kZXg6IExheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtbGluZS1lbmRpbmdz
LTAwNy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1saW5lLWVuZGluZ3MtMDA3LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gODc0MDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLWxpbmUtZW5kaW5ncy0wMDctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0xMyw3ICsxMyw3IEBACiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVM
RUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJh
bmdlOnJhbmdlIGZyb20gOSBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6cmFuZ2UgZnJvbSAxIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDEgb2YgI3RleHQgPiBESVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViA+IERJViA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBESVYgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdl
U2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOSBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDkgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGls
bFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIGxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMApAQCAtNDksOCArNDksNiBAQAogICAgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3ODogImxpbmUgb25lIgogICAgICAgICAgICAgUmVuZGVy
QlIge0JSfSBhdCAoNzgsMjIpIHNpemUgMHgwCiAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0g
YXQgKDIsMzApIHNpemUgNzgweDI4Ci0gICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQg
KDAsMCkgc2l6ZSA3eDI4Ci0gICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDc6
ICJsIgotICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg3LDApIHNpemUgNzJ4MjgK
LSAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDcsMCkgd2lkdGggNzI6ICJpbmUgdHdvIgotY2Fy
ZXQ6IHBvc2l0aW9uIDEgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDIge0RJVn0gb2YgY2hp
bGQgMSB7RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9mIGJvZHkKKyAgICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXplIDc5eDI4CisgICAgICAgICAgICAgIHRleHQgcnVuIGF0
ICgwLDApIHdpZHRoIDc5OiAibGluZSB0d28iCitjYXJldDogcG9zaXRpb24gOSBvZiBjaGlsZCAw
IHsjdGV4dH0gb2YgY2hpbGQgMSB7RElWfSBvZiBjaGlsZCAzIHtESVZ9IG9mIGJvZHkKSW5kZXg6
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0w
MTAtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTAtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4
NzQwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtdGV4dC0wMTAtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MSw4ICs1MSw5IEBA
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hv
dWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSA3IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAj
dGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJ
bnNlcnRBY3Rpb25QYXN0ZWQKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVk
RE9NUmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9N
UmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gNyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVj
dGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMTQgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMTQgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byAxNCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCiAgIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBAIC02NCwxMSArNjUs
OSBAQAogICAgICAgICAgIHRleHQgcnVuIGF0ICgxNCwxNCkgd2lkdGggMzQ4OiAiVGhlcmUgaXMg
YSB0aWRlIGluIHRoZSBhZmZhaXJzIG9mIG1lbi4iCiAgICAgICAgIFJlbmRlckJSIHtCUn0gYXQg
KDM2MiwzNikgc2l6ZSAweDAKICAgICAgICAgUmVuZGVyQlIge0JSfSBhdCAoMTQsNDIpIHNpemUg
MHgyOAotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDE0LDcwKSBzaXplIDc0eDI4Ci0g
ICAgICAgICAgdGV4dCBydW4gYXQgKDE0LDcwKSB3aWR0aCA3NDogIm9mIG1lbi4iCi0gICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoODgsNzApIHNpemUgNzR4MjgKLSAgICAgICAgICB0ZXh0
IHJ1biBhdCAoODgsNzApIHdpZHRoIDc0OiAib2YgbWVuLiIKKyAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgxNCw3MCkgc2l6ZSAxNDh4MjgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQs
NzApIHdpZHRoIDE0ODogIm9mIG1lbi5vZiBtZW4uIgogICAgICAgUmVuZGVyQmxvY2sgKGFub255
bW91cykgYXQgKDAsMTEyKSBzaXplIDc4NHgwCiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMCwwKSBzaXplIDB4MAogICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAweDAKLWNhcmV0OiBwb3NpdGlvbiA3IG9mIGNoaWxkIDQgeyN0ZXh0fSBvZiBjaGlsZCAxIHtE
SVZ9IG9mIGJvZHkKK2NhcmV0OiBwb3NpdGlvbiAxNCBvZiBjaGlsZCAzIHsjdGV4dH0gb2YgY2hp
bGQgMSB7RElWfSBvZiBib2R5CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWJsb2NrcXVvdGUtaW50by1ibG9ja3F1b3RlLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLWJsb2NrcXVvdGUtaW50by1ibG9ja3F1b3RlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gODc0MDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLWJsb2NrcXVvdGUtaW50by1ibG9ja3F1b3RlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtOCwxMCArOCw4IEBACiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGgg
NjA4OiAiVGhpcyB0ZXN0cyBwYXN0aW5nIGEgYmxvY2txdW90ZSBpbnRvIGEgYmxvY2txdW90ZS4g
Tm90aGluZyBiZWxvdyBzaG91bGQgYmUgZG91YmxlLWJsb2NrcXVvdGVkLiIKICAgICAgIFJlbmRl
ckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDc4NHgzNgogICAgICAgICBSZW5kZXJCbG9jayB7
QkxPQ0tRVU9URX0gYXQgKDAsMCkgc2l6ZSA3ODR4MTggW2NvbG9yPSMwMDAwRkZdIFtib3JkZXI6
ICgycHggc29saWQgIzAwMDBGRildCi0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgy
MiwwKSBzaXplIDI3eDE4Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjIsMCkgd2lkdGggMjc6
ICJPbmUiCi0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0OSwwKSBzaXplIDMweDE4
Ci0gICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDksMCkgd2lkdGggMzA6ICJUd28iCisgICAgICAg
ICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyMiwwKSBzaXplIDU3eDE4CisgICAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMjIsMCkgd2lkdGggNTc6ICJPbmVUd28iCiAgICAgICAgIFJlbmRlckJsb2Nr
IChhbm9ueW1vdXMpIGF0ICgwLDE4KSBzaXplIDc4NHgwCiAgICAgICAgICAgUmVuZGVySW5saW5l
IHtTUEFOfSBhdCAoMCwwKSBzaXplIDB4MAogICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3Vz
KSBhdCAoMCwxOCkgc2l6ZSA3ODR4MTgKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLTMtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLTMt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLTMtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC02LDcgKzYsNyBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FU
RTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBm
cm9tIDMgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAz
IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6
TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJ
TkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFu
Z2U6cmFuZ2UgZnJvbSA0IG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gNCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCkBA
IC0yMyw4ICsyMyw2IEBACiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMzog
Im9uZSIKICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyMywwKSB3aWR0aCA0OiAiICIKICAgICAg
ICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMTgpIHNpemUgNzg0eDE4Ci0gICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMjR4MTgKLSAgICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDI0OiAidHdvIgotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMjQsMCkgc2l6ZSAzMXgxOAotICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI0LDApIHdpZHRo
IDMxOiAidGhyZWUiCi1jYXJldDogcG9zaXRpb24gMyBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hp
bGQgMSB7RElWfSBvZiBjaGlsZCAyIHtESVZ9IG9mIGJvZHkKKyAgICAgICAgICBSZW5kZXJUZXh0
IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA1NXgxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAs
MCkgd2lkdGggNTU6ICJ0d290aHJlZSIKK2NhcmV0OiBwb3NpdGlvbiA0IG9mIGNoaWxkIDAgeyN0
ZXh0fSBvZiBjaGlsZCAyIHtESVZ9IG9mIGJvZHkKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTQ4MzU2Ny1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC81NDgzNTY3LWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gODc0MDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZWRpdGluZy9wYXN0ZWJvYXJkLzU0ODM1NjctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC00LDEwICs0LDcgQEAKICAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYw
MAogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAogICAgICAgUmVu
ZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4MTgKLSAgICAgICAgUmVuZGVyVGV4dCB7
I3RleHR9IGF0ICgwLDApIHNpemUgOHgxOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdp
ZHRoIDg6ICJ4IgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDgsMCkgc2l6ZSAyMXgx
OAotICAgICAgICAgIHRleHQgcnVuIGF0ICg4LDApIHdpZHRoIDIxOiAiZm9vIgotICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI5LDApIHNpemUgOHgxOAotICAgICAgICAgIHRleHQgcnVu
IGF0ICgyOSwwKSB3aWR0aCA4OiAieCIKLWNhcmV0OiBwb3NpdGlvbiAzIG9mIGNoaWxkIDEgeyN0
ZXh0fSBvZiBjaGlsZCAwIHtESVZ9IG9mIGJvZHkKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgwLDApIHNpemUgMHgwCisgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDM3eDE4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMzc6ICJ4Zm9veCIK
K2NhcmV0OiBwb3NpdGlvbiA1IG9mIGNoaWxkIDEgeyN0ZXh0fSBvZiBjaGlsZCAwIHtESVZ9IG9m
IGJvZHkKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQv
bWVyZ2UtZW5kLWJsb2NrcXVvdGUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRl
c3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLWJsb2NrcXVvdGUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLWJsb2NrcXVvdGUtZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDEwICsxLDExIEBACiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRC
ZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+
ICNkb2N1bWVudCB0byAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50CiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdEaWRCZWdpbkVkaXRpbmdO
b3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTog
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDE2IG9mICN0ZXh0ID4gRElW
ID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTYgb2YgI3RleHQgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMTYgb2YgI3RleHQgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxNiBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0
aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMTYgb2YgI3RleHQgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOTkgb2YgI3RleHQg
PiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOTkgb2YgI3RleHQgPiBQID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0g
c3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCi1F
RElUSU5HIERFTEVHQVRFOiBzaG91bGRFbmRFZGl0aW5nSW5ET01SYW5nZTpyYW5nZSBmcm9tIDAg
b2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMiBvZiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudAorRURJVElORyBERUxFR0FURTogc2hvdWxkRW5kRWRpdGluZ0luRE9NUmFu
Z2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEgb2Yg
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRFbmRFZGl0aW5nOldlYlZpZXdEaWRFbmRFZGl0aW5nTm90aWZpY2F0aW9uCiBFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRCZWdpbkVkaXRpbmdJbkRPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQmVnaW5FZGl0aW5nOldlYlZpZXdE
aWRCZWdpbkVkaXRpbmdOb3RpZmljYXRpb24KQEAgLTEyLDcgKzEzLDcgQEAKIEVESVRJTkcgREVM
RUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gRElWID4gQkxPQ0tRVU9U
RSA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBESVYgPiBC
TE9DS1FVT1RFID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxl
Y3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAxNCBvZiAjdGV4dCA+IERJViA+IEJMT0NLUVVPVEUgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAxNCBvZiAjdGV4dCA+IERJViA+IEJMT0NLUVVPVEUgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0
cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRp
b24KIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMApAQCAtMjUsMTAgKzI2LDggQEAKICAgICAg
ICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzOTc6ICJUaGlzIHRlc3RzIHBhc3RpbmcgYSBN
YWlsIGJsb2NrcXVvdGUgYXQgdGhlIHN0YXJ0IG9mIGEgcGFyYWdyYXBoLiAiCiAgICAgICAgICAg
dGV4dCBydW4gYXQgKDM5NywwKSB3aWR0aCAyMDk6ICJCbG9ja3F1b3Rpbmcgc2hvdWxkIGJlIHN0
cmlwcGVkLiIKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDM0KSBzaXplIDc4NHgxOAot
ICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAxMTR4MTgKLSAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAxMTQ6ICJCbG9ja3F1b3RlZCBUZXh0IgotICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDExNCwwKSBzaXplIDh4MTgKLSAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMTE0LDApIHdpZHRoIDg6ICJ4IgorICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAxMjJ4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAx
MjI6ICJCbG9ja3F1b3RlZCBUZXh0eCIKICAgICAgIFJlbmRlckJsb2NrIHtQfSBhdCAoMCw2OCkg
c2l6ZSA3ODR4MzYKICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgNzU5
eDM2CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggMjg5OiAiVGhpcyB0ZXN0cyBw
YXN0aW5nIHRleHQgaW50byBhIE1haWwgYmxvY2txdW90ZS4gIgpAQCAtMzcsMTUgKzM2LDExIEBA
CiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwxMjApIHNpemUgNzg0eDUyCiAgICAgICAg
IFJlbmRlckJsb2NrIHtCTE9DS1FVT1RFfSBhdCAoNDAsMCkgc2l6ZSA3MDR4MTgKICAgICAgICAg
ICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDcwNHgxOAotICAgICAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgODF4MTgKLSAgICAgICAgICAgICAgdGV4dCBy
dW4gYXQgKDAsMCkgd2lkdGggODE6ICJCbG9ja3F1b3RlZCIKLSAgICAgICAgICAgIFJlbmRlclRl
eHQgeyN0ZXh0fSBhdCAoODEsMCkgc2l6ZSAyMXgxOAotICAgICAgICAgICAgICB0ZXh0IHJ1biBh
dCAoODEsMCkgd2lkdGggMjE6ICJmb28iCisgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDAsMCkgc2l6ZSAxMDJ4MTgKKyAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lk
dGggMTAyOiAiQmxvY2txdW90ZWRmb28iCiAgICAgICAgIFJlbmRlckJsb2NrIChhbm9ueW1vdXMp
IGF0ICgwLDM0KSBzaXplIDc4NHgwCiAgICAgICAgIFJlbmRlckJsb2NrIHtCTE9DS1FVT1RFfSBh
dCAoNDAsMzQpIHNpemUgNzA0eDE4CiAgICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSA3MDR4MTgKLSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBz
aXplIDIweDE4Ci0gICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDIwOiAiYmFy
IgotICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyMCwwKSBzaXplIDI5eDE4Ci0g
ICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyMCwwKSB3aWR0aCAyOTogIlRleHQiCi1jYXJldDog
cG9zaXRpb24gMyBvZiBjaGlsZCAwIHsjdGV4dH0gb2YgY2hpbGQgMCB7RElWfSBvZiBjaGlsZCAx
IHtCTE9DS1FVT1RFfSBvZiBjaGlsZCAxMCB7RElWfSBvZiBib2R5CisgICAgICAgICAgICBSZW5k
ZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0OXgxOAorICAgICAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMCwwKSB3aWR0aCA0OTogImJhclRleHQiCitjYXJldDogcG9zaXRpb24gMTQgb2YgY2hp
bGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge0RJVn0gb2YgY2hpbGQgMCB7QkxPQ0tRVU9URX0gb2Yg
Y2hpbGQgMTAge0RJVn0gb2YgYm9keQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAwNS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0
LTAwNS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3NDAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAwNS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDkgQEAKIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZElu
c2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20g
NiBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBh
c3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzOCBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1Nl
bGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZp
ZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5v
ZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQKIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgpAQCAtNTUsMTAgKzU2LDggQEAKICAgUmVuZGVyQmxvY2sge0hUTUx9
IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNp
emUgNzg0eDU4NAogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsMCkgc2l6ZSA3ODR4NTYg
W2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxNCwxNCkgc2l6ZSA2M3gyOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgxNCwxNCkgd2lk
dGggNjM6ICJUaGVyZSAiCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNzcsMTQpIHNp
emUgMjg1eDI4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDc3LDE0KSB3aWR0aCAyODU6ICJpcyBh
IHRpZGUgaW4gdGhlIGFmZmFpcnMgb2YgbWVuLCIKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxNCwxNCkgc2l6ZSAzNDh4MjgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTQsMTQpIHdp
ZHRoIDM0ODogIlRoZXJlIGlzIGEgdGlkZSBpbiB0aGUgYWZmYWlycyBvZiBtZW4sIgogICAgICAg
UmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTYpIHNpemUgNzg0eDU2IFtib3JkZXI6ICgycHggc29s
aWQgI0ZGMDAwMCldCiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTQsMTQpIHNpemUg
Mjg1eDI4CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDE0LDE0KSB3aWR0aCAyODU6ICJpcyBhIHRp
ZGUgaW4gdGhlIGFmZmFpcnMgb2YgbWVuLCIKSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTA4OTMyNy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC81MDg5MzI3LWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gODc0MDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRp
dGluZy9wYXN0ZWJvYXJkLzUwODkzMjctZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC04
LDEzICs4LDkgQEAKICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA3NjI6ICJUaGlz
IHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IGNvbnRlbnQgdGhhdCBoYXMgdGhlIGRvY3VtZW50IGRl
ZmF1bHQgY29sb3IgaXMgcGFzdGVkIGFzIGJsdWUgKG9yIHdoYXRldmVyIHRoZSBjb2xvciBmb3Ig
cXVvdGVkIgogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCAzNTI6ICJjb250ZW50
IGlzKSB3aGVuIHBhc3RlZCBpbiB0aGUgbWlkZGxlIG9mIHF1b3RlZCBjb250ZW50LiIKICAgICAg
IFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDUyKSBzaXplIDc4NHgxOAorICAgICAgICBSZW5kZXJC
bG9jayAoYW5vbnltb3VzKSBhdCAoMCwwKSBzaXplIDc4NHgwCiAgICAgICAgIFJlbmRlckJsb2Nr
IHtCTE9DS1FVT1RFfSBhdCAoMCwwKSBzaXplIDc0NHgxOCBbY29sb3I9IzAwMDBGRl0gW2JvcmRl
cjogKDJweCBzb2xpZCAjMDAwMEZGKV0KICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MTIsMCkgc2l6ZSA3MzJ4MTgKLSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCww
KSBzaXplIDV4MTgKLSAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNTogIigi
Ci0gICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDUsMCkgc2l6ZSAxNTV4MTgKLSAg
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDUsMCkgd2lkdGggMTU1OiAiVGhpcyB0ZXh0IHNob3Vs
ZCBiZSBibHVlLiIKLSAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMTYwLDApIHNp
emUgNXgxOAotICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMTYwLDApIHdpZHRoIDU6ICIpIgot
ICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwzNCkgc2l6ZSA3ODR4MAotY2Fy
ZXQ6IHBvc2l0aW9uIDI1IG9mIGNoaWxkIDEgeyN0ZXh0fSBvZiBjaGlsZCAwIHtESVZ9IG9mIGNo
aWxkIDAge0JMT0NLUVVPVEV9IG9mIGNoaWxkIDMge0RJVn0gb2YgYm9keQorICAgICAgICAgICAg
UmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMTY1eDE4CisgICAgICAgICAgICAgIHRl
eHQgcnVuIGF0ICgwLDApIHdpZHRoIDE2NTogIihUaGlzIHRleHQgc2hvdWxkIGJlIGJsdWUuKSIK
K2NhcmV0OiBwb3NpdGlvbiAxODEgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0RJVn0g
b2YgYm9keQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1ibG9ja3F1b3RlLWludG8tYmxvY2txdW90ZS0yLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LWJsb2NrcXVvdGUtaW50by1ibG9ja3F1b3RlLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQw
MykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
YmxvY2txdW90ZS1pbnRvLWJsb2NrcXVvdGUtMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTksMTAgKzksOCBAQAogICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDE4KSB3aWR0aCAxNjE6
ICJzaG91bGQgYmUgZG91Ymx5LXF1b3RlZC4iCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAo
MCw1Mikgc2l6ZSA3ODR4MzYKICAgICAgICAgUmVuZGVyQmxvY2sge0JMT0NLUVVPVEV9IGF0ICgw
LDApIHNpemUgNzg0eDE4IFtjb2xvcj0jMDAwMEZGXSBbYm9yZGVyOiAoMnB4IHNvbGlkICMwMDAw
RkYpXQotICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjIsMCkgc2l6ZSAyN3gxOAot
ICAgICAgICAgICAgdGV4dCBydW4gYXQgKDIyLDApIHdpZHRoIDI3OiAiT25lIgotICAgICAgICAg
IFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoNDksMCkgc2l6ZSAzMHgxOAotICAgICAgICAgICAgdGV4
dCBydW4gYXQgKDQ5LDApIHdpZHRoIDMwOiAiVHdvIgorICAgICAgICAgIFJlbmRlclRleHQgeyN0
ZXh0fSBhdCAoMjIsMCkgc2l6ZSA1N3gxOAorICAgICAgICAgICAgdGV4dCBydW4gYXQgKDIyLDAp
IHdpZHRoIDU3OiAiT25lVHdvIgogICAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAo
MCwxOCkgc2l6ZSA3ODR4MAogICAgICAgICAgIFJlbmRlcklubGluZSB7U1BBTn0gYXQgKDAsMCkg
c2l6ZSAweDAKICAgICAgICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMTgpIHNpemUg
Nzg0eDE4CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
L3NtYXJ0LXBhc3RlLTAwNi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9zbWFydC1wYXN0ZS0wMDYtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA4NzQwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDA2LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTksNyArMTksNyBAQAogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9j
dW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAxIG9mICN0ZXh0ID4g
RElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IERJViA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRB
Y3Rpb25QYXN0ZWQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihu
dWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNCBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDQgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGls
bFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRE
T01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDcgb2YgI3RleHQgPiBESVYgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA3IG9mICN0ZXh0ID4gRElWID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25z
dHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0
aW9uCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAgLTQ1LDEyICs0NSw4IEBACiAgICAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDg0KSBzaXplIDUweDI4CiAgICAgICAgICAg
ICB0ZXh0IHJ1biBhdCAoMCw4NCkgd2lkdGggNTA6ICItdGVzdC0iCiAgICAgICBSZW5kZXJCbG9j
ayB7RElWfSBhdCAoMCwyMzYpIHNpemUgNzg0eDMyCisgICAgICAgIFJlbmRlckJsb2NrIChhbm9u
eW1vdXMpIGF0ICgwLDApIHNpemUgNzg0eDAKICAgICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQg
KDAsMCkgc2l6ZSA3ODR4MzIgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgICAg
ICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDIsMikgc2l6ZSA4eDI4Ci0gICAgICAgICAgICB0ZXh0
IHJ1biBhdCAoMiwyKSB3aWR0aCA4OiAiLSIKLSAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDEwLDIpIHNpemUgMzR4MjgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICgxMCwyKSB3aWR0
aCAzNDogInRlc3QiCi0gICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICg0NCwyKSBzaXpl
IDh4MjgKLSAgICAgICAgICAgIHRleHQgcnVuIGF0ICg0NCwyKSB3aWR0aCA4OiAiLSIKLSAgICAg
ICAgUmVuZGVyQmxvY2sgKGFub255bW91cykgYXQgKDAsMzIpIHNpemUgNzg0eDAKLWNhcmV0OiBw
b3NpdGlvbiA0IG9mIGNoaWxkIDEgeyN0ZXh0fSBvZiBjaGlsZCAxIHtESVZ9IG9mIGNoaWxkIDMg
e0RJVn0gb2YgYm9keQorICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMiwyKSBzaXpl
IDUweDI4CisgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMiwyKSB3aWR0aCA1MDogIi10ZXN0LSIK
K2NhcmV0OiBwb3NpdGlvbiA3IG9mIGNoaWxkIDQgeyN0ZXh0fSBvZiBjaGlsZCAzIHtESVZ9IG9m
IGNoaWxkIDEge0RJVn0gb2YgYm9keQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAwNC1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0
LTAwNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3NDAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAwNC1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQzLDggKzQzLDkgQEAKIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZElu
c2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20g
NiBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBh
c3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
LUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0
aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzOCBvZiAjdGV4dCA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMCBvZiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1Nl
bGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZp
ZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAogICBS
ZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMApAQCAtNTIsMTAgKzUzLDggQEAKICAgUmVu
ZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDYwMAogICAgIFJlbmRlckJvZHkge0JP
RFl9IGF0ICg4LDgpIHNpemUgNzg0eDU4NAogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAs
MCkgc2l6ZSA3ODR4NTYgW2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgxNCwxNCkgc2l6ZSA2M3gyOAotICAgICAgICAgIHRleHQgcnVu
IGF0ICgxNCwxNCkgd2lkdGggNjM6ICJUaGVyZSAiCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0
fSBhdCAoNzcsMTQpIHNpemUgMjg1eDI4Ci0gICAgICAgICAgdGV4dCBydW4gYXQgKDc3LDE0KSB3
aWR0aCAyODU6ICJpcyBhIHRpZGUgaW4gdGhlIGFmZmFpcnMgb2YgbWVuLCIKKyAgICAgICAgUmVu
ZGVyVGV4dCB7I3RleHR9IGF0ICgxNCwxNCkgc2l6ZSAzNDh4MjgKKyAgICAgICAgICB0ZXh0IHJ1
biBhdCAoMTQsMTQpIHdpZHRoIDM0ODogIlRoZXJlIGlzIGEgdGlkZSBpbiB0aGUgYWZmYWlycyBv
ZiBtZW4sIgogICAgICAgUmVuZGVyQmxvY2sge0RJVn0gYXQgKDAsNTYpIHNpemUgNzg0eDU2IFti
b3JkZXI6ICgycHggc29saWQgI0ZGMDAwMCldCiAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBh
dCAoMTQsMTQpIHNpemUgNDM0eDI4CiAgICAgICAgICAgdGV4dCBydW4gYXQgKDE0LDE0KSB3aWR0
aCA0MzQ6ICJXaGljaCB0YWtlbiBhdCB0aGUgZmxvb2QgbGVhZHMgb24gdG8gZm9ydHVuZS4iCklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRl
eHQtMDA5LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDA5LWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gODc0MDMpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXRleHQtMDA5LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtODUsNyArODUs
NiBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6
IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJh
bmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDEg
b2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJW
aWV3SW5zZXJ0QWN0aW9uUGFzdGVkCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2Rv
Y3VtZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIGxheWVyIGF0ICgwLDApIHNpemUgODAw
eDYwMApAQCAtMTA1LDggKzEwNCw2IEBACiAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCAxNzogIlUiCiAgICAgICBSZW5kZXJCbG9jayAoYW5vbnltb3VzKSBhdCAoMCwxNDApIHNp
emUgNzg0eDAKICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgwLDE0MCkgc2l6ZSA3ODR4NTYg
W2JvcmRlcjogKDJweCBzb2xpZCAjRkYwMDAwKV0KLSAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9
IGF0ICgxNCwxNCkgc2l6ZSAxN3gyOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgxNCwxNCkgd2lk
dGggMTc6ICJVIgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDMxLDE0KSBzaXplIDM2
NXgyOAotICAgICAgICAgIHRleHQgcnVuIGF0ICgzMSwxNCkgd2lkdGggMzY1OiAicG9uIHN1Y2gg
YSBmdWxsIHNlYSBhcmUgd2Ugbm93IGFmbG9hdCwiCi1jYXJldDogcG9zaXRpb24gMSBvZiBjaGls
ZCAwIHsjdGV4dH0gb2YgY2hpbGQgMiB7RElWfSBvZiBib2R5CisgICAgICAgIFJlbmRlclRleHQg
eyN0ZXh0fSBhdCAoMTQsMTQpIHNpemUgMzgyeDI4CisgICAgICAgICAgdGV4dCBydW4gYXQgKDE0
LDE0KSB3aWR0aCAzODI6ICJVcG9uIHN1Y2ggYSBmdWxsIHNlYSBhcmUgd2Ugbm93IGFmbG9hdCwi
CitjYXJldDogcG9zaXRpb24gMSBvZiBjaGlsZCAyIHsjdGV4dH0gb2YgY2hpbGQgMSB7RElWfSBv
ZiBib2R5CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
L21lcmdlLWVuZC10YWJsZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtdGFibGUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA4NzQwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5n
L3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLXRhYmxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTQsNyArMTQsNyBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTog
c2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9t
IDMgb2YgI3RleHQgPiBESVYgPiBURCA+IFRSID4gVEJPRFkgPiBUQUJMRSA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBESVYgPiBURCA+IFRSID4gVEJPRFkg
PiBUQUJMRSA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gNyBvZiAjdGV4dCA+IERJViA+IFREID4gVFIgPiBUQk9EWSA+IFRBQkxFID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNyBvZiAjdGV4dCA+IERJViA+IFREID4gVFIgPiBU
Qk9EWSA+IFRBQkxFID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNT
ZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJW
aWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBsYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKQEAg
LTUyLDE2ICs1MiwxMiBAQAogICAgICAgICAgICAgUmVuZGVyVGFibGVSb3cge1RSfSBhdCAoMCwy
KSBzaXplIDEwM3g0MAogICAgICAgICAgICAgICBSZW5kZXJUYWJsZUNlbGwge1REfSBhdCAoMiwy
KSBzaXplIDUzeDQwIFtib3JkZXI6ICgxcHggaW5zZXQgIzgwODA4MCldIFtyPTAgYz0wIHJzPTEg
Y3M9MV0KICAgICAgICAgICAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMiwyKSBzaXplIDQ5
eDE4Ci0gICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSAy
OHgxOAotICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyODogIkl0
ZW0iCi0gICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDI4LDApIHNpemUg
MjF4MTgKLSAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDI4LDApIHdpZHRoIDIxOiAi
Zm9vIgorICAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUg
NDl4MTgKKyAgICAgICAgICAgICAgICAgICAgdGV4dCBydW4gYXQgKDAsMCkgd2lkdGggNDk6ICJJ
dGVtZm9vIgogICAgICAgICAgICAgICAgIFJlbmRlckJsb2NrIHtESVZ9IGF0ICgyLDIwKSBzaXpl
IDQ5eDE4Ci0gICAgICAgICAgICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6
ZSAyMHgxOAotICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAyMDog
ImJhciIKLSAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMjAsMCkgc2l6
ZSAxMngxOAotICAgICAgICAgICAgICAgICAgICB0ZXh0IHJ1biBhdCAoMjAsMCkgd2lkdGggMTI6
ICIgMSIKKyAgICAgICAgICAgICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoMCwwKSBzaXpl
IDMyeDE4CisgICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgwLDApIHdpZHRoIDMyOiAi
YmFyIDEiCiAgICAgICAgICAgICAgIFJlbmRlclRhYmxlQ2VsbCB7VER9IGF0ICg1NywxMSkgc2l6
ZSA0NHgyMiBbYm9yZGVyOiAoMXB4IGluc2V0ICM4MDgwODApXSBbcj0wIGM9MSBycz0xIGNzPTFd
CiAgICAgICAgICAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgyLDIpIHNpemUgNDB4MTgK
ICAgICAgICAgICAgICAgICAgIHRleHQgcnVuIGF0ICgyLDIpIHdpZHRoIDQwOiAiSXRlbSAyIgot
Y2FyZXQ6IHBvc2l0aW9uIDMgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDEge0RJVn0gb2Yg
Y2hpbGQgMCB7VER9IG9mIGNoaWxkIDAge1RSfSBvZiBjaGlsZCAwIHtUQk9EWX0gb2YgY2hpbGQg
MCB7VEFCTEV9IG9mIGNoaWxkIDEwIHtESVZ9IG9mIGJvZHkKK2NhcmV0OiBwb3NpdGlvbiA3IG9m
IGNoaWxkIDAgeyN0ZXh0fSBvZiBjaGlsZCAwIHtESVZ9IG9mIGNoaWxkIDAge1REfSBvZiBjaGls
ZCAwIHtUUn0gb2YgY2hpbGQgMCB7VEJPRFl9IG9mIGNoaWxkIDAge1RBQkxFfSBvZiBjaGlsZCAx
MCB7RElWfSBvZiBib2R5CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9w
YXN0ZWJvYXJkLzUwMzIwOTUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTAzMjA5NS1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDg3NDAzKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcvcGFzdGVi
b2FyZC81MDMyMDk1LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtOSw4ICs5LDYgQEAK
ICAgICAgICAgICB0ZXh0IHJ1biBhdCAoNjkwLDApIHdpZHRoIDc0OiAiWW91IHNob3VsZCIKICAg
ICAgICAgICB0ZXh0IHJ1biBhdCAoMCwxOCkgd2lkdGggMTQ1OiAic2VlICdoZWxsb3dvcmxkJyBi
ZWxvdy4iCiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCw1Mikgc2l6ZSA3ODR4MTgKLSAg
ICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgwLDApIHNpemUgMzF4MTgKLSAgICAgICAgICB0
ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCAzMTogImhlbGxvIgotICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDMxLDApIHNpemUgMzd4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoMzEsMCkg
d2lkdGggMzc6ICJ3b3JsZCIKLWNhcmV0OiBwb3NpdGlvbiA1IG9mIGNoaWxkIDEgeyN0ZXh0fSBv
ZiBjaGlsZCAyIHtESVZ9IG9mIGJvZHkKKyAgICAgICAgUmVuZGVyVGV4dCB7I3RleHR9IGF0ICgw
LDApIHNpemUgNjh4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3aWR0aCA2ODogImhl
bGxvd29ybGQiCitjYXJldDogcG9zaXRpb24gMTAgb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxk
IDIge0RJVn0gb2YgYm9keQpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2VkaXRpbmcv
cGFzdGVib2FyZC80NzAwMjk3LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9wbGF0Zm9ybS9tYWMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ3MDAyOTctZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA4NzQwMykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL21hYy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvNDcwMDI5Ny1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBA
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNiBvZiAjdGV4dCA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDYgb2YgI3RleHQgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBz
dGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZTpyYW5nZSBmcm9tIDEyIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMTMgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gNDggb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byA0OCBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4
MDB4NjAwCkBAIC0xNSwxMCArMTUsNiBAQAogICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4NjAwCiAgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4NTg0
CiAgICAgICBSZW5kZXJCbG9jayB7RElWfSBhdCAoMCwwKSBzaXplIDc4NHgxOAotICAgICAgICBS
ZW5kZXJUZXh0IHsjdGV4dH0gYXQgKDAsMCkgc2l6ZSA0MXgxOAotICAgICAgICAgIHRleHQgcnVu
IGF0ICgwLDApIHdpZHRoIDQxOiAiVGhlcmUgIgotICAgICAgICBSZW5kZXJUZXh0IHsjdGV4dH0g
YXQgKDQxLDApIHNpemUgNDJ4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoNDEsMCkgd2lkdGgg
NDI6ICJzaG91bGQiCi0gICAgICAgIFJlbmRlclRleHQgeyN0ZXh0fSBhdCAoODMsMCkgc2l6ZSAy
MTV4MTgKLSAgICAgICAgICB0ZXh0IHJ1biBhdCAoODMsMCkgd2lkdGggMjE1OiAiIGJlIG5vIGxp
bmUgYnJlYWtzIGluIHRoaXMgc2VudGVuY2UuIgotY2FyZXQ6IHBvc2l0aW9uIDYgb2YgY2hpbGQg
MSB7I3RleHR9IG9mIGNoaWxkIDAge0RJVn0gb2YgYm9keQorICAgICAgICBSZW5kZXJUZXh0IHsj
dGV4dH0gYXQgKDAsMCkgc2l6ZSAyOTh4MTgKKyAgICAgICAgICB0ZXh0IHJ1biBhdCAoMCwwKSB3
aWR0aCAyOTg6ICJUaGVyZSBzaG91bGQgYmUgbm8gbGluZSBicmVha3MgaW4gdGhpcyBzZW50ZW5j
ZS4iCitjYXJldDogcG9zaXRpb24gNDggb2YgY2hpbGQgMCB7I3RleHR9IG9mIGNoaWxkIDAge0RJ
Vn0gb2YgYm9keQpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQw
Mzk3NzctZml4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtNDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQw
MykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5Nzc3LWZpeC1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEwICs1MSw4IEBACiAiCiB8IDx1bD4K
IHwgICBzdHlsZT0idGV4dC1hbGlnbjpyaWdodDsiCi18ICAgPHVsPgotfCAgICAgc3R5bGU9InRl
eHQtYWxpZ246IHJpZ2h0OyAiCi18ICAgICA8bGk+Ci18ICAgICAgICJBIgorfCAgIDxsaT4KK3wg
ICAgICJBIgogfCAgIDxkaXY+CiB8ICAgICA8dWw+CiB8ICAgICAgIDxsaT4KSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1b3RlLTMtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9j
a3F1b3RlLTMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQwMykKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1b3RlLTMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDkgKzEsNyBAQAogVGhpcyB0ZXN0cyBwYXN0aW5nIGEgYmxvY2txdW90ZSBp
bnRvIHRoZSBtaWRkbGUgb2YgYSBwYXJhZ3JhcGguCi18ICJUaGlzIHNob3VsZCBub3QgYmUgYmxv
Y2txdW90ZWQuIgotfCAiwqBUaGlzIHNob3VsZCBub3QgYmUgYmxvY2txdW90ZWQuIgorfCAiVGhp
cyBzaG91bGQgbm90IGJlIGJsb2NrcXVvdGVkLsKgVGhpcyBzaG91bGQgbm90IGJlIGJsb2NrcXVv
dGVkLiIKIHwgPGJsb2NrcXVvdGU+CiB8ICAgdHlwZT0iY2l0ZSIKLXwgICAiVGhpcyBzaG91bGQg
YmUgYmxvY2txdW90ZWQuIgorfCAgICJUaGlzIHNob3VsZCBiZSBibG9ja3F1b3RlZC48I3NlbGVj
dGlvbi1jYXJldD4iCiB8ICAgPGJyPgotfCAiVGhpcyBzaG91bGQgbm90IGJlIGJsb2NrcXVvdGVk
Ljwjc2VsZWN0aW9uLWNhcmV0PiIKLXwgIsKgVGhpcyBzaG91bGQgbm90IGJlIGJsb2NrcXVvdGVk
LiIKK3wgIlRoaXMgc2hvdWxkIG5vdCBiZSBibG9ja3F1b3RlZC7CoFRoaXMgc2hvdWxkIG5vdCBi
ZSBibG9ja3F1b3RlZC4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtYmxvY2txdW90ZS0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYmxvY2txdW90ZS0yLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gODc0MDMpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYmxvY2tx
dW90ZS0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIgQEAKIFRoaXMg
dGVzdHMgcGFzdGluZyBhIGJsb2NrcXVvdGUgYXQgdGhlIHN0YXJ0IG9mIGEgcGFyYWdyYXBoLgot
fCAiVGhpcyBzaG91bGQgbm90IGJlIGJsb2NrcXVvdGVkLjwjc2VsZWN0aW9uLWNhcmV0PiIKLXwg
IsKgVGhpcyBzaG91bGQgbm90IGJlIGJsb2NrcXVvdGVkLiIKK3wgIlRoaXMgc2hvdWxkIG5vdCBi
ZSBibG9ja3F1b3RlZC7CoFRoaXMgc2hvdWxkIG5vdCBiZSBibG9ja3F1b3RlZC48I3NlbGVjdGlv
bi1jYXJldD4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTA2NTYwNS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
LzUwNjU2MDUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzQwMykKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC81MDY1NjA1LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MjEsNyArMjEsNyBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3
RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2Rl
OiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElW
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVk
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyNCBvZiAjdGV4
dCA+IEZPTlQgPiBESVYgPiBTUEFOID4gRk9OVCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDI0IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+IFNQQU4gPiBGT05UID4gRElW
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZp
bml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNo
b3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAy
NCBvZiAjdGV4dCA+IEZPTlQgPiBESVYgPiBGT05UID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMjQgb2YgI3RleHQgPiBGT05UID4gRElWID4gRk9OVCA+IERJViA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCkBAIC00MCwxNSArNDAsMTMgQEAKIHwg
ICA8Zm9udD4KIHwgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgogfCAgICAgY29sb3I9IiNm
ZjAwMDAiCi18ICAgICA8c3Bhbj4KK3wgICAgIDxmb250PgogfCAgICAgICBjbGFzcz0iQXBwbGUt
c3R5bGUtc3BhbiIKK3wgICAgICAgY29sb3I9IiNmZjAwMDAiCit8ICAgICAgICJUaGlzIHRleHQg
c2hvdWxkIGJlIHJlZC4iCit8ICAgICA8ZGl2PgogfCAgICAgICBzdHlsZT0iY29sb3I6IHJnYigw
LCAwLCAwKTsgIgogfCAgICAgICA8Zm9udD4KIHwgICAgICAgICBjbGFzcz0iQXBwbGUtc3R5bGUt
c3BhbiIKIHwgICAgICAgICBjb2xvcj0iI2ZmMDAwMCIKLXwgICAgICAgICAiVGhpcyB0ZXh0IHNo
b3VsZCBiZSByZWQuIgotfCAgICAgICA8ZGl2PgotfCAgICAgICAgIDxmb250PgotfCAgICAgICAg
ICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCi18ICAgICAgICAgICBjb2xvcj0iI2ZmMDAwMCIK
LXwgICAgICAgICAgICJUaGlzIHRleHQgc2hvdWxkIGJlIHJlZC48I3NlbGVjdGlvbi1jYXJldD4i
Cit8ICAgICAgICAgIlRoaXMgdGV4dCBzaG91bGQgYmUgcmVkLjwjc2VsZWN0aW9uLWNhcmV0PiIK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCShyZXZpc2lvbiA4NzQwMykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsNiArNDk3LDkg
QEAKICAgICAgICAgICAgIGlmIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogaW5saW5lU3R5
bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKSkgewogICAgICAgICAgICAgICAgIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5s
aW5lU3R5bGUpOwogICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUZy
b21SdWxlcyhlbGVtZW50KTsKKworLy8gICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnBy
ZXBhcmVUb0FwcGx5QXQocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoZWxlbWVudCkpOworCiAg
ICAgICAgICAgICAgICAgaWYgKCFuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKSB8fCAhbmV3SW5saW5l
U3R5bGUtPnN0eWxlKCktPmxlbmd0aCgpKQogICAgICAgICAgICAgICAgICAgICByZW1vdmVOb2Rl
QXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlQXR0cik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
bmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmxlbmd0aCgpIDwgaW5saW5lU3R5bGUtPmxlbmd0aCgp
KQpAQCAtNjExLDkgKzYxNCw2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIEF0IGNvcHkg
dGltZSwgV2ViS2l0IHdyYXBzIGNvcGllZCBjb250ZW50IGluIGEgc3BhbiB0aGF0IGNvbnRhaW5z
IHRoZSBzb3VyY2UgZG9jdW1lbnQncyAKLS8vIGRlZmF1bHQgc3R5bGVzLiAgSWYgdGhlIGNvcGll
ZCBSYW5nZSBpbmhlcml0cyBhbnkgb3RoZXIgc3R5bGVzIGZyb20gaXRzIGFuY2VzdG9ycywgd2Ug
cHV0IAotLy8gdGhvc2Ugc3R5bGVzIG9uIGEgc2Vjb25kIHNwYW4uCiAvLyBUaGlzIGZ1bmN0aW9u
IHJlbW92ZXMgcmVkdW5kYW50IHN0eWxlcyBmcm9tIHRob3NlIHNwYW5zLCBhbmQgcmVtb3ZlcyB0
aGUgc3BhbnMgaWYgYWxsIHRoZWlyIAogLy8gc3R5bGVzIGFyZSByZWR1bmRhbnQuIAogLy8gV2Ug
c2hvdWxkIHJlbW92ZSB0aGUgQXBwbGUtc3R5bGUtc3BhbiBjbGFzcyB3aGVuIHdlJ3JlIGRvbmUs
IHNlZSA8cmRhcjovL3Byb2JsZW0vNTY4NTYwMD4uCkBAIC02NjIsNDEgKzY2Miw2IEBACiAgICAg
ICAgIHNldE5vZGVBdHRyaWJ1dGUod3JhcHBpbmdTdHlsZVNwYW4sIHN0eWxlQXR0ciwgc3R5bGUt
PnN0eWxlKCktPmNzc1RleHQoKSk7CiB9CiAKLS8vIFRha2UgdGhlIHN0eWxlIGF0dHJpYnV0ZSBv
ZiBhIHNwYW4gYW5kIGFwcGx5IGl0IHRvIGl0J3MgY2hpbGRyZW4gaW5zdGVhZC4gIFRoaXMgYWxs
b3dzIHVzIHRvCi0vLyBjb252ZXJ0IGludmFsaWQgSFRNTCB3aGVyZSBhIHNwYW4gY29udGFpbnMg
YmxvY2sgZWxlbWVudHMgaW50byB2YWxpZCBIVE1MIHdoaWxlIHByZXNlcnZpbmcKLS8vIHN0eWxl
cy4KLXZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNvcHlTdHlsZVRvQ2hpbGRyZW4oTm9k
ZSogcGFyZW50Tm9kZSwgY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHBhcmVudFN0
eWxlKQotewotICAgIEFTU0VSVChwYXJlbnROb2RlLT5oYXNUYWdOYW1lKHNwYW5UYWcpKTsKLSAg
ICBOb2RlVmVjdG9yIGNoaWxkTm9kZXM7Ci0gICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hpbGROb2Rl
ID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZE5vZGU7IGNoaWxkTm9kZSA9IGNoaWxk
Tm9kZS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGROb2Rlcy5hcHBlbmQoY2hpbGROb2Rl
KTsKLSAgICAgICAgCi0gICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IGNo
aWxkTm9kZXMuYmVnaW4oKTsgaXQgIT0gY2hpbGROb2Rlcy5lbmQoKTsgaXQrKykgewotICAgICAg
ICBOb2RlKiBjaGlsZE5vZGUgPSBpdC0+Z2V0KCk7Ci0gICAgICAgIGlmIChjaGlsZE5vZGUtPmlz
VGV4dE5vZGUoKSB8fCAhaXNCbG9jayhjaGlsZE5vZGUpIHx8IGNoaWxkTm9kZS0+aGFzVGFnTmFt
ZShwcmVUYWcpKSB7Ci0gICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHB1dCBhIHNwYW4gdGFn
IGFyb3VuZCB0aGUgY2hpbGQgbm9kZS4KLSAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdOb2Rl
ID0gcGFyZW50Tm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKLSAgICAgICAgICAgIEFTU0VSVChuZXdO
b2RlLT5oYXNUYWdOYW1lKHNwYW5UYWcpKTsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBuZXdT
cGFuID0gdG9IVE1MRWxlbWVudChuZXdOb2RlLmdldCgpKTsKLSAgICAgICAgICAgIHNldE5vZGVB
dHRyaWJ1dGUobmV3U3Bhbiwgc3R5bGVBdHRyLCBwYXJlbnRTdHlsZS0+Y3NzVGV4dCgpKTsKLSAg
ICAgICAgICAgIGluc2VydE5vZGVBZnRlcihuZXdTcGFuLCBjaGlsZE5vZGUpOwotICAgICAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBuZXdTcGFuLT5hcHBlbmRDaGls
ZChjaGlsZE5vZGUsIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAgICAg
Y2hpbGROb2RlID0gbmV3U3BhbjsKLSAgICAgICAgfSBlbHNlIGlmIChjaGlsZE5vZGUtPmlzSFRN
TEVsZW1lbnQoKSkgewotICAgICAgICAgICAgLy8gQ29weSB0aGUgc3R5bGUgYXR0cmlidXRlIGFu
ZCBtZXJnZSB0aGVtIGludG8gdGhlIGNoaWxkIG5vZGUuICBXZSBkb24ndCB3YW50IHRvIG92ZXJy
aWRlCi0gICAgICAgICAgICAvLyBleGlzdGluZyBzdHlsZXMsIHNvIGRvbid0IGNsb2JiZXIgb24g
bWVyZ2UuCi0gICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG5l
d1N0eWxlID0gcGFyZW50U3R5bGUtPmNvcHkoKTsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBj
aGlsZEVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGV4aXN0aW5nU3R5bGVzID0gY2hpbGRFbGVt
ZW50LT5nZXRJbmxpbmVTdHlsZURlY2woKS0+Y29weSgpOwotICAgICAgICAgICAgZXhpc3RpbmdT
dHlsZXMtPm1lcmdlKG5ld1N0eWxlLmdldCgpLCBmYWxzZSk7Ci0gICAgICAgICAgICBzZXROb2Rl
QXR0cmlidXRlKGNoaWxkRWxlbWVudCwgc3R5bGVBdHRyLCBleGlzdGluZ1N0eWxlcy0+Y3NzVGV4
dCgpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6bWVyZ2VFbmRJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX3Nob3VsZE1lcmdlRW5kKQpJbmRl
eDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gODc0MDMpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMiArMTIw
LDcgQEAKIHB1YmxpYzoKICAgICBlbnVtIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSB7IERvZXNGdWxs
eVNlbGVjdE5vZGUsIERvZXNOb3RGdWxseVNlbGVjdE5vZGUgfTsKIAotICAgIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzIHNob3VsZFJl
c29sdmVVUkxzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBzaG91bGRBbm5vdGF0ZSwgY29uc3Qg
UmFuZ2UqIHJhbmdlKQotICAgIDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29s
dmVVUkxzLCByYW5nZSkKLSAgICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5ub3RhdGUpCi0g
ICAgewotICAgIH0KLQorICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4q
IG5vZGVzLCBFQWJzb2x1dGVVUkxzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgY29uc3QgUmFu
Z2UqLCBOb2RlKiBoaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID0gMCk7CiAgICAgTm9kZSogc2Vy
aWFsaXplTm9kZXMoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kKTsKICAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4gTWFya3VwQWNjdW11
bGF0b3I6OmFwcGVuZFN0cmluZyhzKTsgfQogICAgIHZvaWQgd3JhcFdpdGhOb2RlKE5vZGUqLCBi
b29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMgPSBmYWxzZSwgUmFuZ2VGdWxseVNlbGVjdHNOb2Rl
ID0gRG9lc0Z1bGx5U2VsZWN0Tm9kZSk7CkBAIC0xMzMsMTggKzEyOCwzNyBAQAogICAgIFN0cmlu
ZyB0YWtlUmVzdWx0cygpOwogCiBwcml2YXRlOgorICAgIHZvaWQgYXBwZW5kU3R5bGVOb2RlT3Bl
blRhZyhWZWN0b3I8VUNoYXI+JiwgQ1NTU3R5bGVEZWNsYXJhdGlvbiosIERvY3VtZW50KiwgYm9v
bCBpc0Jsb2NrID0gZmFsc2UpOworICAgIGNvbnN0IFN0cmluZyBzdHlsZU5vZGVDbG9zZVRhZyhi
b29sIGlzQmxvY2sgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFRleHQoVmVjdG9y
PFVDaGFyPiYgb3V0LCBUZXh0Kik7CiAgICAgU3RyaW5nIHJlbmRlcmVkVGV4dChjb25zdCBOb2Rl
KiwgY29uc3QgUmFuZ2UqKTsKICAgICBTdHJpbmcgc3RyaW5nVmFsdWVGb3JSYW5nZShjb25zdCBO
b2RlKiwgY29uc3QgUmFuZ2UqKTsKICAgICB2b2lkIGFwcGVuZEVsZW1lbnQoVmVjdG9yPFVDaGFy
PiYgb3V0LCBFbGVtZW50KiBlbGVtZW50LCBib29sIGFkZERpc3BsYXlJbmxpbmUsIFJhbmdlRnVs
bHlTZWxlY3RzTm9kZSk7CiAgICAgdm9pZCBhcHBlbmRFbGVtZW50KFZlY3RvcjxVQ2hhcj4mIG91
dCwgRWxlbWVudCogZWxlbWVudCwgTmFtZXNwYWNlcyopIHsgYXBwZW5kRWxlbWVudChvdXQsIGVs
ZW1lbnQsIGZhbHNlLCBEb2VzRnVsbHlTZWxlY3ROb2RlKTsgfQogCisgICAgTm9kZSogdHJhdmVy
c2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kLCBi
b29sIHNob3VsZEVtaXQpOworCiAgICAgYm9vbCBzaG91bGRBbm5vdGF0ZSgpIHsgcmV0dXJuIG1f
c2hvdWxkQW5ub3RhdGUgPT0gQW5ub3RhdGVGb3JJbnRlcmNoYW5nZTsgfQorICAgIGJvb2wgc2hv
dWxkQXBwbHlXcmFwcGluZ1N0eWxlKE5vZGUqIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkICYmIG1faGlnaGVzdE5vZGVUb0JlU2Vy
aWFsaXplZC0+cGFyZW50Tm9kZSgpID09IG5vZGUtPnBhcmVudE5vZGUoKQorICAgICAgICAgICAg
JiYgbV93cmFwcGluZ1N0eWxlICYmIG1fd3JhcHBpbmdTdHlsZS0+c3R5bGUoKTsKKyAgICB9CiAK
ICAgICBWZWN0b3I8U3RyaW5nPiBtX3JldmVyc2VkUHJlY2VkaW5nTWFya3VwOwogICAgIGNvbnN0
IEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIG1fc2hvdWxkQW5ub3RhdGU7CisgICAgTm9kZSogbV9o
aWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkOworICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG1fd3Jh
cHBpbmdTdHlsZTsKIH07CiAKK2lubGluZSBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6U3R5bGVk
TWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMgc2hv
dWxkUmVzb2x2ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIHNob3VsZEFubm90YXRlLAor
ICAgIGNvbnN0IFJhbmdlKiByYW5nZSwgTm9kZSogaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCkK
KyAgICA6IE1hcmt1cEFjY3VtdWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgcmFuZ2Up
CisgICAgLCBtX3Nob3VsZEFubm90YXRlKHNob3VsZEFubm90YXRlKQorICAgICwgbV9oaWdoZXN0
Tm9kZVRvQmVTZXJpYWxpemVkKGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpCit7Cit9CisKIHZv
aWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OndyYXBXaXRoTm9kZShOb2RlKiBub2RlLCBib29s
IGNvbnZlcnRCbG9ja3NUb0lubGluZXMsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSByYW5nZUZ1bGx5
U2VsZWN0c05vZGUpCiB7CiAgICAgVmVjdG9yPFVDaGFyPiBtYXJrdXA7CkBAIC0xNjAsMjAgKzE3
NCwzMCBAQAogCiB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFwV2l0aFN0eWxlTm9k
ZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGlz
QmxvY2spCiB7CisgICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOworICAgIGFwcGVuZFN0eWxlTm9k
ZU9wZW5UYWcob3BlblRhZywgc3R5bGUsIGRvY3VtZW50LCBpc0Jsb2NrKTsKKyAgICBtX3JldmVy
c2VkUHJlY2VkaW5nTWFya3VwLmFwcGVuZChTdHJpbmc6OmFkb3B0KG9wZW5UYWcpKTsKKyAgICBh
cHBlbmRTdHJpbmcoc3R5bGVOb2RlQ2xvc2VUYWcoaXNCbG9jaykpOworfQorCit2b2lkIFN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFZlY3RvcjxVQ2hhcj4m
IG91dCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCBpc0Jsb2NrKQorewogICAgIC8vIEFsbCB0ZXh0LWRlY29yYXRpb24tcmVsYXRlZCBlbGVtZW50
cyBzaG91bGQgaGF2ZSBiZWVuIHRyZWF0ZWQgYXMgc3BlY2lhbCBhbmNlc3RvcnMKICAgICAvLyBJ
ZiB3ZSBldmVyIGhpdCB0aGlzIEFTU0VSVCwgd2Ugc2hvdWxkIGV4cG9ydCBTdHlsZUNoYW5nZSBp
biBBcHBseVN0eWxlQ29tbWFuZCBhbmQgdXNlIGl0IGhlcmUKICAgICBBU1NFUlQocHJvcGVydHlN
aXNzaW5nT3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikgJiYg
cHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCBkaXZTdHlsZSwgKCI8ZGl2IHN0eWxlPVwiIikpOworICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RyaW5nLCBzdHlsZVNwYW5PcGVuLCAoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0
eWxlU3BhbkNsYXNzICJcIiBzdHlsZT1cIiIpKTsKKyAgICBhcHBlbmQob3V0LCBpc0Jsb2NrID8g
ZGl2U3R5bGUgOiBzdHlsZVNwYW5PcGVuKTsKKyAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQs
IHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKKyAgICBvdXQu
YXBwZW5kKCdcIicpOworICAgIG91dC5hcHBlbmQoJz4nKTsKK30KKworY29uc3QgU3RyaW5nIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlzQmxvY2spCit7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGRpdkNsb3NlLCAoIjwvZGl2
PiIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5bGVTcGFuT3Bl
biwgKCI8c3BhbiBjbGFzcz1cIiIgQXBwbGVTdHlsZVNwYW5DbGFzcyAiXCIgc3R5bGU9XCIiKSk7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0eWxlU3BhbkNsb3NlLCAo
Ijwvc3Bhbj4iKSk7Ci0gICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOwotICAgIGFwcGVuZChvcGVu
VGFnLCBpc0Jsb2NrID8gZGl2U3R5bGUgOiBzdHlsZVNwYW5PcGVuKTsKLSAgICBhcHBlbmRBdHRy
aWJ1dGVWYWx1ZShvcGVuVGFnLCBzdHlsZS0+Y3NzVGV4dCgpLCBkb2N1bWVudC0+aXNIVE1MRG9j
dW1lbnQoKSk7Ci0gICAgb3BlblRhZy5hcHBlbmQoJ1wiJyk7Ci0gICAgb3BlblRhZy5hcHBlbmQo
Jz4nKTsKLSAgICBtX3JldmVyc2VkUHJlY2VkaW5nTWFya3VwLmFwcGVuZChTdHJpbmc6OmFkb3B0
KG9wZW5UYWcpKTsKLSAgICBhcHBlbmRTdHJpbmcoaXNCbG9jayA/IGRpdkNsb3NlIDogc3R5bGVT
cGFuQ2xvc2UpOworICAgIHJldHVybiBpc0Jsb2NrID8gZGl2Q2xvc2UgOiBzdHlsZVNwYW5DbG9z
ZTsKIH0KIAogU3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdWx0cygpCkBA
IC0xOTcsMTEgKzIyMSwzMSBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgYm9vbCB3
cmFwcGluZ1NwYW4gPSBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUodGV4dCk7CisgICAgaWYgKHdy
YXBwaW5nU3BhbikgeworICAgICAgICBtX3dyYXBwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZSh0ZXh0LCBFZGl0aW5nU3R5bGU6OkluaGVyaXRhYmxlUHJvcGVydGllc0FuZEJhY2tncm91
bmRDb2xvckluRWZmZWN0KTsKKworICAgICAgICAvLyBTdHlsZXMgdGhhdCBNYWlsIGJsb2NrcXVv
dGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcGxhY2VkIG9uIHRoZSBNYWlsIGJsb2NrcXVv
dGUsCisgICAgICAgIC8vIHRvIGhlbHAgdXMgZGlmZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMgZnJv
bSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxpZWQuCisgICAgICAgIC8vIFRoaXMgaGVscHMg
dXMgZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJpZ2h0
LgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPnJlbW92ZVN0eWxlQWRkZWRCeU5vZGUoZW5jbG9z
aW5nTm9kZU9mVHlwZShwb3NpdGlvbkJlZm9yZU5vZGUodGV4dCksIGlzTWFpbEJsb2NrcXVvdGUs
IENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7CisKKyAgICAgICAgLy8gRG9uJ3QgcHV0IC13ZWJr
aXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QgaW4gc2VyaWFsaXplZCBtYXJrdXAKKyAgICAg
ICAgbV93cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcygpOwor
CisgICAgICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsKKyAgICAgICAgYXBwZW5kU3R5bGVOb2Rl
T3BlblRhZyhvcGVuVGFnLCBtX3dyYXBwaW5nU3R5bGUtPnN0eWxlKCksIHRleHQtPmRvY3VtZW50
KCkpOworICAgICAgICBhcHBlbmQob3V0LCBTdHJpbmc6OmFkb3B0KG9wZW5UYWcpKTsKKyAgICB9
CisKICAgICBib29sIHVzZVJlbmRlcmVkVGV4dCA9ICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJz
dFBvc2l0aW9uSW5Ob2RlKHRleHQpLCBzZWxlY3RUYWcpOwogICAgIFN0cmluZyBjb250ZW50ID0g
dXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRleHQsIG1fcmFuZ2UpIDogc3RyaW5nVmFs
dWVGb3JSYW5nZSh0ZXh0LCBtX3JhbmdlKTsKICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcjsKICAg
ICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoYnVmZmVyLCBjb250ZW50LmNoYXJh
Y3RlcnMoKSwgY29udGVudC5sZW5ndGgoKSwgRW50aXR5TWFza0luUENEQVRBKTsKICAgICBhcHBl
bmQob3V0LCBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KFN0cmluZzo6YWRvcHQo
YnVmZmVyKSwgdGV4dCkpOworCisgICAgaWYgKHdyYXBwaW5nU3BhbikKKyAgICAgICAgYXBwZW5k
KG91dCwgc3R5bGVOb2RlQ2xvc2VUYWcoKSk7CiB9CiAgICAgCiBTdHJpbmcgU3R5bGVkTWFya3Vw
QWNjdW11bGF0b3I6OnJlbmRlcmVkVGV4dChjb25zdCBOb2RlKiBub2RlLCBjb25zdCBSYW5nZSog
cmFuZ2UpCkBAIC0yNTUsOCArMjk5LDMxIEBACiAKICAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxl
bWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUpKSB7CiAgICAg
ICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUodG9I
VE1MRWxlbWVudChlbGVtZW50KS0+Z2V0SW5saW5lU3R5bGVEZWNsKCkpOwotICAgICAgICBpZiAo
c2hvdWxkQW5ub3RhdGUoKSkKKyAgICAgICAgaWYgKHNob3VsZEFubm90YXRlKCkpIHsKICAgICAg
ICAgICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbih0b0hUTUxF
bGVtZW50KGVsZW1lbnQpKTsKKworICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJtYXRj
aGVkWyVzXVxuIiwgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLT5jc3NUZXh0KCkuYXNjaWkoKS5kYXRh
KCkpOworICAgICAgICAgICAgLy8gZnByaW50ZihzdGRlcnIsICJpbmxpbmUrbWF0Y2hlZFslc11c
biIsIHN0eWxlLT5jc3NUZXh0KCkuYXNjaWkoKS5kYXRhKCkpOworCisgICAgICAgICAgICBpZiAo
c2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxlKGVsZW1lbnQpKSB7CisgICAgICAgICAgICAgICAgLy8g
ZnByaW50ZihzdGRlcnIsICJ3cmFwcGluZ1slc11cbiIsIG1fd3JhcHBpbmdTdHlsZS0+c3R5bGUo
KS0+Y3NzVGV4dCgpLmFzY2lpKCkuZGF0YSgpKTsKKworICAgICAgICAgICAgICAgIG1fd3JhcHBp
bmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQsIEVkaXRpbmdTdHlsZTo6SW5o
ZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOworCisgICAgICAg
ICAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRlIHNob3Vs
ZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLAorICAgICAgICAgICAgICAg
IC8vIHRvIGhlbHAgdXMgZGlmZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQg
dGhlIHVzZXIgaGFzIGFwcGxpZWQuCisgICAgICAgICAgICAgICAgLy8gVGhpcyBoZWxwcyB1cyBn
ZXQgdGhlIGNvbG9yIG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQuCisg
ICAgICAgICAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVu
Y2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKGVsZW1lbnQpLCBp
c01haWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpOworCisgICAgICAgICAg
ICAgICAgLy8gRG9uJ3QgcHV0IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QgaW4g
c2VyaWFsaXplZCBtYXJrdXAKKyAgICAgICAgICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPmNvbGxh
cHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCk7CisKKyAgICAgICAgICAgICAgICBib29sIGFy
ZU92ZXJyaWRlc09uQ29uZmxpY3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICBzdHlsZS0+c3R5
bGUoKS0+bWVyZ2UobV93cmFwcGluZ1N0eWxlLT5zdHlsZSgpLCBhcmVPdmVycmlkZXNPbkNvbmZs
aWN0KTsKKworICAgICAgICAgICAgICAgIC8vIGZwcmludGYoc3RkZXJyLCAib3ZlcmFsbFslc11c
biIsIHN0eWxlLT5jc3NUZXh0KCkuYXNjaWkoKS5kYXRhKCkpOworICAgICAgICAgICAgfQorICAg
ICAgICB9CiAgICAgICAgIGlmIChhZGREaXNwbGF5SW5saW5lKQogICAgICAgICAgICAgc3R5bGUt
PnN0eWxlKCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmUs
IHRydWUpOwogCkBAIC0yNzgsNiArMzQ1LDI2IEBACiAKIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3Vt
dWxhdG9yOjpzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQpCiB7
CisgICAgaWYgKCFtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpIHsKKyAgICAgICAgTm9kZSog
bGFzdENsb3NlZCA9IHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKHN0YXJ0Tm9kZSwgcGFz
dEVuZCwgZmFsc2UpOworICAgICAgICBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSBsYXN0
Q2xvc2VkOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBwYXJlbnRPZkhpZ2hlc3ROb2RlID0gbV9o
aWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID8gbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkLT5w
YXJlbnROb2RlKCkgOiAwOworICAgIGlmIChwYXJlbnRPZkhpZ2hlc3ROb2RlKSB7CisgICAgICAg
IG1fd3JhcHBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBhcmVudE9mSGlnaGVzdE5v
ZGUsIEVkaXRpbmdTdHlsZTo6SW5oZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dyb3VuZENvbG9y
SW5FZmZlY3QpOworCisgICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29u
dHJpYnV0ZSBzaG91bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwKKyAg
ICAgICAgLy8gdG8gaGVscCB1cyBkaWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBmcm9tIG9uZXMg
dGhhdCB0aGUgdXNlciBoYXMgYXBwbGllZC4KKyAgICAgICAgLy8gVGhpcyBoZWxwcyB1cyBnZXQg
dGhlIGNvbG9yIG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQuCisgICAg
ICAgIG1fd3JhcHBpbmdTdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdOb2Rl
T2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk5vZGUocGFyZW50T2ZIaWdoZXN0Tm9kZSksIGlzTWFpbEJs
b2NrcXVvdGUsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7CisgICAgfQorCisgICAgcmV0dXJu
IHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKHN0YXJ0Tm9kZSwgcGFzdEVuZCwgdHJ1ZSk7
Cit9CisKK05vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0cmF2ZXJzZU5vZGVzRm9yU2Vy
aWFsaXphdGlvbihOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQsIGJvb2wgc2hvdWxkRW1p
dCkKK3sKICAgICBWZWN0b3I8Tm9kZSo+IGFuY2VzdG9yc1RvQ2xvc2U7CiAgICAgTm9kZSogbmV4
dDsKICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gMDsKQEAgLTMwNCwxMSArMzkxLDEzIEBACiAgICAg
ICAgICAgICAgICAgbmV4dCA9IHBhc3RFbmQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIG1hcmt1cCBpZiB3ZSdyZSBub3Qgc2tpcHBpbmcgdGhl
IGRlc2NlbmRhbnRzCi0gICAgICAgICAgICBhcHBlbmRTdGFydFRhZyhuKTsKKyAgICAgICAgICAg
IGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgIGFwcGVuZFN0YXJ0VGFnKG4pOwogCiAg
ICAgICAgICAgICAvLyBJZiBub2RlIGhhcyBubyBjaGlsZHJlbiwgY2xvc2UgdGhlIHRhZyBub3cu
CiAgICAgICAgICAgICBpZiAoIW4tPmNoaWxkTm9kZUNvdW50KCkpIHsKLSAgICAgICAgICAgICAg
ICBhcHBlbmRFbmRUYWcobik7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhuKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xv
c2VkID0gbjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgb3BlbmVkVGFn
ID0gdHJ1ZTsKQEAgLTMyNSw3ICs0MTQsOCBAQAogICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9
IHBhc3RFbmQgJiYgbmV4dC0+aXNEZXNjZW5kYW50T2YoYW5jZXN0b3IpKQogICAgICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAvLyBOb3QgYXQgdGhlIGVuZCBvZiB0aGUg
cmFuZ2UsIGNsb3NlIGFuY2VzdG9ycyB1cCB0byBzaWJsaW5nIG9mIG5leHQgbm9kZS4KLSAgICAg
ICAgICAgICAgICBhcHBlbmRFbmRUYWcoYW5jZXN0b3IpOworICAgICAgICAgICAgICAgIGlmIChz
aG91bGRFbWl0KQorICAgICAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWcoYW5jZXN0b3IpOwog
ICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBhbmNlc3RvcjsKICAgICAgICAgICAgICAgICBh
bmNlc3RvcnNUb0Nsb3NlLnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgIH0KQEAgLTM0MCw3ICs0
MzAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAg
ICAgICAgIC8vIG9yIGIpIGFuY2VzdG9ycyB0aGF0IHdlIG5ldmVyIGVuY291bnRlcmVkIGR1cmlu
ZyBhIHByZS1vcmRlciB0cmF2ZXJzYWwgc3RhcnRpbmcgYXQgc3RhcnROb2RlOgogICAgICAgICAg
ICAgICAgICAgICBBU1NFUlQoc3RhcnROb2RlLT5pc0Rlc2NlbmRhbnRPZihwYXJlbnQpKTsKLSAg
ICAgICAgICAgICAgICAgICAgd3JhcFdpdGhOb2RlKHBhcmVudCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFdpdGhOb2Rl
KHBhcmVudCk7CiAgICAgICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBwYXJlbnQ7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTEzLDcgKzYwNCwxMyBAQAogCiAgICAg
ZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAg
U3R5bGVkTWFya3VwQWNjdW11bGF0b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVV
UkxzLCBzaG91bGRBbm5vdGF0ZSwgdXBkYXRlZFJhbmdlLmdldCgpKTsKKyAgICBOb2RlKiBib2R5
ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNlc3Rv
ciksIGJvZHlUYWcpOworICAgIE5vZGUqIGZ1bGx5U2VsZWN0ZWRSb290ID0gMDsKKyAgICAvLyBG
SVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90IGp1c3QgdGhl
IGJvZHkuCisgICAgaWYgKGJvZHkgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbjo6
c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGJvZHkpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0
KCksIHJhbmdlKSkKKyAgICAgICAgZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5OworICAgIE5vZGUq
IHNwZWNpYWxDb21tb25BbmNlc3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCh1cGRh
dGVkUmFuZ2UuZ2V0KCksIGZ1bGx5U2VsZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0ZSk7CisgICAg
U3R5bGVkTWFya3VwQWNjdW11bGF0b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVV
UkxzLCBzaG91bGRBbm5vdGF0ZSwgdXBkYXRlZFJhbmdlLmdldCgpLCBzcGVjaWFsQ29tbW9uQW5j
ZXN0b3IpOwogICAgIE5vZGUqIHBhc3RFbmQgPSB1cGRhdGVkUmFuZ2UtPnBhc3RMYXN0Tm9kZSgp
OwogCiAgICAgTm9kZSogc3RhcnROb2RlID0gdXBkYXRlZFJhbmdlLT5maXJzdE5vZGUoKTsKQEAg
LTUzOSwxNCArNjM2LDYgQEAKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogCi0gICAgTm9k
ZSogYm9keSA9IGVuY2xvc2luZ05vZGVXaXRoVGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUoY29tbW9u
QW5jZXN0b3IpLCBib2R5VGFnKTsKLSAgICBOb2RlKiBmdWxseVNlbGVjdGVkUm9vdCA9IDA7Ci0g
ICAgLy8gRklYTUU6IERvIHRoaXMgZm9yIGFsbCBmdWxseSBzZWxlY3RlZCBibG9ja3MsIG5vdCBq
dXN0IHRoZSBib2R5LgotICAgIGlmIChib2R5ICYmIGFyZVJhbmdlc0VxdWFsKFZpc2libGVTZWxl
Y3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShib2R5KS50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpLCByYW5nZSkpCi0gICAgICAgIGZ1bGx5U2VsZWN0ZWRSb290ID0gYm9keTsKLQot
ICAgIE5vZGUqIHNwZWNpYWxDb21tb25BbmNlc3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1h
cmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCksIGZ1bGx5U2VsZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0
ZSk7Ci0KICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMo
c3RhcnROb2RlLCBwYXN0RW5kKTsKIAogICAgIGlmIChzcGVjaWFsQ29tbW9uQW5jZXN0b3IgJiYg
bGFzdENsb3NlZCkgewpAQCAtNTg2LDYgKzY3NSw3IEBACiAgICAgICAgIH0KICAgICB9CiAKKy8q
CiAgICAgLy8gQWRkIGEgd3JhcHBlciBzcGFuIHdpdGggdGhlIHN0eWxlcyB0aGF0IGFsbCBvZiB0
aGUgbm9kZXMgaW4gdGhlIG1hcmt1cCBpbmhlcml0LgogICAgIENvbnRhaW5lck5vZGUqIHBhcmVu
dE9mTGFzdENsb3NlZCA9IGxhc3RDbG9zZWQgPyBsYXN0Q2xvc2VkLT5wYXJlbnROb2RlKCkgOiAw
OwogICAgIGlmIChwYXJlbnRPZkxhc3RDbG9zZWQgJiYgcGFyZW50T2ZMYXN0Q2xvc2VkLT5yZW5k
ZXJlcigpKSB7CkBAIC01OTksMTMgKzY4OSwxNiBAQAogICAgICAgICBpZiAoIXN0eWxlLT5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBhY2N1bXVsYXRvci53cmFwV2l0aFN0eWxlTm9kZShzdHlsZS0+
c3R5bGUoKSwgZG9jdW1lbnQpOwogICAgIH0KLQorKi8KICAgICAvLyBGSVhNRTogVGhlIGludGVy
Y2hhbmdlIG5ld2xpbmUgc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgYmxvY2sgdGhhdCBpdCdzIGlu
LCBub3QgYWZ0ZXIgYWxsIG9mIHRoZSBjb250ZW50LCB1bmNvbmRpdGlvbmFsbHkuCiAgICAgaWYg
KHNob3VsZEFubm90YXRlID09IEFubm90YXRlRm9ySW50ZXJjaGFuZ2UgJiYgbmVlZEludGVyY2hh
bmdlTmV3bGluZUFmdGVyKHZpc2libGVFbmQucHJldmlvdXMoKSkpCiAgICAgICAgIGFjY3VtdWxh
dG9yLmFwcGVuZFN0cmluZyhpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcpOwogCiAgICAgaWYgKGRl
bGV0ZUJ1dHRvbikKICAgICAgICAgZGVsZXRlQnV0dG9uLT5lbmFibGUoKTsKKyAgICAKKyAgICBT
dHJpbmcgciA9IGFjY3VtdWxhdG9yLnRha2VSZXN1bHRzKCk7CisgICAgZnByaW50ZihzdGRlcnIs
ICJbJXNdXG4iLCByLmFzY2lpKCkuZGF0YSgpKTsKIAogICAgIHJldHVybiBhY2N1bXVsYXRvci50
YWtlUmVzdWx0cygpOwogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5
bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmNwcAkocmV2aXNpb24gODc0MDMpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTkwLDcgKzkwLDcgQEAKICAgICByZXR1cm4gY29w
eUVkaXRpbmdQcm9wZXJ0aWVzKHN0eWxlLmdldCgpKTsKIH0KIAotc3RhdGljIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHJvcGVydGllc05vdEluKENTU1N0eWxlRGVjbGFy
YXRpb24qIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIENTU1N0eWxlRGVjbGFyYXRpb24q
IGJhc2VTdHlsZSk7CitzdGF0aWMgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBn
ZXRQcm9wZXJ0aWVzTm90SW4oRG9jdW1lbnQqLCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZVdp
dGhSZWR1bmRhbnRQcm9wZXJ0aWVzLCBDU1NTdHlsZURlY2xhcmF0aW9uKiBiYXNlU3R5bGUpOwog
CiBjbGFzcyBIVE1MRWxlbWVudEVxdWl2YWxlbnQgewogcHVibGljOgpAQCAtMzAzLDI4ICszMDMs
MzEgQEAKIHsKIH0KIAotc3RhdGljIFJHQkEzMiBjc3NWYWx1ZVRvUkdCQShDU1NWYWx1ZSogY29s
b3JWYWx1ZSkKK3N0YXRpYyBSR0JBMzIgY3NzVmFsdWVUb1JHQkEoRG9jdW1lbnQqIGRvY3VtZW50
LCBDU1NWYWx1ZSogY29sb3JWYWx1ZSkKIHsKICAgICBpZiAoIWNvbG9yVmFsdWUgfHwgIWNvbG9y
VmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIENvbG9yOjp0cmFuc3Bh
cmVudDsKLSAgICAKKwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVDb2xvciA9IHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY29sb3JWYWx1ZSk7CiAgICAgaWYgKHByaW1p
dGl2ZUNvbG9yLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SR0JD
T0xPUikKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUNvbG9yLT5nZXRSR0JBMzJWYWx1ZSgpOwot
ICAgIAorCisgICAgaWYgKGRvY3VtZW50ICYmIHByaW1pdGl2ZUNvbG9yLT5wcmltaXRpdmVUeXBl
KCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAmJiBwcmltaXRpdmVDb2xvci0+Z2V0
SWRlbnQoKSA9PSBDU1NWYWx1ZVdlYmtpdExpbmspCisgICAgICAgIHJldHVybiBkb2N1bWVudC0+
bGlua0NvbG9yKCkucmdiKCk7CisKICAgICBSR0JBMzIgcmdiYSA9IDA7CiAgICAgQ1NTUGFyc2Vy
OjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yVmFsdWUtPmNzc1RleHQoKSk7CiAgICAgcmV0dXJuIHJn
YmE7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUkdCQTMyIGdldFJHQkFGb250Q29sb3IoQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUpCitzdGF0aWMgaW5saW5lIFJHQkEzMiBnZXRSR0JBRm9udENvbG9y
KERvY3VtZW50KiBkb2N1bWVudCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCiB7Ci0gICAg
cmV0dXJuIGNzc1ZhbHVlVG9SR0JBKHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3Bl
cnR5Q29sb3IpLmdldCgpKTsKKyAgICByZXR1cm4gY3NzVmFsdWVUb1JHQkEoZG9jdW1lbnQsIHN0
eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Q29sb3IpLmdldCgpKTsKIH0KIAot
c3RhdGljIGlubGluZSBSR0JBMzIgcmdiYUJhY2tncm91bmRDb2xvckluRWZmZWN0KE5vZGUqIG5v
ZGUpCitzdGF0aWMgaW5saW5lIFJHQkEzMiByZ2JhQmFja2dyb3VuZENvbG9ySW5FZmZlY3QoRG9j
dW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQogewotICAgIHJldHVybiBjc3NWYWx1ZVRvUkdC
QShiYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChub2RlKS5nZXQoKSk7CisgICAgcmV0dXJuIGNzc1Zh
bHVlVG9SR0JBKGRvY3VtZW50LCBiYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChub2RlKS5nZXQoKSk7
CiB9CiAKIHZvaWQgRWRpdGluZ1N0eWxlOjppbml0KE5vZGUqIG5vZGUsIFByb3BlcnRpZXNUb0lu
Y2x1ZGUgcHJvcGVydGllc1RvSW5jbHVkZSkKQEAgLTU0OSw3ICs1NTIsMTAgQEAKICAgICBpZiAo
IXRleHREZWNvcmF0aW9uc0luRWZmZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX211dGFi
bGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgdGV4dERlY29y
YXRpb25zSW5FZmZlY3QtPmNzc1RleHQoKSwgbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5UHJp
b3JpdHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikpOworICAgIGlmICh0ZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdC0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFBy
b3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0aW9uc0luRWZmZWN0
LT5jc3NUZXh0KCksIG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KENTU1Byb3Bl
cnR5VGV4dERlY29yYXRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5y
ZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKICAgICBtX211dGFibGVT
dHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCk7CiB9CiAKQEAgLTU2NSw3ICs1NzEsOCBAQAogVHJpU3RhdGUgRWRpdGluZ1N0eWxlOjp0
cmlTdGF0ZU9mU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVUb0NvbXBhcmUsIFNob3Vs
ZElnbm9yZVRleHRPbmx5UHJvcGVydGllcyBzaG91bGRJZ25vcmVUZXh0T25seVByb3BlcnRpZXMp
IGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IHRha2UgY2FyZSBvZiBiYWNrZ3JvdW5kLWNvbG9yIGlu
IGVmZmVjdAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGlmZmVyZW5j
ZSA9IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5bGVUb0NvbXBh
cmUpOworICAgIC8vIEZJWE1FOiBnZXRQcm9wZXJ0aWVzTm90SW4gbmVlZHMgZG9jdW1lbnQKKyAg
ICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRpZmZlcmVuY2UgPSBnZXRQcm9w
ZXJ0aWVzTm90SW4oMCwgbV9tdXRhYmxlU3R5bGUuZ2V0KCksIHN0eWxlVG9Db21wYXJlKTsKIAog
ICAgIGlmIChzaG91bGRJZ25vcmVUZXh0T25seVByb3BlcnRpZXMgPT0gSWdub3JlVGV4dE9ubHlQ
cm9wZXJ0aWVzKQogICAgICAgICBkaWZmZXJlbmNlLT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQodGV4
dE9ubHlQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRleHRPbmx5UHJvcGVydGllcykpOwpA
QCAtNzE4LDcgKzcyNSw4IEBACiAKIGJvb2wgRWRpdGluZ1N0eWxlOjpzdHlsZUlzUHJlc2VudElu
Q29tcHV0ZWRTdHlsZU9mTm9kZShOb2RlKiBub2RlKSBjb25zdAogewotICAgIHJldHVybiAhbV9t
dXRhYmxlU3R5bGUgfHwgIWdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwg
Y29tcHV0ZWRTdHlsZShub2RlKS5nZXQoKSktPmxlbmd0aCgpOworICAgIEFTU0VSVChub2RlKTsK
KyAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8ICFnZXRQcm9wZXJ0aWVzTm90SW4obm9kZS0+
ZG9jdW1lbnQoKSwgbV9tdXRhYmxlU3R5bGUuZ2V0KCksIGNvbXB1dGVkU3R5bGUobm9kZSkuZ2V0
KCkpLT5sZW5ndGgoKTsKIH0KIAogdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0FwcGx5QXQo
Y29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24g
c2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uKQpAQCAtNzM4LDEyICs3NDYsMTQgQEAKICAg
ICAgICAgZGlyZWN0aW9uID0gbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NT
UHJvcGVydHlEaXJlY3Rpb24pOwogICAgIH0KIAorICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHBv
c2l0aW9uLmFuY2hvck5vZGUoKSA/IHBvc2l0aW9uLmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSA6
IDA7CisKICAgICBzdHlsZS0+bV9tdXRhYmxlU3R5bGUtPmRpZmYobV9tdXRhYmxlU3R5bGUuZ2V0
KCkpOwotICAgIGlmIChnZXRSR0JBRm9udENvbG9yKG1fbXV0YWJsZVN0eWxlLmdldCgpKSA9PSBn
ZXRSR0JBRm9udENvbG9yKHN0eWxlLT5tX211dGFibGVTdHlsZS5nZXQoKSkpCisgICAgaWYgKGdl
dFJHQkFGb250Q29sb3IoZG9jdW1lbnQsIG1fbXV0YWJsZVN0eWxlLmdldCgpKSA9PSBnZXRSR0JB
Rm9udENvbG9yKGRvY3VtZW50LCBzdHlsZS0+bV9tdXRhYmxlU3R5bGUuZ2V0KCkpKQogICAgICAg
ICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvcik7CiAKICAg
ICBpZiAoaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3IobV9tdXRhYmxlU3R5bGUuZ2V0KCkp
Ci0gICAgICAgIHx8IGNzc1ZhbHVlVG9SR0JBKG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5nZXQoKSkgPT0gcmdiYUJhY2tncm91
bmRDb2xvckluRWZmZWN0KHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSkpCisgICAgICAgIHx8IGNz
c1ZhbHVlVG9SR0JBKGRvY3VtZW50LCBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1
ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuZ2V0KCkpID09IHJnYmFCYWNrZ3JvdW5kQ29s
b3JJbkVmZmVjdChkb2N1bWVudCwgcG9zaXRpb24uY29udGFpbmVyTm9kZSgpKSkKICAgICAgICAg
bV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9y
KTsKIAogICAgIGlmICh1bmljb2RlQmlkaSAmJiB1bmljb2RlQmlkaS0+aXNQcmltaXRpdmVWYWx1
ZSgpKSB7CkBAIC04MDksMTEgKzgxOSwxMCBAQAogICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGVs
ZW1lbnQsIHVuc2lnbmVkIGZpbHRlcikKIHsKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IHN0eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwot
ICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hlZFJ1bGVzID0gZWxlbWVudC0+ZG9jdW1lbnQo
KS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LAotICAgICAg
ICBDU1NTdHlsZVNlbGVjdG9yOjpBdXRob3JDU1NSdWxlcyB8IENTU1N0eWxlU2VsZWN0b3I6OkNy
b3NzT3JpZ2luQ1NTUnVsZXMpOworICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hlZFJ1bGVz
ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZVJ1bGVzRm9yRWxl
bWVudChlbGVtZW50LCBmaWx0ZXIpOwogICAgIGlmIChtYXRjaGVkUnVsZXMpIHsKICAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoZWRSdWxlcy0+bGVuZ3RoKCk7IGkrKykgewog
ICAgICAgICAgICAgaWYgKG1hdGNoZWRSdWxlcy0+aXRlbShpKS0+dHlwZSgpID09IENTU1J1bGU6
OlNUWUxFX1JVTEUpIHsKQEAgLTgyOCw3ICs4MzcsOCBAQAogCiB2b2lkIEVkaXRpbmdTdHlsZTo6
bWVyZ2VTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50KiBlbGVtZW50KQogewotICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5
bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICBSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1h
dGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6
QXV0aG9yQ1NTUnVsZXMgfCBDU1NTdHlsZVNlbGVjdG9yOjpDcm9zc09yaWdpbkNTU1J1bGVzKTsK
ICAgICAvLyBTdHlsZXMgZnJvbSB0aGUgaW5saW5lIHN0eWxlIGRlY2xhcmF0aW9uLCBoZWxkIGlu
IHRoZSB2YXJpYWJsZSAic3R5bGUiLCB0YWtlIHByZWNlZGVuY2UgCiAgICAgLy8gb3ZlciB0aG9z
ZSBmcm9tIG1hdGNoZWQgcnVsZXMuCiAgICAgaWYgKG1fbXV0YWJsZVN0eWxlKQpAQCAtODYxLDE2
ICs4NzEsNDEgQEAKICAgICBtX211dGFibGVTdHlsZS0+bWVyZ2UoZnJvbUNvbXB1dGVkU3R5bGUu
Z2V0KCkpOwogfQogCit2b2lkIHNob3dTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKik7CisKK3Zv
aWQgc2hvd1N0eWxlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQoreworICAgIGlmIChzdHls
ZSkKKyAgICAgICAgZnByaW50ZihzdGRlcnIsICJbJXNdXG4iLCBzdHlsZS0+Y3NzVGV4dCgpLmFz
Y2lpKCkuZGF0YSgpKTsKK30KKwogdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1
bGVzKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQpOwogICAg
IGlmICghbV9tdXRhYmxlU3R5bGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5bGVGcm9t
TWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50KTsKLSAgICBpZiAoIXN0eWxlRnJvbU1hdGNo
ZWRSdWxlcykKLSAgICAgICAgcmV0dXJuOworICAgIC8vIDEuIFJlbW92ZSBzdHlsZSBmcm9tIG1h
dGNoZWQgcnVsZXMgYmVjYXVzZSBzdHlsZSByZW1haW4gd2l0aG91dCByZXBlYXRpbmcgaXQgaW4g
aW5saW5lIHN0eWxlIGRlY2xhcmF0aW9uCisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBzdHlsZUZyb21NYXRjaGVkUnVsZXMgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JF
bGVtZW50KGVsZW1lbnQsCisgICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OlVBQW5kVXNlckNTU1J1
bGVzIHwgQ1NTU3R5bGVTZWxlY3Rvcjo6QXV0aG9yQ1NTUnVsZXMgfCBDU1NTdHlsZVNlbGVjdG9y
OjpDcm9zc09yaWdpbkNTU1J1bGVzKTsKKyAgICBpZiAoc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzKQor
ICAgICAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbihlbGVtZW50LT5kb2N1
bWVudCgpLCBtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLmdldCgp
KTsKIAotICAgIG1fbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVydGllc05vdEluKG1fbXV0YWJsZVN0
eWxlLmdldCgpLCBzdHlsZUZyb21NYXRjaGVkUnVsZXMuZ2V0KCkpOworICAgIC8vIDIuIFJlbW92
ZSBzdHlsZSBwcmVzZW50IGluIHBhcmVudCBhbmQgbm90IG92ZXJyaWRlbiBieSBtYXRjaGVkIHJ1
bGVzLgorICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGNvbXB1dGVkU3R5bGUgPSBFZGl0aW5nU3R5
bGU6OmNyZWF0ZShlbGVtZW50LT5wYXJlbnROb2RlKCksIEluaGVyaXRhYmxlUHJvcGVydGllc0Fu
ZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKyAgICBpZiAoY29tcHV0ZWRTdHlsZS0+bV9tdXRh
YmxlU3R5bGUpIHsKKyAgICAgICAgaWYgKHN0eWxlRnJvbU1hdGNoZWRSdWxlcyAmJiBzdHlsZUZy
b21NYXRjaGVkUnVsZXMtPmxlbmd0aCgpKSB7CisgICAgICAgICAgICBWZWN0b3I8aW50PiBwcm9w
ZXJ0aWVzRnJvbU1hdGNoZWRSdWxlcyhzdHlsZUZyb21NYXRjaGVkUnVsZXMtPmxlbmd0aCgpKTsK
KyAgICAgICAgICAgIHNpemVfdCBpID0gMDsKKyAgICAgICAgICAgIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBlbmQgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXMtPmVu
ZCgpOworICAgICAgICAgICAgZm9yIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3Rf
aXRlcmF0b3IgaXQgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXMtPmJlZ2luKCk7IGl0ICE9IGVuZDsg
KytpdCwgKytpKQorICAgICAgICAgICAgICAgIHByb3BlcnRpZXNGcm9tTWF0Y2hlZFJ1bGVzW2ld
ID0gaXQtPmlkKCk7CisKKyAgICAgICAgICAgIGNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxl
LT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQocHJvcGVydGllc0Zyb21NYXRjaGVkUnVsZXMuZGF0YSgp
LCBwcm9wZXJ0aWVzRnJvbU1hdGNoZWRSdWxlcy5zaXplKCkpOworICAgICAgICB9CisgICAgCisg
ICAgICAgIG1fbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVydGllc05vdEluKGVsZW1lbnQtPmRvY3Vt
ZW50KCksIG1fbXV0YWJsZVN0eWxlLmdldCgpLCBjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHls
ZS5nZXQoKSk7ICAgICAgICAKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lkIHJlY29uY2lsZVRleHRE
ZWNvcmF0aW9uUHJvcGVydGllcyhDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCkBA
IC05MDQsNyArOTM5LDcgQEAKIAogICAgIFJlZlB0cjxDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRp
b24+IGNvbXB1dGVkU3R5bGUgPSBwb3NpdGlvbi5jb21wdXRlZFN0eWxlKCk7CiAgICAgLy8gRklY
TUU6IHRha2UgY2FyZSBvZiBiYWNrZ3JvdW5kLWNvbG9yIGluIGVmZmVjdAotICAgIFJlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVydGllc05v
dEluKHN0eWxlLT5zdHlsZSgpLCBjb21wdXRlZFN0eWxlLmdldCgpKTsKKyAgICBSZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG11dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJ
bihkb2N1bWVudCwgc3R5bGUtPnN0eWxlKCksIGNvbXB1dGVkU3R5bGUuZ2V0KCkpOwogCiAgICAg
cmVjb25jaWxlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKG11dGFibGVTdHlsZS5nZXQoKSk7CiAg
ICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNob3VsZFN0eWxlV2l0aENTUygp
KQpAQCAtOTc5LDcgKzEwMTQsNyBAQAogICAgIH0KIAogICAgIGlmIChzdHlsZS0+Z2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSkgewotICAgICAgICBtX2FwcGx5Rm9udENvbG9y
ID0gQ29sb3IoZ2V0UkdCQUZvbnRDb2xvcihzdHlsZSkpLnNlcmlhbGl6ZWQoKTsKKyAgICAgICAg
bV9hcHBseUZvbnRDb2xvciA9IENvbG9yKGdldFJHQkFGb250Q29sb3IoZG9jdW1lbnQsIHN0eWxl
KSkuc2VyaWFsaXplZCgpOwogICAgICAgICBzdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVy
dHlDb2xvcik7CiAgICAgfQogCkBAIC0xMDYzLDcgKzEwOTgsNyBAQAogICAgIHJldHVybiBDU1NW
YWx1ZUludmFsaWQ7CiB9CiAKLVJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0
UHJvcGVydGllc05vdEluKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlV2l0aFJlZHVuZGFudFBy
b3BlcnRpZXMsIENTU1N0eWxlRGVjbGFyYXRpb24qIGJhc2VTdHlsZSkKK1JlZlB0cjxDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHJvcGVydGllc05vdEluKERvY3VtZW50KiBkb2N1bWVu
dCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywgQ1NT
U3R5bGVEZWNsYXJhdGlvbiogYmFzZVN0eWxlKQogewogICAgIEFTU0VSVChzdHlsZVdpdGhSZWR1
bmRhbnRQcm9wZXJ0aWVzKTsKICAgICBBU1NFUlQoYmFzZVN0eWxlKTsKQEAgLTEwNzgsNyArMTEx
Myw3IEBACiAgICAgaWYgKGZvbnRXZWlnaHRJc0JvbGQocmVzdWx0LmdldCgpKSA9PSBmb250V2Vp
Z2h0SXNCb2xkKGJhc2VTdHlsZSkpCiAgICAgICAgIHJlc3VsdC0+cmVtb3ZlUHJvcGVydHkoQ1NT
UHJvcGVydHlGb250V2VpZ2h0KTsKIAotICAgIGlmIChnZXRSR0JBRm9udENvbG9yKHJlc3VsdC5n
ZXQoKSkgPT0gZ2V0UkdCQUZvbnRDb2xvcihiYXNlU3R5bGUpKQorICAgIGlmIChnZXRSR0JBRm9u
dENvbG9yKGRvY3VtZW50LCByZXN1bHQuZ2V0KCkpID09IGdldFJHQkFGb250Q29sb3IoZG9jdW1l
bnQsIGJhc2VTdHlsZSkpCiAgICAgICAgIHJlc3VsdC0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVy
dHlDb2xvcik7CiAKICAgICBpZiAoZ2V0VGV4dEFsaWdubWVudChyZXN1bHQuZ2V0KCkpID09IGdl
dFRleHRBbGlnbm1lbnQoYmFzZVN0eWxlKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlzaW9uIDg3NDAzKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCSh3b3JraW5nIGNv
cHkpCkBAIC03OSw3ICs3OSw2IEBACiAgICAgCiAgICAgdm9pZCByZW1vdmVSZWR1bmRhbnRTdHls
ZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKCk7CiAgICAgdm9pZCBoYW5kbGVTdHlsZVNwYW5zKCk7
Ci0gICAgdm9pZCBjb3B5U3R5bGVUb0NoaWxkcmVuKE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBwYXJlbnRTdHlsZSk7CiAgICAgdm9pZCBoYW5kbGVQ
YXN0ZUFzUXVvdGF0aW9uTm9kZSgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOb2Rl
UHJlc2VydmluZ0NoaWxkcmVuKE5vZGUqKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95214</attachid>
            <date>2011-05-27 14:12:02 -0700</date>
            <delta_ts>2011-05-27 17:30:24 -0700</delta_ts>
            <desc>work in progress 3</desc>
            <filename>wip34564b</filename>
            <type>text/plain</type>
            <size>43251</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCShyZXZpc2lvbiA4NzUzMikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsNiArNDk3LDkg
QEAKICAgICAgICAgICAgIGlmIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogaW5saW5lU3R5
bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKSkgewogICAgICAgICAgICAgICAgIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5s
aW5lU3R5bGUpOwogICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUZy
b21SdWxlcyhlbGVtZW50KTsKKworLy8gICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnBy
ZXBhcmVUb0FwcGx5QXQocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoZWxlbWVudCkpOworCiAg
ICAgICAgICAgICAgICAgaWYgKCFuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKSB8fCAhbmV3SW5saW5l
U3R5bGUtPnN0eWxlKCktPmxlbmd0aCgpKQogICAgICAgICAgICAgICAgICAgICByZW1vdmVOb2Rl
QXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlQXR0cik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
bmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmxlbmd0aCgpIDwgaW5saW5lU3R5bGUtPmxlbmd0aCgp
KQpAQCAtNjExLDkgKzYxNCw2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIEF0IGNvcHkg
dGltZSwgV2ViS2l0IHdyYXBzIGNvcGllZCBjb250ZW50IGluIGEgc3BhbiB0aGF0IGNvbnRhaW5z
IHRoZSBzb3VyY2UgZG9jdW1lbnQncyAKLS8vIGRlZmF1bHQgc3R5bGVzLiAgSWYgdGhlIGNvcGll
ZCBSYW5nZSBpbmhlcml0cyBhbnkgb3RoZXIgc3R5bGVzIGZyb20gaXRzIGFuY2VzdG9ycywgd2Ug
cHV0IAotLy8gdGhvc2Ugc3R5bGVzIG9uIGEgc2Vjb25kIHNwYW4uCiAvLyBUaGlzIGZ1bmN0aW9u
IHJlbW92ZXMgcmVkdW5kYW50IHN0eWxlcyBmcm9tIHRob3NlIHNwYW5zLCBhbmQgcmVtb3ZlcyB0
aGUgc3BhbnMgaWYgYWxsIHRoZWlyIAogLy8gc3R5bGVzIGFyZSByZWR1bmRhbnQuIAogLy8gV2Ug
c2hvdWxkIHJlbW92ZSB0aGUgQXBwbGUtc3R5bGUtc3BhbiBjbGFzcyB3aGVuIHdlJ3JlIGRvbmUs
IHNlZSA8cmRhcjovL3Byb2JsZW0vNTY4NTYwMD4uCkBAIC02NjIsNDEgKzY2Miw2IEBACiAgICAg
ICAgIHNldE5vZGVBdHRyaWJ1dGUod3JhcHBpbmdTdHlsZVNwYW4sIHN0eWxlQXR0ciwgc3R5bGUt
PnN0eWxlKCktPmNzc1RleHQoKSk7CiB9CiAKLS8vIFRha2UgdGhlIHN0eWxlIGF0dHJpYnV0ZSBv
ZiBhIHNwYW4gYW5kIGFwcGx5IGl0IHRvIGl0J3MgY2hpbGRyZW4gaW5zdGVhZC4gIFRoaXMgYWxs
b3dzIHVzIHRvCi0vLyBjb252ZXJ0IGludmFsaWQgSFRNTCB3aGVyZSBhIHNwYW4gY29udGFpbnMg
YmxvY2sgZWxlbWVudHMgaW50byB2YWxpZCBIVE1MIHdoaWxlIHByZXNlcnZpbmcKLS8vIHN0eWxl
cy4KLXZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNvcHlTdHlsZVRvQ2hpbGRyZW4oTm9k
ZSogcGFyZW50Tm9kZSwgY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHBhcmVudFN0
eWxlKQotewotICAgIEFTU0VSVChwYXJlbnROb2RlLT5oYXNUYWdOYW1lKHNwYW5UYWcpKTsKLSAg
ICBOb2RlVmVjdG9yIGNoaWxkTm9kZXM7Ci0gICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hpbGROb2Rl
ID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZE5vZGU7IGNoaWxkTm9kZSA9IGNoaWxk
Tm9kZS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGROb2Rlcy5hcHBlbmQoY2hpbGROb2Rl
KTsKLSAgICAgICAgCi0gICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IGNo
aWxkTm9kZXMuYmVnaW4oKTsgaXQgIT0gY2hpbGROb2Rlcy5lbmQoKTsgaXQrKykgewotICAgICAg
ICBOb2RlKiBjaGlsZE5vZGUgPSBpdC0+Z2V0KCk7Ci0gICAgICAgIGlmIChjaGlsZE5vZGUtPmlz
VGV4dE5vZGUoKSB8fCAhaXNCbG9jayhjaGlsZE5vZGUpIHx8IGNoaWxkTm9kZS0+aGFzVGFnTmFt
ZShwcmVUYWcpKSB7Ci0gICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHB1dCBhIHNwYW4gdGFn
IGFyb3VuZCB0aGUgY2hpbGQgbm9kZS4KLSAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdOb2Rl
ID0gcGFyZW50Tm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKLSAgICAgICAgICAgIEFTU0VSVChuZXdO
b2RlLT5oYXNUYWdOYW1lKHNwYW5UYWcpKTsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBuZXdT
cGFuID0gdG9IVE1MRWxlbWVudChuZXdOb2RlLmdldCgpKTsKLSAgICAgICAgICAgIHNldE5vZGVB
dHRyaWJ1dGUobmV3U3Bhbiwgc3R5bGVBdHRyLCBwYXJlbnRTdHlsZS0+Y3NzVGV4dCgpKTsKLSAg
ICAgICAgICAgIGluc2VydE5vZGVBZnRlcihuZXdTcGFuLCBjaGlsZE5vZGUpOwotICAgICAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBuZXdTcGFuLT5hcHBlbmRDaGls
ZChjaGlsZE5vZGUsIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAgICAg
Y2hpbGROb2RlID0gbmV3U3BhbjsKLSAgICAgICAgfSBlbHNlIGlmIChjaGlsZE5vZGUtPmlzSFRN
TEVsZW1lbnQoKSkgewotICAgICAgICAgICAgLy8gQ29weSB0aGUgc3R5bGUgYXR0cmlidXRlIGFu
ZCBtZXJnZSB0aGVtIGludG8gdGhlIGNoaWxkIG5vZGUuICBXZSBkb24ndCB3YW50IHRvIG92ZXJy
aWRlCi0gICAgICAgICAgICAvLyBleGlzdGluZyBzdHlsZXMsIHNvIGRvbid0IGNsb2JiZXIgb24g
bWVyZ2UuCi0gICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG5l
d1N0eWxlID0gcGFyZW50U3R5bGUtPmNvcHkoKTsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBj
aGlsZEVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGV4aXN0aW5nU3R5bGVzID0gY2hpbGRFbGVt
ZW50LT5nZXRJbmxpbmVTdHlsZURlY2woKS0+Y29weSgpOwotICAgICAgICAgICAgZXhpc3RpbmdT
dHlsZXMtPm1lcmdlKG5ld1N0eWxlLmdldCgpLCBmYWxzZSk7Ci0gICAgICAgICAgICBzZXROb2Rl
QXR0cmlidXRlKGNoaWxkRWxlbWVudCwgc3R5bGVBdHRyLCBleGlzdGluZ1N0eWxlcy0+Y3NzVGV4
dCgpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6bWVyZ2VFbmRJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX3Nob3VsZE1lcmdlRW5kKQpAQCAt
MTA2MiwxMSArMTAyNywyNiBAQAogICAgICAgICAvLyBGSVhNRTogTWFpbnRhaW4gcG9zaXRpb25z
IGZvciB0aGUgc3RhcnQgYW5kIGVuZCBvZiBpbnNlcnRlZCBjb250ZW50IGluc3RlYWQgb2Yga2Vl
cGluZyBub2Rlcy4gIFRoZSBub2RlcyBhcmUKICAgICAgICAgLy8gb25seSBldmVyIHVzZWQgdG8g
Y3JlYXRlIHBvc2l0aW9ucyB3aGVyZSBpbnNlcnRlZCBjb250ZW50IHN0YXJ0cy9lbmRzLgogICAg
ICAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUsIGVuZE9mUGFyYWdyYXBo
KHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUpLCBkZXN0aW5hdGlvbik7Ci0gICAgICAgIG1fZmlyc3RO
b2RlSW5zZXJ0ZWQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKS5kZWVwRXF1aXZh
bGVudCgpLmRvd25zdHJlYW0oKS5kZXByZWNhdGVkTm9kZSgpOwotICAgICAgICBpZiAoIW1fbGFz
dExlYWZJbnNlcnRlZC0+aW5Eb2N1bWVudCgpKQotICAgICAgICAgICAgbV9sYXN0TGVhZkluc2Vy
dGVkID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpLmRlZXBFcXVpdmFsZW50KCkudXBz
dHJlYW0oKS5kZXByZWNhdGVkTm9kZSgpOworICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbkF0Rmly
c3ROb2RlID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxlbnQo
KS5kb3duc3RyZWFtKCk7CisKKyAgICAgICAgbV9maXJzdE5vZGVJbnNlcnRlZCA9IHBvc2l0aW9u
QXRGaXJzdE5vZGUuZGVwcmVjYXRlZE5vZGUoKTsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3Vs
ZCByZXBsYWNlIG1fZmlyc3ROb2RlSW5zZXJ0ZWQgYnkgYSBwb3NpdGlvbiByYXRoZXIgdGhhbiBo
YXZpbmcgdGhpcyB3b3JrLWFyb3VuZC4KKyAgICAgICAgaWYgKG1fZmlyc3ROb2RlSW5zZXJ0ZWQt
PmlzVGV4dE5vZGUoKSAmJiBwb3NpdGlvbkF0Rmlyc3ROb2RlLm9mZnNldEluQ29udGFpbmVyTm9k
ZSgpKQorICAgICAgICAgICAgc3BsaXRUZXh0Tm9kZShzdGF0aWNfY2FzdDxUZXh0Kj4obV9maXJz
dE5vZGVJbnNlcnRlZC5nZXQoKSksIHBvc2l0aW9uQXRGaXJzdE5vZGUub2Zmc2V0SW5Db250YWlu
ZXJOb2RlKCkpOworCisgICAgICAgIGlmICghbV9sYXN0TGVhZkluc2VydGVkLT5pbkRvY3VtZW50
KCkpIHsKKyAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uQXRMYXN0TGVhZk5vZGUgPSBlbmRp
bmdTZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkuZGVlcEVxdWl2YWxlbnQoKS51cHN0cmVhbSgpOwor
ICAgICAgICAgICAgbV9sYXN0TGVhZkluc2VydGVkID0gcG9zaXRpb25BdExhc3RMZWFmTm9kZS5k
ZXByZWNhdGVkTm9kZSgpOworICAgICAgICAgICAgaWYgKG1fbGFzdExlYWZJbnNlcnRlZC0+aXNU
ZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgVGV4dCogdGV4dCA9IHN0YXRpY19jYXN0PFRl
eHQqPihtX2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpKTsKKyAgICAgICAgICAgICAgICBpZiAocG9z
aXRpb25BdExhc3RMZWFmTm9kZS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSAmJiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocG9zaXRpb25BdExhc3RMZWFmTm9kZS5vZmZzZXRJbkNvbnRhaW5lck5vZGUo
KSkgPCB0ZXh0LT5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBzcGxpdFRleHROb2Rl
KHRleHQsIHBvc2l0aW9uQXRMYXN0TGVhZk5vZGUub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOwor
ICAgICAgICAgICAgICAgICAgICBtX2xhc3RMZWFmSW5zZXJ0ZWQgPSBtX2ZpcnN0Tm9kZUluc2Vy
dGVkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KICAgICB9Ci0gICAgICAgICAgICAKKwogICAgIGVuZE9mSW5zZXJ0ZWRDb250
ZW50ID0gcG9zaXRpb25BdEVuZE9mSW5zZXJ0ZWRDb250ZW50KCk7CiAgICAgc3RhcnRPZkluc2Vy
dGVkQ29udGVudCA9IHBvc2l0aW9uQXRTdGFydE9mSW5zZXJ0ZWRDb250ZW50KCk7CiAgICAgCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiA4NzUzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDEyICsx
MjAsNyBAQAogcHVibGljOgogICAgIGVudW0gUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHsgRG9lc0Z1
bGx5U2VsZWN0Tm9kZSwgRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSB9OwogCi0gICAgU3R5bGVkTWFy
a3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMgc2hvdWxk
UmVzb2x2ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIHNob3VsZEFubm90YXRlLCBjb25z
dCBSYW5nZSogcmFuZ2UpCi0gICAgOiBNYXJrdXBBY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVz
b2x2ZVVSTHMsIHJhbmdlKQotICAgICwgbV9zaG91bGRBbm5vdGF0ZShzaG91bGRBbm5vdGF0ZSkK
LSAgICB7Ci0gICAgfQotCisgICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUq
Piogbm9kZXMsIEVBYnNvbHV0ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBjb25zdCBS
YW5nZSosIE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSAwKTsKICAgICBOb2RlKiBz
ZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQpOwogICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBNYXJrdXBBY2N1
bXVsYXRvcjo6YXBwZW5kU3RyaW5nKHMpOyB9CiAgICAgdm9pZCB3cmFwV2l0aE5vZGUoTm9kZSos
IGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBSYW5nZUZ1bGx5U2VsZWN0c05v
ZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKTsKQEAgLTEzMywxOCArMTI4LDM3IEBACiAgICAgU3Ry
aW5nIHRha2VSZXN1bHRzKCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCBhcHBlbmRTdHlsZU5vZGVP
cGVuVGFnKFZlY3RvcjxVQ2hhcj4mLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgRG9jdW1lbnQqLCBi
b29sIGlzQmxvY2sgPSBmYWxzZSk7CisgICAgY29uc3QgU3RyaW5nIHN0eWxlTm9kZUNsb3NlVGFn
KGJvb2wgaXNCbG9jayA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kVGV4dChWZWN0
b3I8VUNoYXI+JiBvdXQsIFRleHQqKTsKICAgICBTdHJpbmcgcmVuZGVyZWRUZXh0KGNvbnN0IE5v
ZGUqLCBjb25zdCBSYW5nZSopOwogICAgIFN0cmluZyBzdHJpbmdWYWx1ZUZvclJhbmdlKGNvbnN0
IE5vZGUqLCBjb25zdCBSYW5nZSopOwogICAgIHZvaWQgYXBwZW5kRWxlbWVudChWZWN0b3I8VUNo
YXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgYWRkRGlzcGxheUlubGluZSwgUmFuZ2VG
dWxseVNlbGVjdHNOb2RlKTsKICAgICB2b2lkIGFwcGVuZEVsZW1lbnQoVmVjdG9yPFVDaGFyPiYg
b3V0LCBFbGVtZW50KiBlbGVtZW50LCBOYW1lc3BhY2VzKikgeyBhcHBlbmRFbGVtZW50KG91dCwg
ZWxlbWVudCwgZmFsc2UsIERvZXNGdWxseVNlbGVjdE5vZGUpOyB9CiAKKyAgICBOb2RlKiB0cmF2
ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQs
IGJvb2wgc2hvdWxkRW1pdCk7CisKICAgICBib29sIHNob3VsZEFubm90YXRlKCkgeyByZXR1cm4g
bV9zaG91bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlOyB9CisgICAgYm9vbCBz
aG91bGRBcHBseVdyYXBwaW5nU3R5bGUoTm9kZSogbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgJiYgbV9oaWdoZXN0Tm9kZVRvQmVT
ZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgPT0gbm9kZS0+cGFyZW50Tm9kZSgpCisgICAgICAgICAg
ICAmJiBtX3dyYXBwaW5nU3R5bGUgJiYgbV93cmFwcGluZ1N0eWxlLT5zdHlsZSgpOworICAgIH0K
IAogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXA7CiAgICAgY29u
c3QgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgbV9zaG91bGRBbm5vdGF0ZTsKKyAgICBOb2RlKiBt
X2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQ7CisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbV93
cmFwcGluZ1N0eWxlOwogfTsKIAoraW5saW5lIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpTdHls
ZWRNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcyBz
aG91bGRSZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUs
CisgICAgY29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBoaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVk
KQorICAgIDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCByYW5n
ZSkKKyAgICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5ub3RhdGUpCisgICAgLCBtX2hpZ2hl
c3ROb2RlVG9CZVNlcmlhbGl6ZWQoaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCkKK3sKK30KKwog
dm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhOb2RlKE5vZGUqIG5vZGUsIGJv
b2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHJhbmdlRnVs
bHlTZWxlY3RzTm9kZSkKIHsKICAgICBWZWN0b3I8VUNoYXI+IG1hcmt1cDsKQEAgLTE2MCwyMCAr
MTc0LDMwIEBACiAKIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OndyYXBXaXRoU3R5bGVO
b2RlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
aXNCbG9jaykKIHsKKyAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7CisgICAgYXBwZW5kU3R5bGVO
b2RlT3BlblRhZyhvcGVuVGFnLCBzdHlsZSwgZG9jdW1lbnQsIGlzQmxvY2spOworICAgIG1fcmV2
ZXJzZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5kKFN0cmluZzo6YWRvcHQob3BlblRhZykpOworICAg
IGFwcGVuZFN0cmluZyhzdHlsZU5vZGVDbG9zZVRhZyhpc0Jsb2NrKSk7Cit9CisKK3ZvaWQgU3R5
bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0eWxlTm9kZU9wZW5UYWcoVmVjdG9yPFVDaGFy
PiYgb3V0LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIGlzQmxvY2spCit7CiAgICAgLy8gQWxsIHRleHQtZGVjb3JhdGlvbi1yZWxhdGVkIGVsZW1l
bnRzIHNob3VsZCBoYXZlIGJlZW4gdHJlYXRlZCBhcyBzcGVjaWFsIGFuY2VzdG9ycwogICAgIC8v
IElmIHdlIGV2ZXIgaGl0IHRoaXMgQVNTRVJULCB3ZSBzaG91bGQgZXhwb3J0IFN0eWxlQ2hhbmdl
IGluIEFwcGx5U3R5bGVDb21tYW5kIGFuZCB1c2UgaXQgaGVyZQogICAgIEFTU0VSVChwcm9wZXJ0
eU1pc3NpbmdPckVxdWFsVG9Ob25lKHN0eWxlLCBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSAm
JiBwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGRpdlN0eWxlLCAoIjxkaXYgc3R5bGU9XCIiKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIHN0eWxlU3Bhbk9wZW4sICgiPHNwYW4gY2xhc3M9XCIiIEFwcGxl
U3R5bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIikpOworICAgIGFwcGVuZChvdXQsIGlzQmxvY2sg
PyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOworICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91
dCwgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOworICAgIG91
dC5hcHBlbmQoJ1wiJyk7CisgICAgb3V0LmFwcGVuZCgnPicpOworfQorCitjb25zdCBTdHJpbmcg
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNsb3NlVGFnKGJvb2wgaXNCbG9jaykK
K3sKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2UsICgiPC9k
aXY+IikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHlsZVNwYW5P
cGVuLCAoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJcIiBzdHlsZT1cIiIp
KTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2Us
ICgiPC9zcGFuPiIpKTsKLSAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7Ci0gICAgYXBwZW5kKG9w
ZW5UYWcsIGlzQmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOwotICAgIGFwcGVuZEF0
dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50LT5pc0hUTUxE
b2N1bWVudCgpKTsKLSAgICBvcGVuVGFnLmFwcGVuZCgnXCInKTsKLSAgICBvcGVuVGFnLmFwcGVu
ZCgnPicpOwotICAgIG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5kKFN0cmluZzo6YWRv
cHQob3BlblRhZykpOwotICAgIGFwcGVuZFN0cmluZyhpc0Jsb2NrID8gZGl2Q2xvc2UgOiBzdHls
ZVNwYW5DbG9zZSk7CisgICAgcmV0dXJuIGlzQmxvY2sgPyBkaXZDbG9zZSA6IHN0eWxlU3BhbkNs
b3NlOwogfQogCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRha2VSZXN1bHRzKCkK
QEAgLTE5NywxMSArMjIxLDMxIEBACiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBib29s
IHdyYXBwaW5nU3BhbiA9IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSh0ZXh0KTsKKyAgICBpZiAo
d3JhcHBpbmdTcGFuKSB7CisgICAgICAgIG1fd3JhcHBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6
Y3JlYXRlKHRleHQsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0luaGVyaXRhYmxlUHJvcGVydGllc0Fu
ZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAgICAvLyBTdHlsZXMgdGhhdCBNYWls
IGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcGxhY2VkIG9uIHRoZSBNYWls
IGJsb2NrcXVvdGUsCisgICAgICAgIC8vIHRvIGhlbHAgdXMgZGlmZmVyZW50aWF0ZSB0aG9zZSBz
dHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxpZWQuCisgICAgICAgIC8vIFRo
aXMgaGVscHMgdXMgZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVv
dGVzIHJpZ2h0LgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPnJlbW92ZVN0eWxlQWRkZWRCeU5v
ZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShwb3NpdGlvbkJlZm9yZU5vZGUodGV4dCksIGlzTWFpbEJs
b2NrcXVvdGUsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7CisKKyAgICAgICAgLy8gRG9uJ3Qg
cHV0IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QgaW4gc2VyaWFsaXplZCBtYXJr
dXAKKyAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVy
dGllcygpOworCisgICAgICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsKKyAgICAgICAgYXBwZW5k
U3R5bGVOb2RlT3BlblRhZyhvcGVuVGFnLCBtX3dyYXBwaW5nU3R5bGUtPnN0eWxlKCksIHRleHQt
PmRvY3VtZW50KCkpOworICAgICAgICBhcHBlbmQob3V0LCBTdHJpbmc6OmFkb3B0KG9wZW5UYWcp
KTsKKyAgICB9CisKICAgICBib29sIHVzZVJlbmRlcmVkVGV4dCA9ICFlbmNsb3NpbmdOb2RlV2l0
aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKHRleHQpLCBzZWxlY3RUYWcpOwogICAgIFN0cmluZyBj
b250ZW50ID0gdXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRleHQsIG1fcmFuZ2UpIDog
c3RyaW5nVmFsdWVGb3JSYW5nZSh0ZXh0LCBtX3JhbmdlKTsKICAgICBWZWN0b3I8VUNoYXI+IGJ1
ZmZlcjsKICAgICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoYnVmZmVyLCBjb250
ZW50LmNoYXJhY3RlcnMoKSwgY29udGVudC5sZW5ndGgoKSwgRW50aXR5TWFza0luUENEQVRBKTsK
ICAgICBhcHBlbmQob3V0LCBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KFN0cmlu
Zzo6YWRvcHQoYnVmZmVyKSwgdGV4dCkpOworCisgICAgaWYgKHdyYXBwaW5nU3BhbikKKyAgICAg
ICAgYXBwZW5kKG91dCwgc3R5bGVOb2RlQ2xvc2VUYWcoKSk7CiB9CiAgICAgCiBTdHJpbmcgU3R5
bGVkTWFya3VwQWNjdW11bGF0b3I6OnJlbmRlcmVkVGV4dChjb25zdCBOb2RlKiBub2RlLCBjb25z
dCBSYW5nZSogcmFuZ2UpCkBAIC0yNTUsOCArMjk5LDI0IEBACiAKICAgICBpZiAoZWxlbWVudC0+
aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUp
KSB7CiAgICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUodG9IVE1MRWxlbWVudChlbGVtZW50KS0+Z2V0SW5saW5lU3R5bGVEZWNsKCkpOwotICAg
ICAgICBpZiAoc2hvdWxkQW5ub3RhdGUoKSkKKyAgICAgICAgaWYgKHNob3VsZEFubm90YXRlKCkp
IHsKICAgICAgICAgICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlv
bih0b0hUTUxFbGVtZW50KGVsZW1lbnQpKTsKKworICAgICAgICAgICAgaWYgKHNob3VsZEFwcGx5
V3JhcHBpbmdTdHlsZShlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIG1fd3JhcHBpbmdTdHls
ZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0lu
aGVyaXRhYmxlUHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAg
ICAgICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJpYnV0ZSBzaG91
bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwKKyAgICAgICAgICAgICAg
ICAvLyB0byBoZWxwIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0
IHRoZSB1c2VyIGhhcyBhcHBsaWVkLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaGVscHMgdXMg
Z2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJpZ2h0Lgor
ICAgICAgICAgICAgICAgIG1fd3JhcHBpbmdTdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShl
bmNsb3NpbmdOb2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShlbGVtZW50KSwg
aXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKKworICAgICAgICAg
ICAgICAgIC8vIERvbid0IHB1dCAtd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0IGlu
IHNlcmlhbGl6ZWQgbWFya3VwCisgICAgICAgICAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5jb2xs
YXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcygpOworCisgICAgICAgICAgICAgICAgYm9vbCBh
cmVPdmVycmlkZXNPbkNvbmZsaWN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgc3R5bGUtPnN0
eWxlKCktPm1lcmdlKG1fd3JhcHBpbmdTdHlsZS0+c3R5bGUoKSwgYXJlT3ZlcnJpZGVzT25Db25m
bGljdCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKGFkZERpc3BsYXlJ
bmxpbmUpCiAgICAgICAgICAgICBzdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVy
dHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwgdHJ1ZSk7CiAKQEAgLTI3OCw2ICszMzgsMjYgQEAK
IAogTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKE5vZGUqIHN0
YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCkKIHsKKyAgICBpZiAoIW1faGlnaGVzdE5vZGVUb0JlU2Vy
aWFsaXplZCkgeworICAgICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gdHJhdmVyc2VOb2Rlc0ZvclNl
cmlhbGl6YXRpb24oc3RhcnROb2RlLCBwYXN0RW5kLCBmYWxzZSk7CisgICAgICAgIG1faGlnaGVz
dE5vZGVUb0JlU2VyaWFsaXplZCA9IGxhc3RDbG9zZWQ7CisgICAgfQorICAgIAorICAgIE5vZGUq
IHBhcmVudE9mSGlnaGVzdE5vZGUgPSBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPyBtX2hp
Z2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQtPnBhcmVudE5vZGUoKSA6IDA7CisgICAgaWYgKHBhcmVu
dE9mSGlnaGVzdE5vZGUpIHsKKyAgICAgICAgbV93cmFwcGluZ1N0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUocGFyZW50T2ZIaWdoZXN0Tm9kZSwgRWRpdGluZ1N0eWxlOjpFZGl0aW5nSW5oZXJp
dGFibGVQcm9wZXJ0aWVzQW5kQmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOworCisgICAgICAgIC8v
IFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJpYnV0ZSBzaG91bGQgb25seSBiZSBw
bGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwKKyAgICAgICAgLy8gdG8gaGVscCB1cyBkaWZm
ZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBmcm9tIG9uZXMgdGhhdCB0aGUgdXNlciBoYXMgYXBwbGll
ZC4KKyAgICAgICAgLy8gVGhpcyBoZWxwcyB1cyBnZXQgdGhlIGNvbG9yIG9mIGNvbnRlbnQgcGFz
dGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQuCisgICAgICAgIG1fd3JhcHBpbmdTdHlsZS0+cmVt
b3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdOb2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk5v
ZGUocGFyZW50T2ZIaWdoZXN0Tm9kZSksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGlu
Z0JvdW5kYXJ5KSk7CisgICAgfQorCisgICAgcmV0dXJuIHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxp
emF0aW9uKHN0YXJ0Tm9kZSwgcGFzdEVuZCwgdHJ1ZSk7Cit9CisKK05vZGUqIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yOjp0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBzdGFydE5v
ZGUsIE5vZGUqIHBhc3RFbmQsIGJvb2wgc2hvdWxkRW1pdCkKK3sKICAgICBWZWN0b3I8Tm9kZSo+
IGFuY2VzdG9yc1RvQ2xvc2U7CiAgICAgTm9kZSogbmV4dDsKICAgICBOb2RlKiBsYXN0Q2xvc2Vk
ID0gMDsKQEAgLTMwNCwxMSArMzg0LDEzIEBACiAgICAgICAgICAgICAgICAgbmV4dCA9IHBhc3RF
bmQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhl
IG1hcmt1cCBpZiB3ZSdyZSBub3Qgc2tpcHBpbmcgdGhlIGRlc2NlbmRhbnRzCi0gICAgICAgICAg
ICBhcHBlbmRTdGFydFRhZyhuKTsKKyAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAgICAg
ICAgICAgICAgIGFwcGVuZFN0YXJ0VGFnKG4pOwogCiAgICAgICAgICAgICAvLyBJZiBub2RlIGhh
cyBubyBjaGlsZHJlbiwgY2xvc2UgdGhlIHRhZyBub3cuCiAgICAgICAgICAgICBpZiAoIW4tPmNo
aWxkTm9kZUNvdW50KCkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWcobik7CisgICAg
ICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEVu
ZFRhZyhuKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0gbjsKICAgICAgICAgICAgIH0g
ZWxzZSB7CiAgICAgICAgICAgICAgICAgb3BlbmVkVGFnID0gdHJ1ZTsKQEAgLTMyNSw3ICs0MDcs
OCBAQAogICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9IHBhc3RFbmQgJiYgbmV4dC0+aXNEZXNj
ZW5kYW50T2YoYW5jZXN0b3IpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICAvLyBOb3QgYXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIGNsb3NlIGFuY2VzdG9ycyB1
cCB0byBzaWJsaW5nIG9mIG5leHQgbm9kZS4KLSAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWco
YW5jZXN0b3IpOworICAgICAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAg
ICAgICAgICBhcHBlbmRFbmRUYWcoYW5jZXN0b3IpOwogICAgICAgICAgICAgICAgIGxhc3RDbG9z
ZWQgPSBhbmNlc3RvcjsKICAgICAgICAgICAgICAgICBhbmNlc3RvcnNUb0Nsb3NlLnJlbW92ZUxh
c3QoKTsKICAgICAgICAgICAgIH0KQEAgLTM0MCw3ICs0MjMsOCBAQAogICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIC8vIG9yIGIpIGFuY2VzdG9y
cyB0aGF0IHdlIG5ldmVyIGVuY291bnRlcmVkIGR1cmluZyBhIHByZS1vcmRlciB0cmF2ZXJzYWwg
c3RhcnRpbmcgYXQgc3RhcnROb2RlOgogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhcnRO
b2RlLT5pc0Rlc2NlbmRhbnRPZihwYXJlbnQpKTsKLSAgICAgICAgICAgICAgICAgICAgd3JhcFdp
dGhOb2RlKHBhcmVudCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAg
ICAgICAgICAgICAgICAgICAgICAgd3JhcFdpdGhOb2RlKHBhcmVudCk7CiAgICAgICAgICAgICAg
ICAgICAgIGxhc3RDbG9zZWQgPSBwYXJlbnQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAg
ICAgfQpAQCAtNTEzLDcgKzU5NywxMyBAQAogCiAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3Ig
YWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCBzaG91bGRBbm5vdGF0ZSwgdXBk
YXRlZFJhbmdlLmdldCgpKTsKKyAgICBOb2RlKiBib2R5ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWco
Zmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNlc3RvciksIGJvZHlUYWcpOworICAgIE5vZGUq
IGZ1bGx5U2VsZWN0ZWRSb290ID0gMDsKKyAgICAvLyBGSVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1
bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90IGp1c3QgdGhlIGJvZHkuCisgICAgaWYgKGJvZHkgJiYg
YXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZO
b2RlKGJvZHkpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHJhbmdlKSkKKyAgICAgICAgZnVs
bHlTZWxlY3RlZFJvb3QgPSBib2R5OworICAgIE5vZGUqIHNwZWNpYWxDb21tb25BbmNlc3RvciA9
IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCksIGZ1bGx5U2Vs
ZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0ZSk7CisgICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3Ig
YWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCBzaG91bGRBbm5vdGF0ZSwgdXBk
YXRlZFJhbmdlLmdldCgpLCBzcGVjaWFsQ29tbW9uQW5jZXN0b3IpOwogICAgIE5vZGUqIHBhc3RF
bmQgPSB1cGRhdGVkUmFuZ2UtPnBhc3RMYXN0Tm9kZSgpOwogCiAgICAgTm9kZSogc3RhcnROb2Rl
ID0gdXBkYXRlZFJhbmdlLT5maXJzdE5vZGUoKTsKQEAgLTUzOSwxNCArNjI5LDYgQEAKICAgICAg
ICAgQVNTRVJUKCFlYyk7CiAgICAgfQogCi0gICAgTm9kZSogYm9keSA9IGVuY2xvc2luZ05vZGVX
aXRoVGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUoY29tbW9uQW5jZXN0b3IpLCBib2R5VGFnKTsKLSAg
ICBOb2RlKiBmdWxseVNlbGVjdGVkUm9vdCA9IDA7Ci0gICAgLy8gRklYTUU6IERvIHRoaXMgZm9y
IGFsbCBmdWxseSBzZWxlY3RlZCBibG9ja3MsIG5vdCBqdXN0IHRoZSBib2R5LgotICAgIGlmIChi
b2R5ICYmIGFyZVJhbmdlc0VxdWFsKFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250
ZW50c09mTm9kZShib2R5KS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCByYW5nZSkpCi0gICAg
ICAgIGZ1bGx5U2VsZWN0ZWRSb290ID0gYm9keTsKLQotICAgIE5vZGUqIHNwZWNpYWxDb21tb25B
bmNlc3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCks
IGZ1bGx5U2VsZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0ZSk7Ci0KICAgICBOb2RlKiBsYXN0Q2xv
c2VkID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoc3RhcnROb2RlLCBwYXN0RW5kKTsKIAog
ICAgIGlmIChzcGVjaWFsQ29tbW9uQW5jZXN0b3IgJiYgbGFzdENsb3NlZCkgewpAQCAtNTg2LDIw
ICs2NjgsNiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gQWRkIGEgd3JhcHBlciBzcGFu
IHdpdGggdGhlIHN0eWxlcyB0aGF0IGFsbCBvZiB0aGUgbm9kZXMgaW4gdGhlIG1hcmt1cCBpbmhl
cml0LgotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9mTGFzdENsb3NlZCA9IGxhc3RDbG9zZWQg
PyBsYXN0Q2xvc2VkLT5wYXJlbnROb2RlKCkgOiAwOwotICAgIGlmIChwYXJlbnRPZkxhc3RDbG9z
ZWQgJiYgcGFyZW50T2ZMYXN0Q2xvc2VkLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIFJlZlB0cjxF
ZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocGFyZW50T2ZMYXN0Q2xv
c2VkLCBFZGl0aW5nU3R5bGU6OkVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3Jv
dW5kQ29sb3JJbkVmZmVjdCk7Ci0KLSAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1
b3RlcyBjb250cmlidXRlIHNob3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1
b3RlLCB0byBoZWxwCi0gICAgICAgIC8vIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZy
b20gb25lcyB0aGF0IHRoZSB1c2VyIGhhcyBhcHBsaWVkLiAgVGhpcyBoZWxwcyB1cwotICAgICAg
ICAvLyBnZXQgdGhlIGNvbG9yIG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmln
aHQuCi0gICAgICAgIHN0eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xvc2luZ05vZGVP
ZlR5cGUoZmlyc3RQb3NpdGlvbkluTm9kZShwYXJlbnRPZkxhc3RDbG9zZWQpLCBpc01haWxCbG9j
a3F1b3RlLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpOwotCi0gICAgICAgIGlmICghc3R5bGUt
PmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFjY3VtdWxhdG9yLndyYXBXaXRoU3R5bGVOb2RlKHN0
eWxlLT5zdHlsZSgpLCBkb2N1bWVudCk7Ci0gICAgfQotCiAgICAgLy8gRklYTUU6IFRoZSBpbnRl
cmNoYW5nZSBuZXdsaW5lIHNob3VsZCBiZSBwbGFjZWQgaW4gdGhlIGJsb2NrIHRoYXQgaXQncyBp
biwgbm90IGFmdGVyIGFsbCBvZiB0aGUgY29udGVudCwgdW5jb25kaXRpb25hbGx5LgogICAgIGlm
IChzaG91bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlICYmIG5lZWRJbnRlcmNo
YW5nZU5ld2xpbmVBZnRlcih2aXNpYmxlRW5kLnByZXZpb3VzKCkpKQogICAgICAgICBhY2N1bXVs
YXRvci5hcHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHJldmlzaW9uIDg3NTMyKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04
Niw3ICs4Niw3IEBACiAgICAgcmV0dXJuIGNvcHlFZGl0aW5nUHJvcGVydGllcyhzdHlsZS5nZXQo
KSk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGdldFBy
b3BlcnRpZXNOb3RJbihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZVdpdGhSZWR1bmRhbnRQcm9w
ZXJ0aWVzLCBDU1NTdHlsZURlY2xhcmF0aW9uKiBiYXNlU3R5bGUpOworc3RhdGljIFJlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHJvcGVydGllc05vdEluKERvY3VtZW50Kiwg
Q1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywgQ1NTU3R5
bGVEZWNsYXJhdGlvbiogYmFzZVN0eWxlKTsKIAogY2xhc3MgSFRNTEVsZW1lbnRFcXVpdmFsZW50
IHsKIHB1YmxpYzoKQEAgLTI5OSwyOCArMjk5LDMxIEBACiB7CiB9CiAKLXN0YXRpYyBSR0JBMzIg
Y3NzVmFsdWVUb1JHQkEoQ1NTVmFsdWUqIGNvbG9yVmFsdWUpCitzdGF0aWMgUkdCQTMyIGNzc1Zh
bHVlVG9SR0JBKERvY3VtZW50KiBkb2N1bWVudCwgQ1NTVmFsdWUqIGNvbG9yVmFsdWUpCiB7CiAg
ICAgaWYgKCFjb2xvclZhbHVlIHx8ICFjb2xvclZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkpCiAg
ICAgICAgIHJldHVybiBDb2xvcjo6dHJhbnNwYXJlbnQ7Ci0gICAgCisKICAgICBDU1NQcmltaXRp
dmVWYWx1ZSogcHJpbWl0aXZlQ29sb3IgPSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+
KGNvbG9yVmFsdWUpOwogICAgIGlmIChwcmltaXRpdmVDb2xvci0+cHJpbWl0aXZlVHlwZSgpID09
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUkdCQ09MT1IpCiAgICAgICAgIHJldHVybiBwcmltaXRp
dmVDb2xvci0+Z2V0UkdCQTMyVmFsdWUoKTsKLSAgICAKKworICAgIGlmIChkb2N1bWVudCAmJiBw
cmltaXRpdmVDb2xvci0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
SURFTlQgJiYgcHJpbWl0aXZlQ29sb3ItPmdldElkZW50KCkgPT0gQ1NTVmFsdWVXZWJraXRMaW5r
KQorICAgICAgICByZXR1cm4gZG9jdW1lbnQtPmxpbmtDb2xvcigpLnJnYigpOworCiAgICAgUkdC
QTMyIHJnYmEgPSAwOwogICAgIENTU1BhcnNlcjo6cGFyc2VDb2xvcihyZ2JhLCBjb2xvclZhbHVl
LT5jc3NUZXh0KCkpOwogICAgIHJldHVybiByZ2JhOwogfQogCi1zdGF0aWMgaW5saW5lIFJHQkEz
MiBnZXRSR0JBRm9udENvbG9yKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQorc3RhdGljIGlu
bGluZSBSR0JBMzIgZ2V0UkdCQUZvbnRDb2xvcihEb2N1bWVudCogZG9jdW1lbnQsIENTU1N0eWxl
RGVjbGFyYXRpb24qIHN0eWxlKQogewotICAgIHJldHVybiBjc3NWYWx1ZVRvUkdCQShzdHlsZS0+
Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKS5nZXQoKSk7CisgICAgcmV0dXJu
IGNzc1ZhbHVlVG9SR0JBKGRvY3VtZW50LCBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQ
cm9wZXJ0eUNvbG9yKS5nZXQoKSk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUkdCQTMyIHJnYmFCYWNr
Z3JvdW5kQ29sb3JJbkVmZmVjdChOb2RlKiBub2RlKQorc3RhdGljIGlubGluZSBSR0JBMzIgcmdi
YUJhY2tncm91bmRDb2xvckluRWZmZWN0KERvY3VtZW50KiBkb2N1bWVudCwgTm9kZSogbm9kZSkK
IHsKLSAgICByZXR1cm4gY3NzVmFsdWVUb1JHQkEoYmFja2dyb3VuZENvbG9ySW5FZmZlY3Qobm9k
ZSkuZ2V0KCkpOworICAgIHJldHVybiBjc3NWYWx1ZVRvUkdCQShkb2N1bWVudCwgYmFja2dyb3Vu
ZENvbG9ySW5FZmZlY3Qobm9kZSkuZ2V0KCkpOwogfQogCiB2b2lkIEVkaXRpbmdTdHlsZTo6aW5p
dChOb2RlKiBub2RlLCBQcm9wZXJ0aWVzVG9JbmNsdWRlIHByb3BlcnRpZXNUb0luY2x1ZGUpCkBA
IC01NDUsNyArNTQ4LDEwIEBACiAgICAgaWYgKCF0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0aW9uc0luRWZmZWN0LT5jc3NUZXh0KCksIG1f
bXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRp
b24pKTsKKyAgICBpZiAodGV4dERlY29yYXRpb25zSW5FZmZlY3QtPmlzVmFsdWVMaXN0KCkpCisg
ICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uLCB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdC0+Y3NzVGV4dCgpLCBtX211dGFibGVTdHlsZS0+
Z2V0UHJvcGVydHlQcmlvcml0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSk7CisgICAgZWxz
ZQorICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0
RGVjb3JhdGlvbik7CiAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3Bl
cnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOwogfQogCkBAIC01NjEsNyArNTY3LDgg
QEAKIFRyaVN0YXRlIEVkaXRpbmdTdHlsZTo6dHJpU3RhdGVPZlN0eWxlKENTU1N0eWxlRGVjbGFy
YXRpb24qIHN0eWxlVG9Db21wYXJlLCBTaG91bGRJZ25vcmVUZXh0T25seVByb3BlcnRpZXMgc2hv
dWxkSWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzKSBjb25zdAogewogICAgIC8vIEZJWE1FOiB0YWtl
IGNhcmUgb2YgYmFja2dyb3VuZC1jb2xvciBpbiBlZmZlY3QKLSAgICBSZWZQdHI8Q1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24+IGRpZmZlcmVuY2UgPSBnZXRQcm9wZXJ0aWVzTm90SW4obV9tdXRh
YmxlU3R5bGUuZ2V0KCksIHN0eWxlVG9Db21wYXJlKTsKKyAgICAvLyBGSVhNRTogZ2V0UHJvcGVy
dGllc05vdEluIG5lZWRzIGRvY3VtZW50CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBkaWZmZXJlbmNlID0gZ2V0UHJvcGVydGllc05vdEluKDAsIG1fbXV0YWJsZVN0eWxl
LmdldCgpLCBzdHlsZVRvQ29tcGFyZSk7CiAKICAgICBpZiAoc2hvdWxkSWdub3JlVGV4dE9ubHlQ
cm9wZXJ0aWVzID09IElnbm9yZVRleHRPbmx5UHJvcGVydGllcykKICAgICAgICAgZGlmZmVyZW5j
ZS0+cmVtb3ZlUHJvcGVydGllc0luU2V0KHRleHRPbmx5UHJvcGVydGllcywgV1RGX0FSUkFZX0xF
TkdUSCh0ZXh0T25seVByb3BlcnRpZXMpKTsKQEAgLTcxNCw3ICs3MjEsOCBAQAogCiBib29sIEVk
aXRpbmdTdHlsZTo6c3R5bGVJc1ByZXNlbnRJbkNvbXB1dGVkU3R5bGVPZk5vZGUoTm9kZSogbm9k
ZSkgY29uc3QKIHsKLSAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8ICFnZXRQcm9wZXJ0aWVz
Tm90SW4obV9tdXRhYmxlU3R5bGUuZ2V0KCksIGNvbXB1dGVkU3R5bGUobm9kZSkuZ2V0KCkpLT5s
ZW5ndGgoKTsKKyAgICBBU1NFUlQobm9kZSk7CisgICAgcmV0dXJuICFtX211dGFibGVTdHlsZSB8
fCAhZ2V0UHJvcGVydGllc05vdEluKG5vZGUtPmRvY3VtZW50KCksIG1fbXV0YWJsZVN0eWxlLmdl
dCgpLCBjb21wdXRlZFN0eWxlKG5vZGUpLmdldCgpKS0+bGVuZ3RoKCk7CiB9CiAKIHZvaWQgRWRp
dGluZ1N0eWxlOjpwcmVwYXJlVG9BcHBseUF0KGNvbnN0IFBvc2l0aW9uJiBwb3NpdGlvbiwgU2hv
dWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uIHNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlv
bikKQEAgLTczNCwxMiArNzQyLDE0IEBACiAgICAgICAgIGRpcmVjdGlvbiA9IG1fbXV0YWJsZVN0
eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlyZWN0aW9uKTsKICAgICB9CiAK
KyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBwb3NpdGlvbi5hbmNob3JOb2RlKCkgPyBwb3NpdGlv
bi5hbmNob3JOb2RlKCktPmRvY3VtZW50KCkgOiAwOworCiAgICAgc3R5bGUtPm1fbXV0YWJsZVN0
eWxlLT5kaWZmKG1fbXV0YWJsZVN0eWxlLmdldCgpKTsKLSAgICBpZiAoZ2V0UkdCQUZvbnRDb2xv
cihtX211dGFibGVTdHlsZS5nZXQoKSkgPT0gZ2V0UkdCQUZvbnRDb2xvcihzdHlsZS0+bV9tdXRh
YmxlU3R5bGUuZ2V0KCkpKQorICAgIGlmIChnZXRSR0JBRm9udENvbG9yKGRvY3VtZW50LCBtX211
dGFibGVTdHlsZS5nZXQoKSkgPT0gZ2V0UkdCQUZvbnRDb2xvcihkb2N1bWVudCwgc3R5bGUtPm1f
bXV0YWJsZVN0eWxlLmdldCgpKSkKICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3Bl
cnR5KENTU1Byb3BlcnR5Q29sb3IpOwogCiAgICAgaWYgKGhhc1RyYW5zcGFyZW50QmFja2dyb3Vu
ZENvbG9yKG1fbXV0YWJsZVN0eWxlLmdldCgpKQotICAgICAgICB8fCBjc3NWYWx1ZVRvUkdCQSht
X211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRD
b2xvcikuZ2V0KCkpID09IHJnYmFCYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChwb3NpdGlvbi5jb250
YWluZXJOb2RlKCkpKQorICAgICAgICB8fCBjc3NWYWx1ZVRvUkdCQShkb2N1bWVudCwgbV9tdXRh
YmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3Ip
LmdldCgpKSA9PSByZ2JhQmFja2dyb3VuZENvbG9ySW5FZmZlY3QoZG9jdW1lbnQsIHBvc2l0aW9u
LmNvbnRhaW5lck5vZGUoKSkpCiAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcik7CiAKICAgICBpZiAodW5pY29kZUJpZGkgJiYg
dW5pY29kZUJpZGktPmlzUHJpbWl0aXZlVmFsdWUoKSkgewpAQCAtODA1LDExICs4MTUsMTAgQEAK
ICAgICB9CiB9CiAKLXN0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
PiBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0
aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hl
ZFJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCB1bnNpZ25lZCBmaWx0ZXIpCiB7CiAg
ICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IG1hdGNo
ZWRSdWxlcyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVSdWxl
c0ZvckVsZW1lbnQoZWxlbWVudCwKLSAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6QXV0aG9yQ1NT
UnVsZXMgfCBDU1NTdHlsZVNlbGVjdG9yOjpDcm9zc09yaWdpbkNTU1J1bGVzKTsKKyAgICBSZWZQ
dHI8Q1NTUnVsZUxpc3Q+IG1hdGNoZWRSdWxlcyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnN0eWxl
U2VsZWN0b3IoKS0+c3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgZmlsdGVyKTsKICAgICBp
ZiAobWF0Y2hlZFJ1bGVzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtYXRj
aGVkUnVsZXMtPmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgIGlmIChtYXRjaGVkUnVsZXMt
Pml0ZW0oaSktPnR5cGUoKSA9PSBDU1NSdWxlOjpTVFlMRV9SVUxFKSB7CkBAIC04MjQsNyArODMz
LDggQEAKIAogdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxl
bWVudCogZWxlbWVudCkKIHsKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+
IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQo
ZWxlbWVudCk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUZy
b21NYXRjaGVkUnVsZXMgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQs
CisgICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OkF1dGhvckNTU1J1bGVzIHwgQ1NTU3R5bGVTZWxl
Y3Rvcjo6Q3Jvc3NPcmlnaW5DU1NSdWxlcyk7CiAgICAgLy8gU3R5bGVzIGZyb20gdGhlIGlubGlu
ZSBzdHlsZSBkZWNsYXJhdGlvbiwgaGVsZCBpbiB0aGUgdmFyaWFibGUgInN0eWxlIiwgdGFrZSBw
cmVjZWRlbmNlIAogICAgIC8vIG92ZXIgdGhvc2UgZnJvbSBtYXRjaGVkIHJ1bGVzLgogICAgIGlm
IChtX211dGFibGVTdHlsZSkKQEAgLTg1NywxNiArODY3LDQxIEBACiAgICAgbV9tdXRhYmxlU3R5
bGUtPm1lcmdlKGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsKIH0KIAordm9pZCBzaG93U3R5bGUo
Q1NTU3R5bGVEZWNsYXJhdGlvbiopOworCit2b2lkIHNob3dTdHlsZShDU1NTdHlsZURlY2xhcmF0
aW9uKiBzdHlsZSkKK3sKKyAgICBpZiAoc3R5bGUpCisgICAgICAgIGZwcmludGYoc3RkZXJyLCAi
WyVzXVxuIiwgc3R5bGUtPmNzc1RleHQoKS5hc2NpaSgpLmRhdGEoKSk7Cit9CisKIHZvaWQgRWRp
dGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50KiBlbGVtZW50KQog
eworICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxl
RnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVu
dCk7Ci0gICAgaWYgKCFzdHlsZUZyb21NYXRjaGVkUnVsZXMpCi0gICAgICAgIHJldHVybjsKKyAg
ICAvLyAxLiBSZW1vdmUgc3R5bGUgZnJvbSBtYXRjaGVkIHJ1bGVzIGJlY2F1c2Ugc3R5bGUgcmVt
YWluIHdpdGhvdXQgcmVwZWF0aW5nIGl0IGluIGlubGluZSBzdHlsZSBkZWNsYXJhdGlvbgorICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVz
ID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LAorICAgICAgICBDU1NT
dHlsZVNlbGVjdG9yOjpVQUFuZFVzZXJDU1NSdWxlcyB8IENTU1N0eWxlU2VsZWN0b3I6OkF1dGhv
ckNTU1J1bGVzIHwgQ1NTU3R5bGVTZWxlY3Rvcjo6Q3Jvc3NPcmlnaW5DU1NSdWxlcyk7CisgICAg
aWYgKHN0eWxlRnJvbU1hdGNoZWRSdWxlcykKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQ
cm9wZXJ0aWVzTm90SW4oZWxlbWVudC0+ZG9jdW1lbnQoKSwgbV9tdXRhYmxlU3R5bGUuZ2V0KCks
IHN0eWxlRnJvbU1hdGNoZWRSdWxlcy5nZXQoKSk7CiAKLSAgICBtX211dGFibGVTdHlsZSA9IGdl
dFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5bGVGcm9tTWF0Y2hlZFJ1
bGVzLmdldCgpKTsKKyAgICAvLyAyLiBSZW1vdmUgc3R5bGUgcHJlc2VudCBpbiBwYXJlbnQgYW5k
IG5vdCBvdmVycmlkZW4gYnkgbWF0Y2hlZCBydWxlcy4KKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxl
PiBjb21wdXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoZWxlbWVudC0+cGFyZW50Tm9k
ZSgpLCBFZGl0aW5nSW5oZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dyb3VuZENvbG9ySW5FZmZl
Y3QpOworICAgIGlmIChjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZSkgeworICAgICAgICBp
ZiAoc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzICYmIHN0eWxlRnJvbU1hdGNoZWRSdWxlcy0+bGVuZ3Ro
KCkpIHsKKyAgICAgICAgICAgIFZlY3RvcjxpbnQ+IHByb3BlcnRpZXNGcm9tTWF0Y2hlZFJ1bGVz
KHN0eWxlRnJvbU1hdGNoZWRSdWxlcy0+bGVuZ3RoKCkpOworICAgICAgICAgICAgc2l6ZV90IGkg
PSAwOworICAgICAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlcy0+ZW5kKCk7CisgICAgICAgICAgICBmb3Ig
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IHN0eWxlRnJv
bU1hdGNoZWRSdWxlcy0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0LCArK2kpCisgICAgICAgICAg
ICAgICAgcHJvcGVydGllc0Zyb21NYXRjaGVkUnVsZXNbaV0gPSBpdC0+aWQoKTsKKworICAgICAg
ICAgICAgY29tcHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJblNl
dChwcm9wZXJ0aWVzRnJvbU1hdGNoZWRSdWxlcy5kYXRhKCksIHByb3BlcnRpZXNGcm9tTWF0Y2hl
ZFJ1bGVzLnNpemUoKSk7CisgICAgICAgIH0KKyAgICAKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUg
PSBnZXRQcm9wZXJ0aWVzTm90SW4oZWxlbWVudC0+ZG9jdW1lbnQoKSwgbV9tdXRhYmxlU3R5bGUu
Z2V0KCksIGNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlLmdldCgpKTsgICAgICAgIAorICAg
IH0KIH0KIAogc3RhdGljIHZvaWQgcmVjb25jaWxlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKQEAgLTkwMCw3ICs5MzUsNyBAQAogCiAg
ICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbj4gY29tcHV0ZWRTdHlsZSA9IHBv
c2l0aW9uLmNvbXB1dGVkU3R5bGUoKTsKICAgICAvLyBGSVhNRTogdGFrZSBjYXJlIG9mIGJhY2tn
cm91bmQtY29sb3IgaW4gZWZmZWN0Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBtdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4oc3R5bGUtPnN0eWxlKCksIGNv
bXB1dGVkU3R5bGUuZ2V0KCkpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bj4gbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVydGllc05vdEluKGRvY3VtZW50LCBzdHlsZS0+c3R5
bGUoKSwgY29tcHV0ZWRTdHlsZS5nZXQoKSk7CiAKICAgICByZWNvbmNpbGVUZXh0RGVjb3JhdGlv
blByb3BlcnRpZXMobXV0YWJsZVN0eWxlLmdldCgpKTsKICAgICBpZiAoIWRvY3VtZW50LT5mcmFt
ZSgpLT5lZGl0b3IoKS0+c2hvdWxkU3R5bGVXaXRoQ1NTKCkpCkBAIC05NzUsNyArMTAxMCw3IEBA
CiAgICAgfQogCiAgICAgaWYgKHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
Q29sb3IpKSB7Ci0gICAgICAgIG1fYXBwbHlGb250Q29sb3IgPSBDb2xvcihnZXRSR0JBRm9udENv
bG9yKHN0eWxlKSkuc2VyaWFsaXplZCgpOworICAgICAgICBtX2FwcGx5Rm9udENvbG9yID0gQ29s
b3IoZ2V0UkdCQUZvbnRDb2xvcihkb2N1bWVudCwgc3R5bGUpKS5zZXJpYWxpemVkKCk7CiAgICAg
ICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yKTsKICAgICB9CiAKQEAg
LTEwMjAsNiArMTA1NSw3IEBACiAKICAgICAvLyBCZWNhdXNlIGIgdGFnIGNhbiBvbmx5IGJvbGQg
dGV4dCwgdGhlcmUgYXJlIG9ubHkgdHdvIHN0YXRlcyBpbiBwbGFpbiBodG1sOiBib2xkIGFuZCBu
b3QgYm9sZC4KICAgICAvLyBDb2xsYXBzZSBhbGwgb3RoZXIgdmFsdWVzIHRvIGVpdGhlciBvbmUg
b2YgdGhlc2UgdHdvIHN0YXRlcyBmb3IgZWRpdGluZyBwdXJwb3Nlcy4KKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkbid0IHRyZWF0IGJvbGRlciBhbmQgbGlnaHRlciBsaWtlIG5vcm1hbCBhbmQgYm9s
ZC4KICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oZm9udFdlaWdo
dC5nZXQoKSktPmdldElkZW50KCkpIHsKICAgICAgICAgY2FzZSBDU1NWYWx1ZTEwMDoKICAgICAg
ICAgY2FzZSBDU1NWYWx1ZTIwMDoKQEAgLTEwMjcsOCArMTA2MywxMCBAQAogICAgICAgICBjYXNl
IENTU1ZhbHVlNDAwOgogICAgICAgICBjYXNlIENTU1ZhbHVlNTAwOgogICAgICAgICBjYXNlIENT
U1ZhbHVlTm9ybWFsOgorICAgICAgICBjYXNlIENTU1ZhbHVlTGlnaHRlcjoKICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBDU1NWYWx1ZUJvbGQ6CisgICAgICAgIGNhc2Ug
Q1NTVmFsdWVCb2xkZXI6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWU2MDA6CiAgICAgICAgIGNhc2Ug
Q1NTVmFsdWU3MDA6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWU4MDA6CkBAIC0xMDM2LDcgKzEwNzQs
NiBAQAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCi0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7IC8vIEZvciBDU1NWYWx1ZUJvbGRlciBhbmQgQ1NTVmFsdWVMaWdodGVyCiAgICAg
cmV0dXJuIGZhbHNlOyAvLyBNYWtlIGNvbXBpbGVyIGhhcHB5CiB9CiAKQEAgLTEwNTksNyArMTA5
Niw3IEBACiAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxpZDsKIH0KIAotUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBnZXRQcm9wZXJ0aWVzTm90SW4oQ1NTU3R5bGVEZWNsYXJhdGlv
biogc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywgQ1NTU3R5bGVEZWNsYXJhdGlvbiogYmFz
ZVN0eWxlKQorUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBnZXRQcm9wZXJ0aWVz
Tm90SW4oRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZVdpdGhS
ZWR1bmRhbnRQcm9wZXJ0aWVzLCBDU1NTdHlsZURlY2xhcmF0aW9uKiBiYXNlU3R5bGUpCiB7CiAg
ICAgQVNTRVJUKHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMpOwogICAgIEFTU0VSVChiYXNl
U3R5bGUpOwpAQCAtMTA3NCw3ICsxMTExLDcgQEAKICAgICBpZiAoZm9udFdlaWdodElzQm9sZChy
ZXN1bHQuZ2V0KCkpID09IGZvbnRXZWlnaHRJc0JvbGQoYmFzZVN0eWxlKSkKICAgICAgICAgcmVz
dWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwogCi0gICAgaWYgKGdl
dFJHQkFGb250Q29sb3IocmVzdWx0LmdldCgpKSA9PSBnZXRSR0JBRm9udENvbG9yKGJhc2VTdHls
ZSkpCisgICAgaWYgKGdldFJHQkFGb250Q29sb3IoZG9jdW1lbnQsIHJlc3VsdC5nZXQoKSkgPT0g
Z2V0UkdCQUZvbnRDb2xvcihkb2N1bWVudCwgYmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5y
ZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yKTsKIAogICAgIGlmIChnZXRUZXh0QWxpZ25t
ZW50KHJlc3VsdC5nZXQoKSkgPT0gZ2V0VGV4dEFsaWdubWVudChiYXNlU3R5bGUpKQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAko
cmV2aXNpb24gODc1MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rp
b25Db21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDYgQEAKICAgICAKICAgICB2
b2lkIHJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoKTsKICAgICB2
b2lkIGhhbmRsZVN0eWxlU3BhbnMoKTsKLSAgICB2b2lkIGNvcHlTdHlsZVRvQ2hpbGRyZW4oTm9k
ZSogcGFyZW50Tm9kZSwgY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHBhcmVudFN0
eWxlKTsKICAgICB2b2lkIGhhbmRsZVBhc3RlQXNRdW90YXRpb25Ob2RlKCk7CiAgICAgCiAgICAg
dmlydHVhbCB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oTm9kZSopOwpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
NDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzUzMikKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5Nzc3LWZpeC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDEwICs1MSw4IEBACiAiCiB8IDx1bD4KIHwgICBzdHlsZT0idGV4dC1h
bGlnbjpyaWdodDsiCi18ICAgPHVsPgotfCAgICAgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyAi
Ci18ICAgICA8bGk+Ci18ICAgICAgICJBIgorfCAgIDxsaT4KK3wgICAgICJBIgogfCAgIDxkaXY+
CiB8ICAgICA8dWw+CiB8ICAgICAgIDxsaT4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9pbnRlcmNoYW5nZS1uZXdsaW5lLTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pbnRlcmNoYW5nZS1uZXdsaW5lLTItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA4NzUzMikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9pbnRlcmNoYW5nZS1uZXdsaW5lLTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC01LDYgKzUsOCBAQAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCitFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJ
ViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJl
YW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9u
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3NTMyKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNiw0ICs2LDQgQEAKIGZvbwogCiBleGVjQ29weUNvbW1hbmQ6IDxkaXYgaWQ9
InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90ZT48
L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PC9kaXY+Ci1leGVjUGFzdGVDb21tYW5k
OiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Js
b2NrcXVvdGU+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9ImVkaXRpbmciPjxzcGFuIGNsYXNzPSJB
cHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXplOiBtZWRpdW07ICI+PGRpdiBpZD0idGVz
dCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2
PjxkaXY+PGJyPjwvZGl2PjwvZGl2Pjwvc3Bhbj48L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1hbmQ6IDxk
aXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2tx
dW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PGRpdiBpZD0idGVzdCIgY2xh
c3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+
PGJyPjwvZGl2PjwvZGl2PjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA4NzUzMikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAx
MS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBACiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxh
Y2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0lu
c2VydEFjdGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVj
dGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IFNQQU4gPiBCID4gRk9OVCA+IFAgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gU1BB
TiA+IEIgPiBGT05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IEIgPiBGT05UID4gUCA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBCID4gRk9OVCA+IFAgPiBCID4gRk9O
VCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VO
b3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtMzAsMTkgKzMwLDE4IEBA
CiB8ICAgPGZvbnQ+CiB8ICAgICBmYWNlPSJNb25hY28iCiB8ICAgICA8Yj4KLXwgICAgICAgPHNw
YW4+Ci18ICAgICAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCi18ICAgICAgICAgc3R5bGU9
ImZvbnQtZmFtaWx5OiBUaW1lczsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgIgotfCAgICAgICAgIDxw
PgotfCAgICAgICAgICAgPGZvbnQ+Ci18ICAgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKLXwgICAg
ICAgICAgICAgPGI+Ci18ICAgICAgICAgICAgICAgImhlbGxvIgotfCAgICAgICAgIDxwPgotfCAg
ICAgICAgICAgPGZvbnQ+Ci18ICAgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKLXwgICAgICAgICAg
ICAgPGI+Ci18ICAgICAgICAgICAgICAgInRoZXJlPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgICAg
ICA8cD4KK3wgICAgICAgICBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyAiCit8ICAgICAgICAg
PGZvbnQ+Cit8ICAgICAgICAgICBmYWNlPSJNb25hY28iCit8ICAgICAgICAgICA8Yj4KK3wgICAg
ICAgICAgICAgImhlbGxvIgorfCAgICAgICA8cD4KK3wgICAgICAgICBzdHlsZT0iZm9udC1mYW1p
bHk6IFRpbWVzOyAiCit8ICAgICAgICAgPGZvbnQ+Cit8ICAgICAgICAgICBmYWNlPSJNb25hY28i
Cit8ICAgICAgICAgICA8Yj4KK3wgICAgICAgICAgICAgInRoZXJlPCNzZWxlY3Rpb24tY2FyZXQ+
IgogfCAiCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBh
c3RlLTAwMy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwMy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3NTMyKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwMy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsNyArNyw3IEBACiBFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5n
ZSBmcm9tIDUgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
byA1IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5B
Y3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5n
ZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0
ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJ
ViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MTAgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxMCBv
ZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5T
U2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5H
IERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2Vi
Vmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogVGVzdHM6IApJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWludG8tYmxvY2txdW90ZS13aXRoLWRvY3VtZW50LWZvbnQt
Y29sb3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1pbnRvLWJsb2NrcXVvdGUtd2l0aC1kb2N1bWVudC1mb250LWNvbG9yLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gODc1MzIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtaW50by1ibG9ja3F1b3RlLXdpdGgtZG9jdW1lbnQtZm9udC1jb2xvci1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNSArNCw0IEBACiB8ICAgdHlwZT0iY2l0ZSIK
IHwgICA8ZGl2PgogfCAgICAgIigiCi18ICAgICAiVGhpcyB0ZXh0IHNob3VsZCBiZSBibHVlLjwj
c2VsZWN0aW9uLWNhcmV0PiIKLXwgICAgICIpIgorfCAgICAgIlRoaXMgdGV4dCBzaG91bGQgYmUg
Ymx1ZS4pPCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLWFmdGVyLWlubGluZS1zdHlsZS1lbGVtZW50LWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYWZ0ZXItaW5s
aW5lLXN0eWxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzUzMikKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1hZnRlci1pbmxpbmUtc3R5bGUtZWxlbWVu
dC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNiArNCw1IEBACiB8ICAgdHlwZT0i
Y2l0ZSIKIHwgICA8Yj4KIHwgICAgICJsaW5lIDHCoCIKLXwgICAgICJsaW5lIDI8I3NlbGVjdGlv
bi1jYXJldD4iCi18ICAgICAiwqAiCit8ICAgICAibGluZSAywqA8I3NlbGVjdGlvbi1jYXJldD4i
CiB8ICAgICA8YnI+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQt
cGFzdGUtMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc1MzIp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvc21hcnQtcGFzdGUtMDAxLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw4ICs1LDExIEBACiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hv
dWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NSBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVuQWN0
aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQKLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gRElW
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IERJViA+IERJ
ViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
K0VESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgorRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCitFRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMSBv
ZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3Rl
eHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gNSBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
IDUgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0
eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
OldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIFRlc3RzOiAKIFNtYXJ0IHBhc3RlIHdoZW4g
cGFzdGluZyBhZnRlciBhIHdvcmQgYXQgdGhlIGVuZCBvZiBhIGxpbmUuCkluZGV4OiBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA4NzUzMikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMiw0ICsy
LDQgQEAKIGZvbwogYmFyCiBleGVjQ29weUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJl
ZGl0aW5nIj4gPHByZT5mb28gYmFyPC9wcmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRp
diBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHls
ZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAi
PjxwcmU+Zm9vIGJhcjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CitleGVjUGFzdGVDb21tYW5k
OiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHByZT5mb28gYmFyPC9wcmU+
PC9wcmU+IDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0
LXBhc3RlLTAwNi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwNi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3NTMy
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3NtYXJ0LXBhc3RlLTAwNi1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE5LDcgKzE5LDcgQEAKIEVESVRJTkcgREVMRUdB
VEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdl
OnJhbmdlIGZyb20gMSBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IHRvIDEgb2YgI3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBn
aXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDQgb2Yg
I3RleHQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA0IG9mICN0ZXh0
ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSA1IG9mICN0ZXh0ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NSBvZiAjdGV4dCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5
Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VT
ZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6
V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogVGVzdHM6IApJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzUzMikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTMsMTAgKzMsNyBAQAogfCA8cHJlPgogfCAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKIHwgICBp
ZD0icHJlIgotfCAgIDxzcGFuPgotfCAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCi18ICAg
ICBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiCi18ICAg
ICA8cHJlPgotfCAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCi18ICAgICAgIGlkPSJwcmUi
Ci18ICAgICAgICI8aW5wdXQgdHlwZT0nYnV0dG9uJz5mb288YnI+YmFyPGI+YmF6PC9iPjwjc2Vs
ZWN0aW9uLWNhcmV0PiIKK3wgICA8cHJlPgorfCAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgor
fCAgICAgaWQ9InByZSIKK3wgICAgICI8aW5wdXQgdHlwZT0nYnV0dG9uJz5mb288YnI+YmFyPGI+
YmF6PC9iPjwjc2VsZWN0aW9uLWNhcmV0PiIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDg3NTMyKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0w
MDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDQgKzcsNCBAQAogZm9vCiBiYXIK
IGV4ZWNDdXRDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PGJy
PjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJl
ZGl0aW5nIj4gPHByZT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQt
ZmFtaWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIj48cHJlPmZvbyBiYXI8L3ByZT48
L3NwYW4+PC9wcmU+IDwvZGl2PgorZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xh
c3M9ImVkaXRpbmciPiA8cHJlPjxwcmU+Zm9vIGJhcjwvcHJlPjwvcHJlPiA8L2Rpdj4KSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1b3RlLTItZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS1ibG9ja3F1b3RlLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzUzMikKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1ibG9ja3F1b3RlLTItZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMiBAQAogVGhpcyB0ZXN0cyBwYXN0aW5nIGEgYmxvY2tx
dW90ZSBhdCB0aGUgc3RhcnQgb2YgYSBwYXJhZ3JhcGguCi18ICJUaGlzIHNob3VsZCBub3QgYmUg
YmxvY2txdW90ZWQuPCNzZWxlY3Rpb24tY2FyZXQ+IgotfCAiwqBUaGlzIHNob3VsZCBub3QgYmUg
YmxvY2txdW90ZWQuIgorfCAiVGhpcyBzaG91bGQgbm90IGJlIGJsb2NrcXVvdGVkLsKgVGhpcyBz
aG91bGQgbm90IGJlIGJsb2NrcXVvdGVkLjwjc2VsZWN0aW9uLWNhcmV0PiIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95235</attachid>
            <date>2011-05-27 17:30:24 -0700</date>
            <delta_ts>2011-06-02 23:41:03 -0700</delta_ts>
            <desc>work in progress 4</desc>
            <filename>wip34564d</filename>
            <type>text/plain</type>
            <size>40871</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNv
bW1hbmQuY3BwCShyZXZpc2lvbiA4NzUzMikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00OTcsNiArNDk3LDkg
QEAKICAgICAgICAgICAgIGlmIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogaW5saW5lU3R5
bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKSkgewogICAgICAgICAgICAgICAgIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5s
aW5lU3R5bGUpOwogICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUZy
b21SdWxlcyhlbGVtZW50KTsKKworLy8gICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnBy
ZXBhcmVUb0FwcGx5QXQocG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUoZWxlbWVudCkpOworCiAg
ICAgICAgICAgICAgICAgaWYgKCFuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKSB8fCAhbmV3SW5saW5l
U3R5bGUtPnN0eWxlKCktPmxlbmd0aCgpKQogICAgICAgICAgICAgICAgICAgICByZW1vdmVOb2Rl
QXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlQXR0cik7CiAgICAgICAgICAgICAgICAgZWxzZSBpZiAo
bmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmxlbmd0aCgpIDwgaW5saW5lU3R5bGUtPmxlbmd0aCgp
KQpAQCAtNjExLDkgKzYxNCw2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIEF0IGNvcHkg
dGltZSwgV2ViS2l0IHdyYXBzIGNvcGllZCBjb250ZW50IGluIGEgc3BhbiB0aGF0IGNvbnRhaW5z
IHRoZSBzb3VyY2UgZG9jdW1lbnQncyAKLS8vIGRlZmF1bHQgc3R5bGVzLiAgSWYgdGhlIGNvcGll
ZCBSYW5nZSBpbmhlcml0cyBhbnkgb3RoZXIgc3R5bGVzIGZyb20gaXRzIGFuY2VzdG9ycywgd2Ug
cHV0IAotLy8gdGhvc2Ugc3R5bGVzIG9uIGEgc2Vjb25kIHNwYW4uCiAvLyBUaGlzIGZ1bmN0aW9u
IHJlbW92ZXMgcmVkdW5kYW50IHN0eWxlcyBmcm9tIHRob3NlIHNwYW5zLCBhbmQgcmVtb3ZlcyB0
aGUgc3BhbnMgaWYgYWxsIHRoZWlyIAogLy8gc3R5bGVzIGFyZSByZWR1bmRhbnQuIAogLy8gV2Ug
c2hvdWxkIHJlbW92ZSB0aGUgQXBwbGUtc3R5bGUtc3BhbiBjbGFzcyB3aGVuIHdlJ3JlIGRvbmUs
IHNlZSA8cmRhcjovL3Byb2JsZW0vNTY4NTYwMD4uCkBAIC02NjIsNDEgKzY2Miw2IEBACiAgICAg
ICAgIHNldE5vZGVBdHRyaWJ1dGUod3JhcHBpbmdTdHlsZVNwYW4sIHN0eWxlQXR0ciwgc3R5bGUt
PnN0eWxlKCktPmNzc1RleHQoKSk7CiB9CiAKLS8vIFRha2UgdGhlIHN0eWxlIGF0dHJpYnV0ZSBv
ZiBhIHNwYW4gYW5kIGFwcGx5IGl0IHRvIGl0J3MgY2hpbGRyZW4gaW5zdGVhZC4gIFRoaXMgYWxs
b3dzIHVzIHRvCi0vLyBjb252ZXJ0IGludmFsaWQgSFRNTCB3aGVyZSBhIHNwYW4gY29udGFpbnMg
YmxvY2sgZWxlbWVudHMgaW50byB2YWxpZCBIVE1MIHdoaWxlIHByZXNlcnZpbmcKLS8vIHN0eWxl
cy4KLXZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNvcHlTdHlsZVRvQ2hpbGRyZW4oTm9k
ZSogcGFyZW50Tm9kZSwgY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHBhcmVudFN0
eWxlKQotewotICAgIEFTU0VSVChwYXJlbnROb2RlLT5oYXNUYWdOYW1lKHNwYW5UYWcpKTsKLSAg
ICBOb2RlVmVjdG9yIGNoaWxkTm9kZXM7Ci0gICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hpbGROb2Rl
ID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZE5vZGU7IGNoaWxkTm9kZSA9IGNoaWxk
Tm9kZS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGROb2Rlcy5hcHBlbmQoY2hpbGROb2Rl
KTsKLSAgICAgICAgCi0gICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9IGNo
aWxkTm9kZXMuYmVnaW4oKTsgaXQgIT0gY2hpbGROb2Rlcy5lbmQoKTsgaXQrKykgewotICAgICAg
ICBOb2RlKiBjaGlsZE5vZGUgPSBpdC0+Z2V0KCk7Ci0gICAgICAgIGlmIChjaGlsZE5vZGUtPmlz
VGV4dE5vZGUoKSB8fCAhaXNCbG9jayhjaGlsZE5vZGUpIHx8IGNoaWxkTm9kZS0+aGFzVGFnTmFt
ZShwcmVUYWcpKSB7Ci0gICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHB1dCBhIHNwYW4gdGFn
IGFyb3VuZCB0aGUgY2hpbGQgbm9kZS4KLSAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdOb2Rl
ID0gcGFyZW50Tm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKLSAgICAgICAgICAgIEFTU0VSVChuZXdO
b2RlLT5oYXNUYWdOYW1lKHNwYW5UYWcpKTsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBuZXdT
cGFuID0gdG9IVE1MRWxlbWVudChuZXdOb2RlLmdldCgpKTsKLSAgICAgICAgICAgIHNldE5vZGVB
dHRyaWJ1dGUobmV3U3Bhbiwgc3R5bGVBdHRyLCBwYXJlbnRTdHlsZS0+Y3NzVGV4dCgpKTsKLSAg
ICAgICAgICAgIGluc2VydE5vZGVBZnRlcihuZXdTcGFuLCBjaGlsZE5vZGUpOwotICAgICAgICAg
ICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBuZXdTcGFuLT5hcHBlbmRDaGls
ZChjaGlsZE5vZGUsIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAgICAg
Y2hpbGROb2RlID0gbmV3U3BhbjsKLSAgICAgICAgfSBlbHNlIGlmIChjaGlsZE5vZGUtPmlzSFRN
TEVsZW1lbnQoKSkgewotICAgICAgICAgICAgLy8gQ29weSB0aGUgc3R5bGUgYXR0cmlidXRlIGFu
ZCBtZXJnZSB0aGVtIGludG8gdGhlIGNoaWxkIG5vZGUuICBXZSBkb24ndCB3YW50IHRvIG92ZXJy
aWRlCi0gICAgICAgICAgICAvLyBleGlzdGluZyBzdHlsZXMsIHNvIGRvbid0IGNsb2JiZXIgb24g
bWVyZ2UuCi0gICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG5l
d1N0eWxlID0gcGFyZW50U3R5bGUtPmNvcHkoKTsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBj
aGlsZEVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGV4aXN0aW5nU3R5bGVzID0gY2hpbGRFbGVt
ZW50LT5nZXRJbmxpbmVTdHlsZURlY2woKS0+Y29weSgpOwotICAgICAgICAgICAgZXhpc3RpbmdT
dHlsZXMtPm1lcmdlKG5ld1N0eWxlLmdldCgpLCBmYWxzZSk7Ci0gICAgICAgICAgICBzZXROb2Rl
QXR0cmlidXRlKGNoaWxkRWxlbWVudCwgc3R5bGVBdHRyLCBleGlzdGluZ1N0eWxlcy0+Y3NzVGV4
dCgpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFu
ZDo6bWVyZ2VFbmRJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX3Nob3VsZE1lcmdlRW5kKQpAQCAt
MTA2MiwxMSArMTAyNywyNiBAQAogICAgICAgICAvLyBGSVhNRTogTWFpbnRhaW4gcG9zaXRpb25z
IGZvciB0aGUgc3RhcnQgYW5kIGVuZCBvZiBpbnNlcnRlZCBjb250ZW50IGluc3RlYWQgb2Yga2Vl
cGluZyBub2Rlcy4gIFRoZSBub2RlcyBhcmUKICAgICAgICAgLy8gb25seSBldmVyIHVzZWQgdG8g
Y3JlYXRlIHBvc2l0aW9ucyB3aGVyZSBpbnNlcnRlZCBjb250ZW50IHN0YXJ0cy9lbmRzLgogICAg
ICAgICBtb3ZlUGFyYWdyYXBoKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUsIGVuZE9mUGFyYWdyYXBo
KHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUpLCBkZXN0aW5hdGlvbik7Ci0gICAgICAgIG1fZmlyc3RO
b2RlSW5zZXJ0ZWQgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKS5kZWVwRXF1aXZh
bGVudCgpLmRvd25zdHJlYW0oKS5kZXByZWNhdGVkTm9kZSgpOwotICAgICAgICBpZiAoIW1fbGFz
dExlYWZJbnNlcnRlZC0+aW5Eb2N1bWVudCgpKQotICAgICAgICAgICAgbV9sYXN0TGVhZkluc2Vy
dGVkID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZUVuZCgpLmRlZXBFcXVpdmFsZW50KCkudXBz
dHJlYW0oKS5kZXByZWNhdGVkTm9kZSgpOworICAgICAgICBQb3NpdGlvbiBwb3NpdGlvbkF0Rmly
c3ROb2RlID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxlbnQo
KS5kb3duc3RyZWFtKCk7CisKKyAgICAgICAgbV9maXJzdE5vZGVJbnNlcnRlZCA9IHBvc2l0aW9u
QXRGaXJzdE5vZGUuZGVwcmVjYXRlZE5vZGUoKTsKKyAgICAgICAgLy8gRklYTUU6IHdlIHNob3Vs
ZCByZXBsYWNlIG1fZmlyc3ROb2RlSW5zZXJ0ZWQgYnkgYSBwb3NpdGlvbiByYXRoZXIgdGhhbiBo
YXZpbmcgdGhpcyB3b3JrLWFyb3VuZC4KKyAgICAgICAgaWYgKG1fZmlyc3ROb2RlSW5zZXJ0ZWQt
PmlzVGV4dE5vZGUoKSAmJiBwb3NpdGlvbkF0Rmlyc3ROb2RlLm9mZnNldEluQ29udGFpbmVyTm9k
ZSgpKQorICAgICAgICAgICAgc3BsaXRUZXh0Tm9kZShzdGF0aWNfY2FzdDxUZXh0Kj4obV9maXJz
dE5vZGVJbnNlcnRlZC5nZXQoKSksIHBvc2l0aW9uQXRGaXJzdE5vZGUub2Zmc2V0SW5Db250YWlu
ZXJOb2RlKCkpOworCisgICAgICAgIGlmICghbV9sYXN0TGVhZkluc2VydGVkLT5pbkRvY3VtZW50
KCkpIHsKKyAgICAgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uQXRMYXN0TGVhZk5vZGUgPSBlbmRp
bmdTZWxlY3Rpb24oKS52aXNpYmxlRW5kKCkuZGVlcEVxdWl2YWxlbnQoKS51cHN0cmVhbSgpOwor
ICAgICAgICAgICAgbV9sYXN0TGVhZkluc2VydGVkID0gcG9zaXRpb25BdExhc3RMZWFmTm9kZS5k
ZXByZWNhdGVkTm9kZSgpOworICAgICAgICAgICAgaWYgKG1fbGFzdExlYWZJbnNlcnRlZC0+aXNU
ZXh0Tm9kZSgpKSB7CisgICAgICAgICAgICAgICAgVGV4dCogdGV4dCA9IHN0YXRpY19jYXN0PFRl
eHQqPihtX2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpKTsKKyAgICAgICAgICAgICAgICBpZiAocG9z
aXRpb25BdExhc3RMZWFmTm9kZS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSAmJiBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4ocG9zaXRpb25BdExhc3RMZWFmTm9kZS5vZmZzZXRJbkNvbnRhaW5lck5vZGUo
KSkgPCB0ZXh0LT5sZW5ndGgoKSkgeworICAgICAgICAgICAgICAgICAgICBzcGxpdFRleHROb2Rl
KHRleHQsIHBvc2l0aW9uQXRMYXN0TGVhZk5vZGUub2Zmc2V0SW5Db250YWluZXJOb2RlKCkpOwor
ICAgICAgICAgICAgICAgICAgICBtX2xhc3RMZWFmSW5zZXJ0ZWQgPSBtX2ZpcnN0Tm9kZUluc2Vy
dGVkLT5wcmV2aW91c1NpYmxpbmcoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9
CisgICAgICAgIH0KICAgICB9Ci0gICAgICAgICAgICAKKwogICAgIGVuZE9mSW5zZXJ0ZWRDb250
ZW50ID0gcG9zaXRpb25BdEVuZE9mSW5zZXJ0ZWRDb250ZW50KCk7CiAgICAgc3RhcnRPZkluc2Vy
dGVkQ29udGVudCA9IHBvc2l0aW9uQXRTdGFydE9mSW5zZXJ0ZWRDb250ZW50KCk7CiAgICAgCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiA4NzUzMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDEyICsx
MjAsNyBAQAogcHVibGljOgogICAgIGVudW0gUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHsgRG9lc0Z1
bGx5U2VsZWN0Tm9kZSwgRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSB9OwogCi0gICAgU3R5bGVkTWFy
a3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMgc2hvdWxk
UmVzb2x2ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIHNob3VsZEFubm90YXRlLCBjb25z
dCBSYW5nZSogcmFuZ2UpCi0gICAgOiBNYXJrdXBBY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVz
b2x2ZVVSTHMsIHJhbmdlKQotICAgICwgbV9zaG91bGRBbm5vdGF0ZShzaG91bGRBbm5vdGF0ZSkK
LSAgICB7Ci0gICAgfQotCisgICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUq
Piogbm9kZXMsIEVBYnNvbHV0ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBjb25zdCBS
YW5nZSosIE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSAwKTsKICAgICBOb2RlKiBz
ZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQpOwogICAgIHZpcnR1
YWwgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBNYXJrdXBBY2N1
bXVsYXRvcjo6YXBwZW5kU3RyaW5nKHMpOyB9CiAgICAgdm9pZCB3cmFwV2l0aE5vZGUoTm9kZSos
IGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBSYW5nZUZ1bGx5U2VsZWN0c05v
ZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKTsKQEAgLTEzMywxOCArMTI4LDM3IEBACiAgICAgU3Ry
aW5nIHRha2VSZXN1bHRzKCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCBhcHBlbmRTdHlsZU5vZGVP
cGVuVGFnKFZlY3RvcjxVQ2hhcj4mLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgRG9jdW1lbnQqLCBi
b29sIGlzQmxvY2sgPSBmYWxzZSk7CisgICAgY29uc3QgU3RyaW5nIHN0eWxlTm9kZUNsb3NlVGFn
KGJvb2wgaXNCbG9jayA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kVGV4dChWZWN0
b3I8VUNoYXI+JiBvdXQsIFRleHQqKTsKICAgICBTdHJpbmcgcmVuZGVyZWRUZXh0KGNvbnN0IE5v
ZGUqLCBjb25zdCBSYW5nZSopOwogICAgIFN0cmluZyBzdHJpbmdWYWx1ZUZvclJhbmdlKGNvbnN0
IE5vZGUqLCBjb25zdCBSYW5nZSopOwogICAgIHZvaWQgYXBwZW5kRWxlbWVudChWZWN0b3I8VUNo
YXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgYWRkRGlzcGxheUlubGluZSwgUmFuZ2VG
dWxseVNlbGVjdHNOb2RlKTsKICAgICB2b2lkIGFwcGVuZEVsZW1lbnQoVmVjdG9yPFVDaGFyPiYg
b3V0LCBFbGVtZW50KiBlbGVtZW50LCBOYW1lc3BhY2VzKikgeyBhcHBlbmRFbGVtZW50KG91dCwg
ZWxlbWVudCwgZmFsc2UsIERvZXNGdWxseVNlbGVjdE5vZGUpOyB9CiAKKyAgICBOb2RlKiB0cmF2
ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQs
IGJvb2wgc2hvdWxkRW1pdCk7CisKICAgICBib29sIHNob3VsZEFubm90YXRlKCkgeyByZXR1cm4g
bV9zaG91bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlOyB9CisgICAgYm9vbCBz
aG91bGRBcHBseVdyYXBwaW5nU3R5bGUoTm9kZSogbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgJiYgbV9oaWdoZXN0Tm9kZVRvQmVT
ZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgPT0gbm9kZS0+cGFyZW50Tm9kZSgpCisgICAgICAgICAg
ICAmJiBtX3dyYXBwaW5nU3R5bGUgJiYgbV93cmFwcGluZ1N0eWxlLT5zdHlsZSgpOworICAgIH0K
IAogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXA7CiAgICAgY29u
c3QgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgbV9zaG91bGRBbm5vdGF0ZTsKKyAgICBOb2RlKiBt
X2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQ7CisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbV93
cmFwcGluZ1N0eWxlOwogfTsKIAoraW5saW5lIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpTdHls
ZWRNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcyBz
aG91bGRSZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUs
CisgICAgY29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBoaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVk
KQorICAgIDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCByYW5n
ZSkKKyAgICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5ub3RhdGUpCisgICAgLCBtX2hpZ2hl
c3ROb2RlVG9CZVNlcmlhbGl6ZWQoaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCkKK3sKK30KKwog
dm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhOb2RlKE5vZGUqIG5vZGUsIGJv
b2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHJhbmdlRnVs
bHlTZWxlY3RzTm9kZSkKIHsKICAgICBWZWN0b3I8VUNoYXI+IG1hcmt1cDsKQEAgLTE2MCwyMCAr
MTc0LDMwIEBACiAKIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OndyYXBXaXRoU3R5bGVO
b2RlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wg
aXNCbG9jaykKIHsKKyAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7CisgICAgYXBwZW5kU3R5bGVO
b2RlT3BlblRhZyhvcGVuVGFnLCBzdHlsZSwgZG9jdW1lbnQsIGlzQmxvY2spOworICAgIG1fcmV2
ZXJzZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5kKFN0cmluZzo6YWRvcHQob3BlblRhZykpOworICAg
IGFwcGVuZFN0cmluZyhzdHlsZU5vZGVDbG9zZVRhZyhpc0Jsb2NrKSk7Cit9CisKK3ZvaWQgU3R5
bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0eWxlTm9kZU9wZW5UYWcoVmVjdG9yPFVDaGFy
PiYgb3V0LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIGlzQmxvY2spCit7CiAgICAgLy8gQWxsIHRleHQtZGVjb3JhdGlvbi1yZWxhdGVkIGVsZW1l
bnRzIHNob3VsZCBoYXZlIGJlZW4gdHJlYXRlZCBhcyBzcGVjaWFsIGFuY2VzdG9ycwogICAgIC8v
IElmIHdlIGV2ZXIgaGl0IHRoaXMgQVNTRVJULCB3ZSBzaG91bGQgZXhwb3J0IFN0eWxlQ2hhbmdl
IGluIEFwcGx5U3R5bGVDb21tYW5kIGFuZCB1c2UgaXQgaGVyZQogICAgIEFTU0VSVChwcm9wZXJ0
eU1pc3NpbmdPckVxdWFsVG9Ob25lKHN0eWxlLCBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSAm
JiBwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKHN0eWxlLCBDU1NQcm9wZXJ0eVdlYmtpdFRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIGRpdlN0eWxlLCAoIjxkaXYgc3R5bGU9XCIiKSk7CisgICAgREVGSU5FX1NUQVRJQ19M
T0NBTChjb25zdCBTdHJpbmcsIHN0eWxlU3Bhbk9wZW4sICgiPHNwYW4gY2xhc3M9XCIiIEFwcGxl
U3R5bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIikpOworICAgIGFwcGVuZChvdXQsIGlzQmxvY2sg
PyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOworICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91
dCwgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOworICAgIG91
dC5hcHBlbmQoJ1wiJyk7CisgICAgb3V0LmFwcGVuZCgnPicpOworfQorCitjb25zdCBTdHJpbmcg
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNsb3NlVGFnKGJvb2wgaXNCbG9jaykK
K3sKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2UsICgiPC9k
aXY+IikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHlsZVNwYW5P
cGVuLCAoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJcIiBzdHlsZT1cIiIp
KTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2Us
ICgiPC9zcGFuPiIpKTsKLSAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7Ci0gICAgYXBwZW5kKG9w
ZW5UYWcsIGlzQmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOwotICAgIGFwcGVuZEF0
dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50LT5pc0hUTUxE
b2N1bWVudCgpKTsKLSAgICBvcGVuVGFnLmFwcGVuZCgnXCInKTsKLSAgICBvcGVuVGFnLmFwcGVu
ZCgnPicpOwotICAgIG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5kKFN0cmluZzo6YWRv
cHQob3BlblRhZykpOwotICAgIGFwcGVuZFN0cmluZyhpc0Jsb2NrID8gZGl2Q2xvc2UgOiBzdHls
ZVNwYW5DbG9zZSk7CisgICAgcmV0dXJuIGlzQmxvY2sgPyBkaXZDbG9zZSA6IHN0eWxlU3BhbkNs
b3NlOwogfQogCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRha2VSZXN1bHRzKCkK
QEAgLTE5MSwxNyArMjE1LDM3IEBACiB9CiAKIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6
OmFwcGVuZFRleHQoVmVjdG9yPFVDaGFyPiYgb3V0LCBUZXh0KiB0ZXh0KQotewotICAgIGlmICgh
c2hvdWxkQW5ub3RhdGUoKSB8fCAodGV4dC0+cGFyZW50RWxlbWVudCgpICYmIHRleHQtPnBhcmVu
dEVsZW1lbnQoKS0+dGFnUU5hbWUoKSA9PSB0ZXh0YXJlYVRhZykpIHsKK3sgICAgCisgICAgYm9v
bCBwYXJlbnRJc1RleHRhcmVhID0gdGV4dC0+cGFyZW50RWxlbWVudCgpICYmIHRleHQtPnBhcmVu
dEVsZW1lbnQoKS0+dGFnUU5hbWUoKSA9PSB0ZXh0YXJlYVRhZzsKKyAgICBib29sIHdyYXBwaW5n
U3BhbiA9IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSh0ZXh0KSAmJiAhcGFyZW50SXNUZXh0YXJl
YTsKKyAgICBpZiAod3JhcHBpbmdTcGFuKSB7CisgICAgICAgIG1fd3JhcHBpbmdTdHlsZSA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKHRleHQsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0luaGVyaXRhYmxl
UHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAgICAvLyBTdHls
ZXMgdGhhdCBNYWlsIGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcGxhY2Vk
IG9uIHRoZSBNYWlsIGJsb2NrcXVvdGUsCisgICAgICAgIC8vIHRvIGhlbHAgdXMgZGlmZmVyZW50
aWF0ZSB0aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxpZWQuCisg
ICAgICAgIC8vIFRoaXMgaGVscHMgdXMgZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBp
bnRvIGJsb2NrcXVvdGVzIHJpZ2h0LgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPnJlbW92ZVN0
eWxlQWRkZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShwb3NpdGlvbkJlZm9yZU5vZGUodGV4
dCksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7CisKKyAgICAg
ICAgLy8gRG9uJ3QgcHV0IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3QgaW4gc2Vy
aWFsaXplZCBtYXJrdXAKKyAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRleHREZWNv
cmF0aW9uUHJvcGVydGllcygpOworCisgICAgICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsKKyAg
ICAgICAgYXBwZW5kU3R5bGVOb2RlT3BlblRhZyhvcGVuVGFnLCBtX3dyYXBwaW5nU3R5bGUtPnN0
eWxlKCksIHRleHQtPmRvY3VtZW50KCkpOworICAgICAgICBhcHBlbmQob3V0LCBTdHJpbmc6OmFk
b3B0KG9wZW5UYWcpKTsKKyAgICB9CisKKyAgICBpZiAoIXNob3VsZEFubm90YXRlKCkgfHwgcGFy
ZW50SXNUZXh0YXJlYSkKICAgICAgICAgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQob3V0
LCB0ZXh0KTsKLSAgICAgICAgcmV0dXJuOworICAgIGVsc2UgeworICAgICAgICBib29sIHVzZVJl
bmRlcmVkVGV4dCA9ICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKHRl
eHQpLCBzZWxlY3RUYWcpOworICAgICAgICBTdHJpbmcgY29udGVudCA9IHVzZVJlbmRlcmVkVGV4
dCA/IHJlbmRlcmVkVGV4dCh0ZXh0LCBtX3JhbmdlKSA6IHN0cmluZ1ZhbHVlRm9yUmFuZ2UodGV4
dCwgbV9yYW5nZSk7CisgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOworICAgICAgICBhcHBl
bmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoYnVmZmVyLCBjb250ZW50LmNoYXJhY3RlcnMo
KSwgY29udGVudC5sZW5ndGgoKSwgRW50aXR5TWFza0luUENEQVRBKTsKKyAgICAgICAgYXBwZW5k
KG91dCwgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChTdHJpbmc6OmFkb3B0KGJ1
ZmZlciksIHRleHQpKTsKICAgICB9CiAKLSAgICBib29sIHVzZVJlbmRlcmVkVGV4dCA9ICFlbmNs
b3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKHRleHQpLCBzZWxlY3RUYWcpOwot
ICAgIFN0cmluZyBjb250ZW50ID0gdXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRleHQs
IG1fcmFuZ2UpIDogc3RyaW5nVmFsdWVGb3JSYW5nZSh0ZXh0LCBtX3JhbmdlKTsKLSAgICBWZWN0
b3I8VUNoYXI+IGJ1ZmZlcjsKLSAgICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMo
YnVmZmVyLCBjb250ZW50LmNoYXJhY3RlcnMoKSwgY29udGVudC5sZW5ndGgoKSwgRW50aXR5TWFz
a0luUENEQVRBKTsKLSAgICBhcHBlbmQob3V0LCBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdl
Rm9ybWF0KFN0cmluZzo6YWRvcHQoYnVmZmVyKSwgdGV4dCkpOworICAgIGlmICh3cmFwcGluZ1Nw
YW4pCisgICAgICAgIGFwcGVuZChvdXQsIHN0eWxlTm9kZUNsb3NlVGFnKCkpOwogfQogICAgIAog
U3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpyZW5kZXJlZFRleHQoY29uc3QgTm9kZSog
bm9kZSwgY29uc3QgUmFuZ2UqIHJhbmdlKQpAQCAtMjQ4LDE1ICsyOTIsMzMgQEAKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIEF0dHJpYnV0
ZSogYXR0cmlidXRlID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgLy8g
V2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgc2VwYXJhdGVseSwgYmVsb3cuCi0gICAg
ICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSA9PSBzdHlsZUF0dHIgJiYgZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUpKQorICAg
ICAgICBpZiAoYXR0cmlidXRlLT5uYW1lKCkgPT0gc3R5bGVBdHRyICYmIGVsZW1lbnQtPmlzSFRN
TEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5SW5saW5lIHx8IHNo
b3VsZEFwcGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KSkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgYXBwZW5kQXR0cmlidXRlKG91dCwgZWxlbWVudCwgKmF0dHJpYnV0ZSwgMCk7CiAg
ICAgfQogCiAgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3Rh
dGUoKSB8fCBhZGREaXNwbGF5SW5saW5lKSkgewogICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxl
PiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHRvSFRNTEVsZW1lbnQoZWxlbWVudCktPmdl
dElubGluZVN0eWxlRGVjbCgpKTsKLSAgICAgICAgaWYgKHNob3VsZEFubm90YXRlKCkpCisgICAg
ICAgIGlmIChzaG91bGRBbm5vdGF0ZSgpKSB7CiAgICAgICAgICAgICBzdHlsZS0+bWVyZ2VTdHls
ZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24odG9IVE1MRWxlbWVudChlbGVtZW50KSk7CisKKyAg
ICAgICAgICAgIGlmIChzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxlbWVudCkpIHsKKyAgICAg
ICAgICAgICAgICBtX3dyYXBwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVtZW50
LCBFZGl0aW5nU3R5bGU6OkVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5k
Q29sb3JJbkVmZmVjdCk7CisKKyAgICAgICAgICAgICAgICAvLyBTdHlsZXMgdGhhdCBNYWlsIGJs
b2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcGxhY2VkIG9uIHRoZSBNYWlsIGJs
b2NrcXVvdGUsCisgICAgICAgICAgICAgICAgLy8gdG8gaGVscCB1cyBkaWZmZXJlbnRpYXRlIHRo
b3NlIHN0eWxlcyBmcm9tIG9uZXMgdGhhdCB0aGUgdXNlciBoYXMgYXBwbGllZC4KKyAgICAgICAg
ICAgICAgICAvLyBUaGlzIGhlbHBzIHVzIGdldCB0aGUgY29sb3Igb2YgY29udGVudCBwYXN0ZWQg
aW50byBibG9ja3F1b3RlcyByaWdodC4KKyAgICAgICAgICAgICAgICBtX3dyYXBwaW5nU3R5bGUt
PnJlbW92ZVN0eWxlQWRkZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShmaXJzdFBvc2l0aW9u
SW5PckJlZm9yZU5vZGUoZWxlbWVudCksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGlu
Z0JvdW5kYXJ5KSk7CisgICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICAvLyBDYWxs
IGNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzIGZpcnN0IG9yIG90aGVyd2lzZSBpdCds
bCBjb3B5IHRoZSB2YWx1ZSBvdmVyIGZyb20gaW4tZWZmZWN0IHRvIHRleHQtZGVjb3JhdGlvbnMu
CisgICAgICAgICAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRleHREZWNvcmF0aW9u
UHJvcGVydGllcygpOworICAgICAgICAgICAgICAgIG1fd3JhcHBpbmdTdHlsZS0+cmVtb3ZlUHJv
cGVydGllc0luRWxlbWVudERlZmF1bHRTdHlsZSh0b0hUTUxFbGVtZW50KGVsZW1lbnQpKTsKKwor
ICAgICAgICAgICAgICAgIGJvb2wgYXJlT3ZlcnJpZGVzT25Db25mbGljdCA9IGZhbHNlOworICAg
ICAgICAgICAgICAgIHN0eWxlLT5zdHlsZSgpLT5tZXJnZShtX3dyYXBwaW5nU3R5bGUtPnN0eWxl
KCksIGFyZU92ZXJyaWRlc09uQ29uZmxpY3QpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAg
ICAgICAgIGlmIChhZGREaXNwbGF5SW5saW5lKQogICAgICAgICAgICAgc3R5bGUtPnN0eWxlKCkt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmUsIHRydWUpOwog
CkBAIC0yNzEsNiArMzMzLDI5IEBACiAgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShv
dXQsIHN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKICAgICAgICAg
ICAgIG91dC5hcHBlbmQoJ1wiJyk7CiAgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKHNob3VsZEFw
cGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KSAmJiBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxl
bWVudCkpIHsKKyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5
bGU6OmNyZWF0ZSh0b0hUTUxFbGVtZW50KGVsZW1lbnQpLT5nZXRJbmxpbmVTdHlsZURlY2woKSk7
CisKKyAgICAgICAgbV93cmFwcGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoZWxlbWVu
dCwgRWRpdGluZ1N0eWxlOjpFZGl0aW5nSW5oZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dyb3Vu
ZENvbG9ySW5FZmZlY3QpOworCisgICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90
ZXMgY29udHJpYnV0ZSBzaG91bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90
ZSwKKyAgICAgICAgLy8gdG8gaGVscCB1cyBkaWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBmcm9t
IG9uZXMgdGhhdCB0aGUgdXNlciBoYXMgYXBwbGllZC4KKyAgICAgICAgLy8gVGhpcyBoZWxwcyB1
cyBnZXQgdGhlIGNvbG9yIG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQu
CisgICAgICAgIG1fd3JhcHBpbmdTdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3Np
bmdOb2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShlbGVtZW50KSwgaXNNYWls
QmxvY2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKKworICAgICAgICAvLyBDYWxs
IGNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzIGZpcnN0IG9yIG90aGVyd2lzZSBpdCds
bCBjb3B5IHRoZSB2YWx1ZSBvdmVyIGZyb20gaW4tZWZmZWN0IHRvIHRleHQtZGVjb3JhdGlvbnMu
CisgICAgICAgIG1fd3JhcHBpbmdTdHlsZS0+Y29sbGFwc2VUZXh0RGVjb3JhdGlvblByb3BlcnRp
ZXMoKTsKKyAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5yZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50
RGVmYXVsdFN0eWxlKHRvSFRNTEVsZW1lbnQoZWxlbWVudCkpOworICAgICAgICAKKyAgICAgICAg
Ym9vbCBhcmVPdmVycmlkZXNPbkNvbmZsaWN0ID0gZmFsc2U7CisgICAgICAgIHN0eWxlLT5zdHls
ZSgpLT5tZXJnZShtX3dyYXBwaW5nU3R5bGUtPnN0eWxlKCksIGFyZU92ZXJyaWRlc09uQ29uZmxp
Y3QpOworCisgICAgICAgIGlmICghc3R5bGUtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgREVG
SU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0eWxlUHJlZml4LCAoIiBzdHlsZT1cIiIp
KTsKKyAgICAgICAgICAgIGFwcGVuZChvdXQsIHN0eWxlUHJlZml4KTsKKyAgICAgICAgICAgIGFw
cGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgc3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSwgZG9jdW1l
bnRJc0hUTUwpOworICAgICAgICAgICAgb3V0LmFwcGVuZCgnXCInKTsKKyAgICAgICAgfQogICAg
IH0KIAogICAgIGFwcGVuZENsb3NlVGFnKG91dCwgZWxlbWVudCk7CkBAIC0yNzgsNiArMzYzLDI2
IEBACiAKIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2RlcyhOb2Rl
KiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQpCiB7CisgICAgaWYgKCFtX2hpZ2hlc3ROb2RlVG9C
ZVNlcmlhbGl6ZWQpIHsKKyAgICAgICAgTm9kZSogbGFzdENsb3NlZCA9IHRyYXZlcnNlTm9kZXNG
b3JTZXJpYWxpemF0aW9uKHN0YXJ0Tm9kZSwgcGFzdEVuZCwgZmFsc2UpOworICAgICAgICBtX2hp
Z2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSBsYXN0Q2xvc2VkOworICAgIH0KKyAgICAKKyAgICBO
b2RlKiBwYXJlbnRPZkhpZ2hlc3ROb2RlID0gbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID8g
bV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgOiAwOworICAgIGlmIChw
YXJlbnRPZkhpZ2hlc3ROb2RlKSB7CisgICAgICAgIG1fd3JhcHBpbmdTdHlsZSA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKHBhcmVudE9mSGlnaGVzdE5vZGUsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0lu
aGVyaXRhYmxlUHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAg
ICAvLyBTdHlsZXMgdGhhdCBNYWlsIGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkg
YmUgcGxhY2VkIG9uIHRoZSBNYWlsIGJsb2NrcXVvdGUsCisgICAgICAgIC8vIHRvIGhlbHAgdXMg
ZGlmZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFw
cGxpZWQuCisgICAgICAgIC8vIFRoaXMgaGVscHMgdXMgZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50
IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJpZ2h0LgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUt
PnJlbW92ZVN0eWxlQWRkZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShmaXJzdFBvc2l0aW9u
SW5Ob2RlKHBhcmVudE9mSGlnaGVzdE5vZGUpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0Vk
aXRpbmdCb3VuZGFyeSkpOworICAgIH0KKworICAgIHJldHVybiB0cmF2ZXJzZU5vZGVzRm9yU2Vy
aWFsaXphdGlvbihzdGFydE5vZGUsIHBhc3RFbmQsIHRydWUpOworfQorCitOb2RlKiBTdHlsZWRN
YXJrdXBBY2N1bXVsYXRvcjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oTm9kZSogc3Rh
cnROb2RlLCBOb2RlKiBwYXN0RW5kLCBib29sIHNob3VsZEVtaXQpCit7CiAgICAgVmVjdG9yPE5v
ZGUqPiBhbmNlc3RvcnNUb0Nsb3NlOwogICAgIE5vZGUqIG5leHQ7CiAgICAgTm9kZSogbGFzdENs
b3NlZCA9IDA7CkBAIC0zMDQsMTEgKzQwOSwxMyBAQAogICAgICAgICAgICAgICAgIG5leHQgPSBw
YXN0RW5kOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQWRkIHRoZSBub2RlIHRv
IHRoZSBtYXJrdXAgaWYgd2UncmUgbm90IHNraXBwaW5nIHRoZSBkZXNjZW5kYW50cwotICAgICAg
ICAgICAgYXBwZW5kU3RhcnRUYWcobik7CisgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAg
ICAgICAgICAgICAgICBhcHBlbmRTdGFydFRhZyhuKTsKIAogICAgICAgICAgICAgLy8gSWYgbm9k
ZSBoYXMgbm8gY2hpbGRyZW4sIGNsb3NlIHRoZSB0YWcgbm93LgogICAgICAgICAgICAgaWYgKCFu
LT5jaGlsZE5vZGVDb3VudCgpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kRW5kVGFnKG4pOwor
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgICAgICBhcHBl
bmRFbmRUYWcobik7CiAgICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9IG47CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG9wZW5lZFRhZyA9IHRydWU7CkBAIC0zMjUsNyAr
NDMyLDggQEAKICAgICAgICAgICAgICAgICBpZiAobmV4dCAhPSBwYXN0RW5kICYmIG5leHQtPmlz
RGVzY2VuZGFudE9mKGFuY2VzdG9yKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAg
ICAgICAgICAgICAgLy8gTm90IGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLCBjbG9zZSBhbmNlc3Rv
cnMgdXAgdG8gc2libGluZyBvZiBuZXh0IG5vZGUuCi0gICAgICAgICAgICAgICAgYXBwZW5kRW5k
VGFnKGFuY2VzdG9yKTsKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAg
ICAgICAgICAgICAgYXBwZW5kRW5kVGFnKGFuY2VzdG9yKTsKICAgICAgICAgICAgICAgICBsYXN0
Q2xvc2VkID0gYW5jZXN0b3I7CiAgICAgICAgICAgICAgICAgYW5jZXN0b3JzVG9DbG9zZS5yZW1v
dmVMYXN0KCk7CiAgICAgICAgICAgICB9CkBAIC0zNDAsNyArNDQ4LDggQEAKICAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAvLyBvciBiKSBhbmNl
c3RvcnMgdGhhdCB3ZSBuZXZlciBlbmNvdW50ZXJlZCBkdXJpbmcgYSBwcmUtb3JkZXIgdHJhdmVy
c2FsIHN0YXJ0aW5nIGF0IHN0YXJ0Tm9kZToKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0
YXJ0Tm9kZS0+aXNEZXNjZW5kYW50T2YocGFyZW50KSk7Ci0gICAgICAgICAgICAgICAgICAgIHdy
YXBXaXRoTm9kZShwYXJlbnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBXaXRoTm9kZShwYXJlbnQpOwogICAgICAgICAg
ICAgICAgICAgICBsYXN0Q2xvc2VkID0gcGFyZW50OwogICAgICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIH0KQEAgLTUxMyw3ICs2MjIsMTMgQEAKIAogICAgIGRvY3VtZW50LT51cGRhdGVMYXlv
dXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxh
dG9yIGFjY3VtdWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgc2hvdWxkQW5ub3RhdGUs
IHVwZGF0ZWRSYW5nZS5nZXQoKSk7CisgICAgTm9kZSogYm9keSA9IGVuY2xvc2luZ05vZGVXaXRo
VGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUoY29tbW9uQW5jZXN0b3IpLCBib2R5VGFnKTsKKyAgICBO
b2RlKiBmdWxseVNlbGVjdGVkUm9vdCA9IDA7CisgICAgLy8gRklYTUU6IERvIHRoaXMgZm9yIGFs
bCBmdWxseSBzZWxlY3RlZCBibG9ja3MsIG5vdCBqdXN0IHRoZSBib2R5LgorICAgIGlmIChib2R5
ICYmIGFyZVJhbmdlc0VxdWFsKFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50
c09mTm9kZShib2R5KS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCByYW5nZSkpCisgICAgICAg
IGZ1bGx5U2VsZWN0ZWRSb290ID0gYm9keTsKKyAgICBOb2RlKiBzcGVjaWFsQ29tbW9uQW5jZXN0
b3IgPSBoaWdoZXN0QW5jZXN0b3JUb1dyYXBNYXJrdXAodXBkYXRlZFJhbmdlLmdldCgpLCBmdWxs
eVNlbGVjdGVkUm9vdCwgc2hvdWxkQW5ub3RhdGUpOworICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxh
dG9yIGFjY3VtdWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgc2hvdWxkQW5ub3RhdGUs
IHVwZGF0ZWRSYW5nZS5nZXQoKSwgc3BlY2lhbENvbW1vbkFuY2VzdG9yKTsKICAgICBOb2RlKiBw
YXN0RW5kID0gdXBkYXRlZFJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKIAogICAgIE5vZGUqIHN0YXJ0
Tm9kZSA9IHVwZGF0ZWRSYW5nZS0+Zmlyc3ROb2RlKCk7CkBAIC01MzksMTQgKzY1NCw2IEBACiAg
ICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIAotICAgIE5vZGUqIGJvZHkgPSBlbmNsb3NpbmdO
b2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2VzdG9yKSwgYm9keVRhZyk7
Ci0gICAgTm9kZSogZnVsbHlTZWxlY3RlZFJvb3QgPSAwOwotICAgIC8vIEZJWE1FOiBEbyB0aGlz
IGZvciBhbGwgZnVsbHkgc2VsZWN0ZWQgYmxvY2tzLCBub3QganVzdCB0aGUgYm9keS4KLSAgICBp
ZiAoYm9keSAmJiBhcmVSYW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9t
Q29udGVudHNPZk5vZGUoYm9keSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgcmFuZ2UpKQot
ICAgICAgICBmdWxseVNlbGVjdGVkUm9vdCA9IGJvZHk7Ci0KLSAgICBOb2RlKiBzcGVjaWFsQ29t
bW9uQW5jZXN0b3IgPSBoaWdoZXN0QW5jZXN0b3JUb1dyYXBNYXJrdXAodXBkYXRlZFJhbmdlLmdl
dCgpLCBmdWxseVNlbGVjdGVkUm9vdCwgc2hvdWxkQW5ub3RhdGUpOwotCiAgICAgTm9kZSogbGFz
dENsb3NlZCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKHN0YXJ0Tm9kZSwgcGFzdEVuZCk7
CiAKICAgICBpZiAoc3BlY2lhbENvbW1vbkFuY2VzdG9yICYmIGxhc3RDbG9zZWQpIHsKQEAgLTU4
NiwyMCArNjkzLDYgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIEFkZCBhIHdyYXBwZXIg
c3BhbiB3aXRoIHRoZSBzdHlsZXMgdGhhdCBhbGwgb2YgdGhlIG5vZGVzIGluIHRoZSBtYXJrdXAg
aW5oZXJpdC4KLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPZkxhc3RDbG9zZWQgPSBsYXN0Q2xv
c2VkID8gbGFzdENsb3NlZC0+cGFyZW50Tm9kZSgpIDogMDsKLSAgICBpZiAocGFyZW50T2ZMYXN0
Q2xvc2VkICYmIHBhcmVudE9mTGFzdENsb3NlZC0+cmVuZGVyZXIoKSkgewotICAgICAgICBSZWZQ
dHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBhcmVudE9mTGFz
dENsb3NlZCwgRWRpdGluZ1N0eWxlOjpFZGl0aW5nSW5oZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFj
a2dyb3VuZENvbG9ySW5FZmZlY3QpOwotCi0gICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxv
Y2txdW90ZXMgY29udHJpYnV0ZSBzaG91bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxv
Y2txdW90ZSwgdG8gaGVscAotICAgICAgICAvLyB1cyBkaWZmZXJlbnRpYXRlIHRob3NlIHN0eWxl
cyBmcm9tIG9uZXMgdGhhdCB0aGUgdXNlciBoYXMgYXBwbGllZC4gIFRoaXMgaGVscHMgdXMKLSAg
ICAgICAgLy8gZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVz
IHJpZ2h0LgotICAgICAgICBzdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdO
b2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk5vZGUocGFyZW50T2ZMYXN0Q2xvc2VkKSwgaXNNYWls
QmxvY2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKLQotICAgICAgICBpZiAoIXN0
eWxlLT5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhY2N1bXVsYXRvci53cmFwV2l0aFN0eWxlTm9k
ZShzdHlsZS0+c3R5bGUoKSwgZG9jdW1lbnQpOwotICAgIH0KLQogICAgIC8vIEZJWE1FOiBUaGUg
aW50ZXJjaGFuZ2UgbmV3bGluZSBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBibG9jayB0aGF0IGl0
J3MgaW4sIG5vdCBhZnRlciBhbGwgb2YgdGhlIGNvbnRlbnQsIHVuY29uZGl0aW9uYWxseS4KICAg
ICBpZiAoc2hvdWxkQW5ub3RhdGUgPT0gQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSAmJiBuZWVkSW50
ZXJjaGFuZ2VOZXdsaW5lQWZ0ZXIodmlzaWJsZUVuZC5wcmV2aW91cygpKSkKICAgICAgICAgYWNj
dW11bGF0b3IuYXBwZW5kU3RyaW5nKGludGVyY2hhbmdlTmV3bGluZVN0cmluZyk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCShyZXZpc2lvbiA4NzUzMikKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtODYsNyArODYsNyBAQAogICAgIHJldHVybiBjb3B5RWRpdGluZ1Byb3BlcnRpZXMoc3R5bGUu
Z2V0KCkpOwogfQogCi1zdGF0aWMgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBn
ZXRQcm9wZXJ0aWVzTm90SW4oQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVXaXRoUmVkdW5kYW50
UHJvcGVydGllcywgQ1NTU3R5bGVEZWNsYXJhdGlvbiogYmFzZVN0eWxlKTsKK3N0YXRpYyBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGdldFByb3BlcnRpZXNOb3RJbihEb2N1bWVu
dCosIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIENT
U1N0eWxlRGVjbGFyYXRpb24qIGJhc2VTdHlsZSk7CiAKIGNsYXNzIEhUTUxFbGVtZW50RXF1aXZh
bGVudCB7CiBwdWJsaWM6CkBAIC0yOTksMjggKzI5OSwzMSBAQAogewogfQogCi1zdGF0aWMgUkdC
QTMyIGNzc1ZhbHVlVG9SR0JBKENTU1ZhbHVlKiBjb2xvclZhbHVlKQorc3RhdGljIFJHQkEzMiBj
c3NWYWx1ZVRvUkdCQShEb2N1bWVudCogZG9jdW1lbnQsIENTU1ZhbHVlKiBjb2xvclZhbHVlKQog
ewogICAgIGlmICghY29sb3JWYWx1ZSB8fCAhY29sb3JWYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQogICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OwotICAgIAorCiAgICAgQ1NTUHJp
bWl0aXZlVmFsdWUqIHByaW1pdGl2ZUNvbG9yID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFs
dWUqPihjb2xvclZhbHVlKTsKICAgICBpZiAocHJpbWl0aXZlQ29sb3ItPnByaW1pdGl2ZVR5cGUo
KSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1JHQkNPTE9SKQogICAgICAgICByZXR1cm4gcHJp
bWl0aXZlQ29sb3ItPmdldFJHQkEzMlZhbHVlKCk7Ci0gICAgCisKKyAgICBpZiAoZG9jdW1lbnQg
JiYgcHJpbWl0aXZlQ29sb3ItPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6
Q1NTX0lERU5UICYmIHByaW1pdGl2ZUNvbG9yLT5nZXRJZGVudCgpID09IENTU1ZhbHVlV2Via2l0
TGluaykKKyAgICAgICAgcmV0dXJuIGRvY3VtZW50LT5saW5rQ29sb3IoKS5yZ2IoKTsKKwogICAg
IFJHQkEzMiByZ2JhID0gMDsKICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3JW
YWx1ZS0+Y3NzVGV4dCgpKTsKICAgICByZXR1cm4gcmdiYTsKIH0KIAotc3RhdGljIGlubGluZSBS
R0JBMzIgZ2V0UkdCQUZvbnRDb2xvcihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKK3N0YXRp
YyBpbmxpbmUgUkdCQTMyIGdldFJHQkFGb250Q29sb3IoRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NT
dHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKIHsKLSAgICByZXR1cm4gY3NzVmFsdWVUb1JHQkEoc3R5
bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlDb2xvcikuZ2V0KCkpOworICAgIHJl
dHVybiBjc3NWYWx1ZVRvUkdCQShkb2N1bWVudCwgc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlDb2xvcikuZ2V0KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJHQkEzMiByZ2Jh
QmFja2dyb3VuZENvbG9ySW5FZmZlY3QoTm9kZSogbm9kZSkKK3N0YXRpYyBpbmxpbmUgUkdCQTMy
IHJnYmFCYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5v
ZGUpCiB7Ci0gICAgcmV0dXJuIGNzc1ZhbHVlVG9SR0JBKGJhY2tncm91bmRDb2xvckluRWZmZWN0
KG5vZGUpLmdldCgpKTsKKyAgICByZXR1cm4gY3NzVmFsdWVUb1JHQkEoZG9jdW1lbnQsIGJhY2tn
cm91bmRDb2xvckluRWZmZWN0KG5vZGUpLmdldCgpKTsKIH0KIAogdm9pZCBFZGl0aW5nU3R5bGU6
OmluaXQoTm9kZSogbm9kZSwgUHJvcGVydGllc1RvSW5jbHVkZSBwcm9wZXJ0aWVzVG9JbmNsdWRl
KQpAQCAtNTQ1LDcgKzU0OCwxMCBAQAogICAgIGlmICghdGV4dERlY29yYXRpb25zSW5FZmZlY3Qp
CiAgICAgICAgIHJldHVybjsKIAotICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVRleHREZWNvcmF0aW9uLCB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdC0+Y3NzVGV4dCgp
LCBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlQcmlvcml0eShDU1NQcm9wZXJ0eVRleHREZWNv
cmF0aW9uKSk7CisgICAgaWYgKHRleHREZWNvcmF0aW9uc0luRWZmZWN0LT5pc1ZhbHVlTGlzdCgp
KQorICAgICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVj
b3JhdGlvbiwgdGV4dERlY29yYXRpb25zSW5FZmZlY3QtPmNzc1RleHQoKSwgbV9tdXRhYmxlU3R5
bGUtPmdldFByb3BlcnR5UHJpb3JpdHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikpOworICAg
IGVsc2UKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24pOwogICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQ
cm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKIH0KIApAQCAtNTYxLDcgKzU2
Nyw4IEBACiBUcmlTdGF0ZSBFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZShDU1NTdHlsZURl
Y2xhcmF0aW9uKiBzdHlsZVRvQ29tcGFyZSwgU2hvdWxkSWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVz
IHNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGllcykgY29uc3QKIHsKICAgICAvLyBGSVhNRTog
dGFrZSBjYXJlIG9mIGJhY2tncm91bmQtY29sb3IgaW4gZWZmZWN0Ci0gICAgUmVmUHRyPENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkaWZmZXJlbmNlID0gZ2V0UHJvcGVydGllc05vdEluKG1f
bXV0YWJsZVN0eWxlLmdldCgpLCBzdHlsZVRvQ29tcGFyZSk7CisgICAgLy8gRklYTUU6IGdldFBy
b3BlcnRpZXNOb3RJbiBuZWVkcyBkb2N1bWVudAorICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbj4gZGlmZmVyZW5jZSA9IGdldFByb3BlcnRpZXNOb3RJbigwLCBtX211dGFibGVT
dHlsZS5nZXQoKSwgc3R5bGVUb0NvbXBhcmUpOwogCiAgICAgaWYgKHNob3VsZElnbm9yZVRleHRP
bmx5UHJvcGVydGllcyA9PSBJZ25vcmVUZXh0T25seVByb3BlcnRpZXMpCiAgICAgICAgIGRpZmZl
cmVuY2UtPnJlbW92ZVByb3BlcnRpZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMsIFdURl9BUlJB
WV9MRU5HVEgodGV4dE9ubHlQcm9wZXJ0aWVzKSk7CkBAIC03MTQsNyArNzIxLDggQEAKIAogYm9v
bCBFZGl0aW5nU3R5bGU6OnN0eWxlSXNQcmVzZW50SW5Db21wdXRlZFN0eWxlT2ZOb2RlKE5vZGUq
IG5vZGUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuICFtX211dGFibGVTdHlsZSB8fCAhZ2V0UHJvcGVy
dGllc05vdEluKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBjb21wdXRlZFN0eWxlKG5vZGUpLmdldCgp
KS0+bGVuZ3RoKCk7CisgICAgQVNTRVJUKG5vZGUpOworICAgIHJldHVybiAhbV9tdXRhYmxlU3R5
bGUgfHwgIWdldFByb3BlcnRpZXNOb3RJbihub2RlLT5kb2N1bWVudCgpLCBtX211dGFibGVTdHls
ZS5nZXQoKSwgY29tcHV0ZWRTdHlsZShub2RlKS5nZXQoKSktPmxlbmd0aCgpOwogfQogCiB2b2lk
IEVkaXRpbmdTdHlsZTo6cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24s
IFNob3VsZFByZXNlcnZlV3JpdGluZ0RpcmVjdGlvbiBzaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJl
Y3Rpb24pCkBAIC03MzQsMTIgKzc0MiwxNCBAQAogICAgICAgICBkaXJlY3Rpb24gPSBtX211dGFi
bGVTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAgICAg
fQogCisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcG9zaXRpb24uYW5jaG9yTm9kZSgpID8gcG9z
aXRpb24uYW5jaG9yTm9kZSgpLT5kb2N1bWVudCgpIDogMDsKKwogICAgIHN0eWxlLT5tX211dGFi
bGVTdHlsZS0+ZGlmZihtX211dGFibGVTdHlsZS5nZXQoKSk7Ci0gICAgaWYgKGdldFJHQkFGb250
Q29sb3IobV9tdXRhYmxlU3R5bGUuZ2V0KCkpID09IGdldFJHQkFGb250Q29sb3Ioc3R5bGUtPm1f
bXV0YWJsZVN0eWxlLmdldCgpKSkKKyAgICBpZiAoZ2V0UkdCQUZvbnRDb2xvcihkb2N1bWVudCwg
bV9tdXRhYmxlU3R5bGUuZ2V0KCkpID09IGdldFJHQkFGb250Q29sb3IoZG9jdW1lbnQsIHN0eWxl
LT5tX211dGFibGVTdHlsZS5nZXQoKSkpCiAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yKTsKIAogICAgIGlmIChoYXNUcmFuc3BhcmVudEJhY2tn
cm91bmRDb2xvcihtX211dGFibGVTdHlsZS5nZXQoKSkKLSAgICAgICAgfHwgY3NzVmFsdWVUb1JH
QkEobV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3Jv
dW5kQ29sb3IpLmdldCgpKSA9PSByZ2JhQmFja2dyb3VuZENvbG9ySW5FZmZlY3QocG9zaXRpb24u
Y29udGFpbmVyTm9kZSgpKSkKKyAgICAgICAgfHwgY3NzVmFsdWVUb1JHQkEoZG9jdW1lbnQsIG1f
bXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENv
bG9yKS5nZXQoKSkgPT0gcmdiYUJhY2tncm91bmRDb2xvckluRWZmZWN0KGRvY3VtZW50LCBwb3Np
dGlvbi5jb250YWluZXJOb2RlKCkpKQogICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJv
cGVydHkoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKHVuaWNvZGVCaWRp
ICYmIHVuaWNvZGVCaWRpLT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKQEAgLTgwNSwxMSArODE1LDEw
IEBACiAgICAgfQogfQogCi1zdGF0aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQor
c3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1h
dGNoZWRSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgZmlsdGVyKQog
ewogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPENTU1J1bGVMaXN0PiBt
YXRjaGVkUnVsZXMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxl
UnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsCi0gICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OkF1dGhv
ckNTU1J1bGVzIHwgQ1NTU3R5bGVTZWxlY3Rvcjo6Q3Jvc3NPcmlnaW5DU1NSdWxlcyk7CisgICAg
UmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5z
dHlsZVNlbGVjdG9yKCktPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIGZpbHRlcik7CiAg
ICAgaWYgKG1hdGNoZWRSdWxlcykgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
bWF0Y2hlZFJ1bGVzLT5sZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2hlZFJ1
bGVzLT5pdGVtKGkpLT50eXBlKCkgPT0gQ1NTUnVsZTo6U1RZTEVfUlVMRSkgewpAQCAtODI0LDcg
KzgzMyw4IEBACiAKIHZvaWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzKFN0eWxl
ZEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBzdHlsZUZyb21NYXRjaGVkUnVsZXMgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVt
ZW50KGVsZW1lbnQpOworICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5
bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVt
ZW50LAorICAgICAgICBDU1NTdHlsZVNlbGVjdG9yOjpBdXRob3JDU1NSdWxlcyB8IENTU1N0eWxl
U2VsZWN0b3I6OkNyb3NzT3JpZ2luQ1NTUnVsZXMpOwogICAgIC8vIFN0eWxlcyBmcm9tIHRoZSBp
bmxpbmUgc3R5bGUgZGVjbGFyYXRpb24sIGhlbGQgaW4gdGhlIHZhcmlhYmxlICJzdHlsZSIsIHRh
a2UgcHJlY2VkZW5jZSAKICAgICAvLyBvdmVyIHRob3NlIGZyb20gbWF0Y2hlZCBydWxlcy4KICAg
ICBpZiAobV9tdXRhYmxlU3R5bGUpCkBAIC04NTcsMTYgKzg2Nyw0MCBAQAogICAgIG1fbXV0YWJs
ZVN0eWxlLT5tZXJnZShmcm9tQ29tcHV0ZWRTdHlsZS5nZXQoKSk7CiB9CiAKK3ZvaWQgRWRpdGlu
Z1N0eWxlOjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKFN0eWxlZEVsZW1l
bnQqIGVsZW1lbnQpCit7CisgICAgaWYgKCFtX211dGFibGVTdHlsZSB8fCAhbV9tdXRhYmxlU3R5
bGUtPmxlbmd0aCgpKQorICAgICAgICByZXR1cm47CisKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24+IGRlZmF1bHRTdHlsZSA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVs
ZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvcjo6VUFBbmRVc2VyQ1NTUnVsZXMpOworCisg
ICAgVmVjdG9yPGludD4gcHJvcGVydGllc1RvUmVtb3ZlKGRlZmF1bHRTdHlsZS0+bGVuZ3RoKCkp
OworICAgIHNpemVfdCBpID0gMDsKKyAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29u
c3RfaXRlcmF0b3IgZW5kID0gZGVmYXVsdFN0eWxlLT5lbmQoKTsKKyAgICBmb3IgKENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBpdCA9IGRlZmF1bHRTdHlsZS0+YmVn
aW4oKTsgaXQgIT0gZW5kOyArK2l0LCArK2kpCisgICAgICAgIHByb3BlcnRpZXNUb1JlbW92ZVtp
XSA9IGl0LT5pZCgpOworCisgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJblNl
dChwcm9wZXJ0aWVzVG9SZW1vdmUuZGF0YSgpLCBwcm9wZXJ0aWVzVG9SZW1vdmUuc2l6ZSgpKTsK
K30KKwogdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzKFN0eWxlZEVsZW1l
bnQqIGVsZW1lbnQpCiB7CisgICAgQVNTRVJUKGVsZW1lbnQpOwogICAgIGlmICghbV9tdXRhYmxl
U3R5bGUpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9y
RWxlbWVudChlbGVtZW50KTsKLSAgICBpZiAoIXN0eWxlRnJvbU1hdGNoZWRSdWxlcykKLSAgICAg
ICAgcmV0dXJuOworICAgIC8vIDEuIFJlbW92ZSBzdHlsZSBmcm9tIG1hdGNoZWQgcnVsZXMgYmVj
YXVzZSBzdHlsZSByZW1haW4gd2l0aG91dCByZXBlYXRpbmcgaXQgaW4gaW5saW5lIHN0eWxlIGRl
Y2xhcmF0aW9uCisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUZy
b21NYXRjaGVkUnVsZXMgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQs
IENTU1N0eWxlU2VsZWN0b3I6OkF1dGhvckNTU1J1bGVzIHwgQ1NTU3R5bGVTZWxlY3Rvcjo6Q3Jv
c3NPcmlnaW5DU1NSdWxlcyk7CisgICAgaWYgKHN0eWxlRnJvbU1hdGNoZWRSdWxlcyAmJiBzdHls
ZUZyb21NYXRjaGVkUnVsZXMtPmxlbmd0aCgpKQorICAgICAgICBtX211dGFibGVTdHlsZSA9IGdl
dFByb3BlcnRpZXNOb3RJbihlbGVtZW50LT5kb2N1bWVudCgpLCBtX211dGFibGVTdHlsZS5nZXQo
KSwgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLmdldCgpKTsKIAotICAgIG1fbXV0YWJsZVN0eWxlID0g
Z2V0UHJvcGVydGllc05vdEluKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBzdHlsZUZyb21NYXRjaGVk
UnVsZXMuZ2V0KCkpOworICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBwcmVzZW50IGluIHBhcmVudCBh
bmQgbm90IG92ZXJyaWRlbiBieSBtYXRjaGVkIHJ1bGVzLgorICAgIFJlZlB0cjxFZGl0aW5nU3R5
bGU+IGNvbXB1dGVkU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVtZW50LT5wYXJlbnRO
b2RlKCksIEVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5kQ29sb3JJbkVm
ZmVjdCk7CisgICAgaWYgKGNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0eWxlKSB7CisgICAgICAg
IGNvbXB1dGVkU3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoZWxl
bWVudCk7CisgICAgCisgICAgICAgIG1fbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVydGllc05vdElu
KGVsZW1lbnQtPmRvY3VtZW50KCksIG1fbXV0YWJsZVN0eWxlLmdldCgpLCBjb21wdXRlZFN0eWxl
LT5tX211dGFibGVTdHlsZS5nZXQoKSk7ICAgICAgICAKKyAgICB9CiB9CiAKIHN0YXRpYyB2b2lk
IHJlY29uY2lsZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyhDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbiogc3R5bGUpCkBAIC05MDAsNyArOTM0LDcgQEAKIAogICAgIFJlZlB0cjxDU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24+IGNvbXB1dGVkU3R5bGUgPSBwb3NpdGlvbi5jb21wdXRlZFN0eWxl
KCk7CiAgICAgLy8gRklYTUU6IHRha2UgY2FyZSBvZiBiYWNrZ3JvdW5kLWNvbG9yIGluIGVmZmVj
dAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbXV0YWJsZVN0eWxlID0g
Z2V0UHJvcGVydGllc05vdEluKHN0eWxlLT5zdHlsZSgpLCBjb21wdXRlZFN0eWxlLmdldCgpKTsK
KyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IG11dGFibGVTdHlsZSA9IGdl
dFByb3BlcnRpZXNOb3RJbihkb2N1bWVudCwgc3R5bGUtPnN0eWxlKCksIGNvbXB1dGVkU3R5bGUu
Z2V0KCkpOwogCiAgICAgcmVjb25jaWxlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKG11dGFibGVT
dHlsZS5nZXQoKSk7CiAgICAgaWYgKCFkb2N1bWVudC0+ZnJhbWUoKS0+ZWRpdG9yKCktPnNob3Vs
ZFN0eWxlV2l0aENTUygpKQpAQCAtOTc1LDcgKzEwMDksNyBAQAogICAgIH0KIAogICAgIGlmIChz
dHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSkgewotICAgICAgICBt
X2FwcGx5Rm9udENvbG9yID0gQ29sb3IoZ2V0UkdCQUZvbnRDb2xvcihzdHlsZSkpLnNlcmlhbGl6
ZWQoKTsKKyAgICAgICAgbV9hcHBseUZvbnRDb2xvciA9IENvbG9yKGdldFJHQkFGb250Q29sb3Io
ZG9jdW1lbnQsIHN0eWxlKSkuc2VyaWFsaXplZCgpOwogICAgICAgICBzdHlsZS0+cmVtb3ZlUHJv
cGVydHkoQ1NTUHJvcGVydHlDb2xvcik7CiAgICAgfQogCkBAIC0xMDIwLDYgKzEwNTQsNyBAQAog
CiAgICAgLy8gQmVjYXVzZSBiIHRhZyBjYW4gb25seSBib2xkIHRleHQsIHRoZXJlIGFyZSBvbmx5
IHR3byBzdGF0ZXMgaW4gcGxhaW4gaHRtbDogYm9sZCBhbmQgbm90IGJvbGQuCiAgICAgLy8gQ29s
bGFwc2UgYWxsIG90aGVyIHZhbHVlcyB0byBlaXRoZXIgb25lIG9mIHRoZXNlIHR3byBzdGF0ZXMg
Zm9yIGVkaXRpbmcgcHVycG9zZXMuCisgICAgLy8gRklYTUU6IFdlIHNob3VsZG4ndCB0cmVhdCBi
b2xkZXIgYW5kIGxpZ2h0ZXIgbGlrZSBub3JtYWwgYW5kIGJvbGQuCiAgICAgc3dpdGNoIChzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGZvbnRXZWlnaHQuZ2V0KCkpLT5nZXRJZGVudCgp
KSB7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWUxMDA6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWUyMDA6
CkBAIC0xMDI3LDggKzEwNjIsMTAgQEAKICAgICAgICAgY2FzZSBDU1NWYWx1ZTQwMDoKICAgICAg
ICAgY2FzZSBDU1NWYWx1ZTUwMDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZU5vcm1hbDoKKyAgICAg
ICAgY2FzZSBDU1NWYWx1ZUxpZ2h0ZXI6CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg
ICAgIGNhc2UgQ1NTVmFsdWVCb2xkOgorICAgICAgICBjYXNlIENTU1ZhbHVlQm9sZGVyOgogICAg
ICAgICBjYXNlIENTU1ZhbHVlNjAwOgogICAgICAgICBjYXNlIENTU1ZhbHVlNzAwOgogICAgICAg
ICBjYXNlIENTU1ZhbHVlODAwOgpAQCAtMTAzNiw3ICsxMDczLDYgQEAKICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KIAotICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyAvLyBGb3IgQ1NT
VmFsdWVCb2xkZXIgYW5kIENTU1ZhbHVlTGlnaHRlcgogICAgIHJldHVybiBmYWxzZTsgLy8gTWFr
ZSBjb21waWxlciBoYXBweQogfQogCkBAIC0xMDU5LDcgKzEwOTUsNyBAQAogICAgIHJldHVybiBD
U1NWYWx1ZUludmFsaWQ7CiB9CiAKLVJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4g
Z2V0UHJvcGVydGllc05vdEluKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlV2l0aFJlZHVuZGFu
dFByb3BlcnRpZXMsIENTU1N0eWxlRGVjbGFyYXRpb24qIGJhc2VTdHlsZSkKK1JlZlB0cjxDU1NN
dXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHJvcGVydGllc05vdEluKERvY3VtZW50KiBkb2N1
bWVudCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywg
Q1NTU3R5bGVEZWNsYXJhdGlvbiogYmFzZVN0eWxlKQogewogICAgIEFTU0VSVChzdHlsZVdpdGhS
ZWR1bmRhbnRQcm9wZXJ0aWVzKTsKICAgICBBU1NFUlQoYmFzZVN0eWxlKTsKQEAgLTEwNzEsMTMg
KzExMDcsMTMgQEAKICAgICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJv
cGVydHlUZXh0RGVjb3JhdGlvbiwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsK
ICAgICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRU
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgp
KTsKIAotICAgIGlmIChmb250V2VpZ2h0SXNCb2xkKHJlc3VsdC5nZXQoKSkgPT0gZm9udFdlaWdo
dElzQm9sZChiYXNlU3R5bGUpKQorICAgIGlmIChiYXNlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFs
dWUoQ1NTUHJvcGVydHlGb250U2l6ZSkgJiYgZm9udFdlaWdodElzQm9sZChyZXN1bHQuZ2V0KCkp
ID09IGZvbnRXZWlnaHRJc0JvbGQoYmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwogCi0gICAgaWYgKGdldFJHQkFGb250Q29s
b3IocmVzdWx0LmdldCgpKSA9PSBnZXRSR0JBRm9udENvbG9yKGJhc2VTdHlsZSkpCisgICAgaWYg
KGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xv
cikgJiYgZ2V0UkdCQUZvbnRDb2xvcihkb2N1bWVudCwgcmVzdWx0LmdldCgpKSA9PSBnZXRSR0JB
Rm9udENvbG9yKGRvY3VtZW50LCBiYXNlU3R5bGUpKQogICAgICAgICByZXN1bHQtPnJlbW92ZVBy
b3BlcnR5KENTU1Byb3BlcnR5Q29sb3IpOwogCi0gICAgaWYgKGdldFRleHRBbGlnbm1lbnQocmVz
dWx0LmdldCgpKSA9PSBnZXRUZXh0QWxpZ25tZW50KGJhc2VTdHlsZSkpCisgICAgaWYgKGJhc2VT
dHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVRleHRBbGlnbikgJiYgZ2V0VGV4
dEFsaWdubWVudChyZXN1bHQuZ2V0KCkpID09IGdldFRleHRBbGlnbm1lbnQoYmFzZVN0eWxlKSkK
ICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbik7CiAK
ICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAkocmV2aXNpb24gODc1MzIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAg
LTc5LDcgKzc5LDYgQEAKICAgICAKICAgICB2b2lkIHJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtl
ZXBTdHlsZVNwYW5JbmxpbmUoKTsKICAgICB2b2lkIGhhbmRsZVN0eWxlU3BhbnMoKTsKLSAgICB2
b2lkIGNvcHlTdHlsZVRvQ2hpbGRyZW4oTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24qIHBhcmVudFN0eWxlKTsKICAgICB2b2lkIGhhbmRsZVBhc3RlQXNR
dW90YXRpb25Ob2RlKCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2
aW5nQ2hpbGRyZW4oTm9kZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHls
ZS5oCShyZXZpc2lvbiA4NzUzMikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsNyBAQAogICAgIHZvaWQgbWVyZ2VJ
bmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50Kik7CiAgICAgdm9pZCBtZXJnZVN0eWxl
RnJvbVJ1bGVzKFN0eWxlZEVsZW1lbnQqKTsKICAgICB2b2lkIG1lcmdlU3R5bGVGcm9tUnVsZXNG
b3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZVByb3BlcnRp
ZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoU3R5bGVkRWxlbWVudCogZWxlbWVudCk7CiAgICAgdm9p
ZCByZW1vdmVTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50Kik7CiAKICAgICBmbG9hdCBmb250
U2l6ZURlbHRhKCkgY29uc3QgeyByZXR1cm4gbV9mb250U2l6ZURlbHRhOyB9CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA4NzUzMikKKysrIFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjAxOCw3ICsyMDE4LDcgQEAKICAgICAgICAgfQogICAgIH0KIAotICAgIGlmIChtX21hdGNoQXV0
aG9yQW5kVXNlclN0eWxlcykgeworICAgIGlmIChtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcyAm
JiBydWxlc1RvSW5jbHVkZSAmIEF1dGhvckNTU1J1bGVzKSB7CiAgICAgICAgIG1fY2hlY2tlci5t
X3NhbWVPcmlnaW5Pbmx5ID0gIShydWxlc1RvSW5jbHVkZSAmIENyb3NzT3JpZ2luQ1NTUnVsZXMp
OwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBydWxlcyBpbiBhdXRob3Igc2hlZXRzLgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
NDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4NzUzMikKKysrIExheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5Nzc3LWZpeC1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTUxLDEwICs1MSw4IEBACiAiCiB8IDx1bD4KIHwgICBzdHlsZT0idGV4dC1h
bGlnbjpyaWdodDsiCi18ICAgPHVsPgotfCAgICAgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyAi
Ci18ICAgICA8bGk+Ci18ICAgICAgICJBIgorfCAgIDxsaT4KK3wgICAgICJBIgogfCAgIDxkaXY+
CiB8ICAgICA8dWw+CiB8ICAgICAgIDxsaT4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gODc1MzIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4
dC0wMTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDQgKzYsNCBAQAogZm9vCiAK
IGV4ZWNDb3B5Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJs
b2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlZGl0aW5n
Ij48L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5n
Ij48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFz
cz0iZWRpdGluZyI+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJmb250LXNp
emU6IG1lZGl1bTsgIj48ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2tx
dW90ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9zcGFuPjwv
ZGl2PgorZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxk
aXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJl
ZGl0aW5nIj48ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5m
b288L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9kaXY+CkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0
LTAxMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3NTMyKQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNiw3ICs2LDcgQEAKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmll
d0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9k
ZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFu
Z2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQ
ID4gU1BBTiA+IEIgPiBGT05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2Yg
I3RleHQgPiBCID4gRk9OVCA+IFAgPiBTUEFOID4gQiA+IEZPTlQgPiBQID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gQiA+IEZPTlQg
PiBQID4gQiA+IEZPTlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4
dCA+IEIgPiBGT05UID4gUCA+IEIgPiBGT05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZB
TFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCkBAIC0zMCwxOSArMzAsMTggQEAKIHwgICA8Zm9udD4KIHwgICAgIGZhY2U9Ik1vbmFj
byIKIHwgICAgIDxiPgotfCAgICAgICA8c3Bhbj4KLXwgICAgICAgICBjbGFzcz0iQXBwbGUtc3R5
bGUtc3BhbiIKK3wgICAgICAgPHA+CiB8ICAgICAgICAgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1l
czsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgIgotfCAgICAgICAgIDxwPgotfCAgICAgICAgICAgPGZv
bnQ+Ci18ICAgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKLXwgICAgICAgICAgICAgPGI+Ci18ICAg
ICAgICAgICAgICAgImhlbGxvIgotfCAgICAgICAgIDxwPgotfCAgICAgICAgICAgPGZvbnQ+Ci18
ICAgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKLXwgICAgICAgICAgICAgPGI+Ci18ICAgICAgICAg
ICAgICAgInRoZXJlPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgICAgICAgIDxmb250PgorfCAgICAg
ICAgICAgZmFjZT0iTW9uYWNvIgorfCAgICAgICAgICAgPGI+Cit8ICAgICAgICAgICAgICJoZWxs
byIKK3wgICAgICAgPHA+Cit8ICAgICAgICAgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgZm9u
dC13ZWlnaHQ6IG5vcm1hbDsgIgorfCAgICAgICAgIDxmb250PgorfCAgICAgICAgICAgZmFjZT0i
TW9uYWNvIgorfCAgICAgICAgICAgPGI+Cit8ICAgICAgICAgICAgICJ0aGVyZTwjc2VsZWN0aW9u
LWNhcmV0PiIKIHwgIgogCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3NTMy
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDQgKzIsNCBAQAogZm9vCiBiYXIKIGV4ZWNDb3B5
Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPmZvbyBiYXI8L3By
ZT4gPC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGlu
ZyI+IDxwcmU+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJmb250LWZhbWls
eTogVGltZXM7IHdoaXRlLXNwYWNlOiBub3JtYWw7ICI+PHByZT5mb28gYmFyPC9wcmU+PC9zcGFu
PjwvcHJlPiA8L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJl
ZGl0aW5nIj4gPHByZT48cHJlPmZvbyBiYXI8L3ByZT48L3ByZT4gPC9kaXY+CkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2Rl
LWluLXByZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3NTMyKQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMywxMCArMyw3IEBACiB8IDxwcmU+CiB8ICAgY29udGVudGVkaXRhYmxlPSJ0cnVl
IgogfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3Bh
biIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNwYWNlOiBub3JtYWw7
ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKLXwgICAgICAg
aWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxicj5iYXI8Yj5iYXo8
L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgIDxwcmU+Cit8ICAgICBjb250ZW50ZWRpdGFibGU9
InRydWUiCit8ICAgICBpZD0icHJlIgorfCAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxi
cj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gODc1MzIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsNCArNyw0IEBACiBm
b28KIGJhcgogZXhlY0N1dENvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4g
PHByZT48YnI+PC9wcmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIg
Y2xhc3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHls
ZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9vIGJh
cjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CitleGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0
ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHByZT5mb28gYmFyPC9wcmU+PC9wcmU+IDwvZGl2
Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95857</attachid>
            <date>2011-06-02 23:41:03 -0700</date>
            <delta_ts>2011-06-03 17:05:36 -0700</delta_ts>
            <desc>work in progress 5</desc>
            <filename>wip34564e</filename>
            <type>text/plain</type>
            <size>47295</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1u
b25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVu
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3OTg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogfCAgICAgIkVkaXRhYmw8I3NlbGVj
dGlvbi1hbmNob3I+ZSBwYXJhZ3JhcGggY29udGFpbmluZyBhICIKIHwgICAgIDxzcGFuPgogfCAg
ICAgICBjb250ZW50ZWRpdGFibGU9ImZhbHNlIgotfCAgICAgICBzdHlsZT0iYmFja2dyb3VuZC1j
b2xvcjogTGlnaHRHcmF5OyIKK3wgICAgICAgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigy
MTEsIDIxMSwgMjExKTsgIgogfCAgICAgICAibm9uLWVkaXRhYmxlIgogfCAgICAgIiBpbiB0aGUg
bWlkZGxlIgogfCAgICAgPGJyPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtNDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA4Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5
Nzc3LWZpeC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUxLDEwICs1MSw4IEBACiAi
CiB8IDx1bD4KIHwgICBzdHlsZT0idGV4dC1hbGlnbjpyaWdodDsiCi18ICAgPHVsPgotfCAgICAg
c3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyAiCi18ICAgICA8bGk+Ci18ICAgICAgICJBIgorfCAg
IDxsaT4KK3wgICAgICJBIgogfCAgIDxkaXY+CiB8ICAgICA8dWw+CiB8ICAgICAgIDxsaT4KSW5k
ZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMi1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LXRleHQtMDEyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC02LDQgKzYsNCBAQAogZm9vCiAKIGV4ZWNDb3B5Q29tbWFuZDogPGRpdiBpZD0idGVz
dCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2
PjwvZGl2PiA8ZGl2IGNsYXNzPSJlZGl0aW5nIj48L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxk
aXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2tx
dW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PHNwYW4gY2xhc3M9IkFwcGxl
LXN0eWxlLXNwYW4iIHN0eWxlPSJmb250LXNpemU6IG1lZGl1bTsgIj48ZGl2IGlkPSJ0ZXN0IiBj
bGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+PGRp
dj48YnI+PC9kaXY+PC9kaXY+PC9zcGFuPjwvZGl2PgorZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBp
ZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3Rl
PjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlZGl0aW5nIj48ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0i
ZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj48YnI+
PC9kaXY+PC9kaXY+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3
OTg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDExLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw3ICs2LDcgQEAKIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElO
RyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5n
RE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAw
IG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0
QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6
IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJv
bSA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gU1BBTiA+IEIgPiBGT05UID4gUCA+IEJPRFkg
PiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBCID4gRk9OVCA+IFAgPiBTUEFOID4g
QiA+IEZPTlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rp
b25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdB
VEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2Ug
ZnJvbSA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gQiA+IEZPTlQgPiBQID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IEIgPiBGT05UID4g
UCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlE
b3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24K
IEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlm
aWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCkBAIC0zMCwxOSArMzAsMTggQEAKIHwg
ICA8Zm9udD4KIHwgICAgIGZhY2U9Ik1vbmFjbyIKIHwgICAgIDxiPgotfCAgICAgICA8c3Bhbj4K
LXwgICAgICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKK3wgICAgICAgPHA+CiB8ICAgICAg
ICAgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgIgotfCAg
ICAgICAgIDxwPgotfCAgICAgICAgICAgPGZvbnQ+Ci18ICAgICAgICAgICAgIGZhY2U9Ik1vbmFj
byIKLXwgICAgICAgICAgICAgPGI+Ci18ICAgICAgICAgICAgICAgImhlbGxvIgotfCAgICAgICAg
IDxwPgotfCAgICAgICAgICAgPGZvbnQ+Ci18ICAgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKLXwg
ICAgICAgICAgICAgPGI+Ci18ICAgICAgICAgICAgICAgInRoZXJlPCNzZWxlY3Rpb24tY2FyZXQ+
IgorfCAgICAgICAgIDxmb250PgorfCAgICAgICAgICAgZmFjZT0iTW9uYWNvIgorfCAgICAgICAg
ICAgPGI+Cit8ICAgICAgICAgICAgICJoZWxsbyIKK3wgICAgICAgPHA+Cit8ICAgICAgICAgc3R5
bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgIgorfCAgICAgICAg
IDxmb250PgorfCAgICAgICAgICAgZmFjZT0iTW9uYWNvIgorfCAgICAgICAgICAgPGI+Cit8ICAg
ICAgICAgICAgICJ0aGVyZTwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgIgogCiAKSW5kZXg6IExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDg3OTg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDQg
KzIsNCBAQAogZm9vCiBiYXIKIGV4ZWNDb3B5Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9
ImVkaXRpbmciPiA8cHJlPmZvbyBiYXI8L3ByZT4gPC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8
ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHNwYW4gY2xhc3M9IkFwcGxlLXN0
eWxlLXNwYW4iIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNwYWNlOiBub3JtYWw7
ICI+PHByZT5mb28gYmFyPC9wcmU+PC9zcGFuPjwvcHJlPiA8L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1h
bmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48cHJlPmZvbyBiYXI8L3By
ZT48L3ByZT4gPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDg3OTg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4t
cHJlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywxMCArMyw3IEBACiB8IDxwcmU+
CiB8ICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgogfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18
ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTog
VGltZXM7IHdoaXRlLXNwYWNlOiBub3JtYWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRl
bnRlZGl0YWJsZT0idHJ1ZSIKLXwgICAgICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBl
PSdidXR0b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgIDxw
cmU+Cit8ICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCit8ICAgICBpZD0icHJlIgorfCAgICAg
IjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2Fy
ZXQ+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTcsNCArNyw0IEBACiBmb28KIGJhcgogZXhlY0N1dENvbW1hbmQ6IDxkaXYg
aWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48YnI+PC9wcmU+IDwvZGl2PgotZXhlY1Bh
c3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNs
YXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1z
cGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9vIGJhcjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+Citl
eGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHBy
ZT5mb28gYmFyPC9wcmU+PC9wcmU+IDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkLzUwNjU2MDUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvcGFzdGVib2FyZC81MDY1NjA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcp
CisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTA2NTYwNS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FU
RTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6
cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAg
b2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmll
d0luc2VydEFjdGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gMjQgb2YgI3RleHQgPiBGT05UID4gRElWID4gU1BBTiA+IEZPTlQgPiBESVYgPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyNCBvZiAjdGV4dCA+IEZPTlQgPiBESVYg
PiBTUEFOID4gRk9OVCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RP
TVJhbmdlOnJhbmdlIGZyb20gMjQgb2YgI3RleHQgPiBGT05UID4gRElWID4gRk9OVCA+IERJViA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDI0IG9mICN0ZXh0ID4gRk9OVCA+IERJ
ViA+IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpO
U1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldl
YlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAt
NDAsMTUgKzQwLDEzIEBACiB8ICAgPGZvbnQ+CiB8ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3Bh
biIKIHwgICAgIGNvbG9yPSIjZmYwMDAwIgotfCAgICAgPHNwYW4+Cit8ICAgICA8Zm9udD4KIHwg
ICAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCit8ICAgICAgIGNvbG9yPSIjZmYwMDAwIgor
fCAgICAgICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuIgorfCAgICAgPGRpdj4KIHwgICAgICAg
c3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7ICIKIHwgICAgICAgPGZvbnQ+CiB8ICAgICAgICAg
Y2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCiB8ICAgICAgICAgY29sb3I9IiNmZjAwMDAiCi18ICAg
ICAgICAgIlRoaXMgdGV4dCBzaG91bGQgYmUgcmVkLiIKLXwgICAgICAgPGRpdj4KLXwgICAgICAg
ICA8Zm9udD4KLXwgICAgICAgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgotfCAgICAgICAg
ICAgY29sb3I9IiNmZjAwMDAiCi18ICAgICAgICAgICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQu
PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgICAgICAgICJUaGlzIHRleHQgc2hvdWxkIGJlIHJlZC48
I3NlbGVjdGlvbi1jYXJldD4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2Rl
bGV0aW5nLWxpbmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1jb2xvci1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5l
LWJyZWFrLXByZXNlcnZlcy11bmRlcmxpbmUtY29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4
Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRpbmctbGluZS1icmVh
ay1wcmVzZXJ2ZXMtdW5kZXJsaW5lLWNvbG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtMTMsNyArMTMsNyBAQAogfCA8ZGl2PgogfCAgICJUaGlzIHNob3VsZCBub3QgYmUgdW5kZXJs
aW5lZC48I3NlbGVjdGlvbi1jYXJldD4iCiB8ICAgPHNwYW4+Ci18ICAgICBzdHlsZT0idGV4dC1k
ZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiBibHVlOyIKK3wgICAgIHN0eWxlPSJ0ZXh0LWRl
Y29yYXRpb246IHVuZGVybGluZTsgY29sb3I6IGJsdWU7ICIKIHwgICAgIDxzcGFuPgogfCAgICAg
ICBzdHlsZT0iY29sb3I6cmVkOyIKIHwgICAgICAgIlRoaXMgc2hvdWxkIGJlIHVuZGVybGluZWQu
IgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5jcHAJKHJldmlzaW9uIDg3OTg3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9S
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3OCwzNCArNDc4
LDI3IEBACiAvLyBhIGRpdiBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQgd2l0aCBkaXYgeyBkaXNw
bGF5OmlubGluZTsgfS4KIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVu
ZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoKQogewotICAgIGZvciAoUmVmUHRyPE5v
ZGU+IG5vZGUgPSBtX2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpOyBub2RlOyBub2RlID0gbm9kZS0+
dHJhdmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0v
NTM3MTUzNj4gU3R5bGUgcnVsZXMgdGhhdCBtYXRjaCBwYXN0ZWQgY29udGVudCBjYW4gY2hhbmdl
IGl0J3MgYXBwZWFyYW5jZQotICAgICAgICBpZiAoaXNTdHlsZVNwYW4obm9kZS5nZXQoKSkpIHsK
LSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBlID0gdG9IVE1MRWxlbWVudChub2RlLmdldCgpKTsK
LSAgICAgICAgICAgIC8vIFRoZXJlIGFyZSBvdGhlciBzdHlsZXMgdGhhdCBzdHlsZSBydWxlcyBj
YW4gZ2l2ZSB0byBzdHlsZSBzcGFucywKLSAgICAgICAgICAgIC8vIGJ1dCB0aGVzZSBhcmUgdGhl
IHR3byBpbXBvcnRhbnQgb25lcyBiZWNhdXNlIHRoZXknbGwgcHJldmVudAotICAgICAgICAgICAg
Ly8gaW5zZXJ0ZWQgY29udGVudCBmcm9tIGFwcGVhcmluZyBpbiB0aGUgcmlnaHQgcGFyYWdyYXBo
LgotICAgICAgICAgICAgLy8gRklYTUU6IEh5YXR0IGlzIGNvbmNlcm5lZCB0aGF0IHNlbGVjdGl2
ZWx5IHVzaW5nIGRpc3BsYXk6aW5saW5lIHdpbGwgZ2l2ZSBpbmNvbnNpc3RlbnQKLSAgICAgICAg
ICAgIC8vIHJlc3VsdHMuIFdlIGFscmVhZHkga25vdyBvbmUgaXNzdWUgYmVjYXVzZSB0ZCBlbGVt
ZW50cyBpZ25vcmUgdGhlaXIgZGlzcGxheSBwcm9wZXJ0eQotICAgICAgICAgICAgLy8gaW4gcXVp
cmtzIG1vZGUgKHdoaWNoIE1haWwuYXBwIGlzIGFsd2F5cyBpbikuIFdlIHNob3VsZCBsb29rIGZv
ciBhbiBhbHRlcm5hdGl2ZS4KLSAgICAgICAgICAgIGlmIChpc0Jsb2NrKGUpKQotICAgICAgICAg
ICAgICAgIGUtPmdldElubGluZVN0eWxlRGVjbCgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURp
c3BsYXksIENTU1ZhbHVlSW5saW5lKTsKLSAgICAgICAgICAgIGlmIChlLT5yZW5kZXJlcigpICYm
IGUtPnJlbmRlcmVyKCktPnN0eWxlKCktPmZsb2F0aW5nKCkgIT0gRk5PTkUpCi0gICAgICAgICAg
ICAgICAgZS0+Z2V0SW5saW5lU3R5bGVEZWNsKCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5Rmxv
YXQsIENTU1ZhbHVlTm9uZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAobm9kZS0+aXNTdHlsZWRFbGVt
ZW50KCkpIHsKLSAgICAgICAgICAgIFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxTdHlsZWRFbGVtZW50Kj4obm9kZS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoQ1NTTXV0YWJs
ZVN0eWxlRGVjbGFyYXRpb24qIGlubGluZVN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGVEZWNs
KCkpIHsKLSAgICAgICAgICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBuZXdJbmxpbmVTdHls
ZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKLSAgICAgICAgICAgICAgICBu
ZXdJbmxpbmVTdHlsZS0+cmVtb3ZlU3R5bGVGcm9tUnVsZXMoZWxlbWVudCk7Ci0gICAgICAgICAg
ICAgICAgaWYgKCFuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKSB8fCAhbmV3SW5saW5lU3R5bGUtPnN0
eWxlKCktPmxlbmd0aCgpKQotICAgICAgICAgICAgICAgICAgICByZW1vdmVOb2RlQXR0cmlidXRl
KGVsZW1lbnQsIHN0eWxlQXR0cik7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmV3SW5saW5l
U3R5bGUtPnN0eWxlKCktPmxlbmd0aCgpIDwgaW5saW5lU3R5bGUtPmxlbmd0aCgpKQotICAgICAg
ICAgICAgICAgICAgICBzZXROb2RlQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlQXR0ciwgbmV3SW5s
aW5lU3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSk7ICAgICAgICAgICAgICAgICAgICAKLSAgICAg
ICAgICAgIH0KLSAgICAgICAgfQorICAgIFJlZlB0cjxOb2RlPiBwYXN0RW5kTm9kZSA9IG1fbGFz
dExlYWZJbnNlcnRlZCA/IG1fbGFzdExlYWZJbnNlcnRlZC0+dHJhdmVyc2VOZXh0Tm9kZSgpIDog
MDsKKyAgICBSZWZQdHI8Tm9kZT4gbmV4dDsKKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2RlID0g
bV9maXJzdE5vZGVJbnNlcnRlZC5nZXQoKTsgbm9kZSAmJiBub2RlICE9IHBhc3RFbmROb2RlOyBu
b2RlID0gbmV4dCkgeworICAgICAgICBuZXh0ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOwor
ICAgICAgICBpZiAoIW5vZGUtPmlzU3R5bGVkRWxlbWVudCgpKQorICAgICAgICAgICAgY29udGlu
dWU7CiAKLSAgICAgICAgaWYgKG5vZGUgPT0gbV9sYXN0TGVhZkluc2VydGVkKQotICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
dHlsZWRFbGVtZW50Kj4obm9kZS5nZXQoKSk7CisKKyAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qIGlubGluZVN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCk7CisgICAg
ICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUoaW5saW5lU3R5bGUpOworICAgICAgICBpZiAoaW5saW5lU3R5bGUpCisgICAgICAgICAg
ICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlU3R5bGVGcm9tUnVsZXMoZWxlbWVudCk7CisKKyAgICAg
ICAgaWYgKGlubGluZVN0eWxlICYmIG5ld0lubGluZVN0eWxlLT5pc0VtcHR5KCkpIHsKKyAgICAg
ICAgICAgIGlmIChpc1N0eWxlU3Bhbihub2RlLmdldCgpKSkgLy8gRklYTUU6IHNob3VsZCBjYWxs
IGlzU3BhbldpdGhvdXRBdHRyaWJ1dGVzT3JVbnN0eWxlU3R5bGVTcGFuIGluc3RlYWQKKyAgICAg
ICAgICAgICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKG5vZGUuZ2V0KCkpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlbW92ZU5vZGVBdHRyaWJ1dGUoZWxlbWVu
dCwgc3R5bGVBdHRyKTsKKyAgICAgICAgfSBlbHNlIGlmICghbmV3SW5saW5lU3R5bGUtPmlzRW1w
dHkoKSAmJiAoIWlubGluZVN0eWxlIHx8IG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5sZW5ndGgo
KSAhPSBpbmxpbmVTdHlsZS0+bGVuZ3RoKCkpKQorICAgICAgICAgICAgc2V0Tm9kZUF0dHJpYnV0
ZShlbGVtZW50LCBzdHlsZUF0dHIsIG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCkp
OwogICAgIH0KIH0KIApAQCAtNjExLDkgKzYwNCw2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAK
LS8vIEF0IGNvcHkgdGltZSwgV2ViS2l0IHdyYXBzIGNvcGllZCBjb250ZW50IGluIGEgc3BhbiB0
aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgZG9jdW1lbnQncyAKLS8vIGRlZmF1bHQgc3R5bGVzLiAg
SWYgdGhlIGNvcGllZCBSYW5nZSBpbmhlcml0cyBhbnkgb3RoZXIgc3R5bGVzIGZyb20gaXRzIGFu
Y2VzdG9ycywgd2UgcHV0IAotLy8gdGhvc2Ugc3R5bGVzIG9uIGEgc2Vjb25kIHNwYW4uCiAvLyBU
aGlzIGZ1bmN0aW9uIHJlbW92ZXMgcmVkdW5kYW50IHN0eWxlcyBmcm9tIHRob3NlIHNwYW5zLCBh
bmQgcmVtb3ZlcyB0aGUgc3BhbnMgaWYgYWxsIHRoZWlyIAogLy8gc3R5bGVzIGFyZSByZWR1bmRh
bnQuIAogLy8gV2Ugc2hvdWxkIHJlbW92ZSB0aGUgQXBwbGUtc3R5bGUtc3BhbiBjbGFzcyB3aGVu
IHdlJ3JlIGRvbmUsIHNlZSA8cmRhcjovL3Byb2JsZW0vNTY4NTYwMD4uCkBAIC02NjIsNDEgKzY1
Miw2IEBACiAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUod3JhcHBpbmdTdHlsZVNwYW4sIHN0eWxl
QXR0ciwgc3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSk7CiB9CiAKLS8vIFRha2UgdGhlIHN0eWxl
IGF0dHJpYnV0ZSBvZiBhIHNwYW4gYW5kIGFwcGx5IGl0IHRvIGl0J3MgY2hpbGRyZW4gaW5zdGVh
ZC4gIFRoaXMgYWxsb3dzIHVzIHRvCi0vLyBjb252ZXJ0IGludmFsaWQgSFRNTCB3aGVyZSBhIHNw
YW4gY29udGFpbnMgYmxvY2sgZWxlbWVudHMgaW50byB2YWxpZCBIVE1MIHdoaWxlIHByZXNlcnZp
bmcKLS8vIHN0eWxlcy4KLXZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNvcHlTdHlsZVRv
Q2hpbGRyZW4oTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24qIHBhcmVudFN0eWxlKQotewotICAgIEFTU0VSVChwYXJlbnROb2RlLT5oYXNUYWdOYW1lKHNw
YW5UYWcpKTsKLSAgICBOb2RlVmVjdG9yIGNoaWxkTm9kZXM7Ci0gICAgZm9yIChSZWZQdHI8Tm9k
ZT4gY2hpbGROb2RlID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZE5vZGU7IGNoaWxk
Tm9kZSA9IGNoaWxkTm9kZS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGROb2Rlcy5hcHBl
bmQoY2hpbGROb2RlKTsKLSAgICAgICAgCi0gICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVy
YXRvciBpdCA9IGNoaWxkTm9kZXMuYmVnaW4oKTsgaXQgIT0gY2hpbGROb2Rlcy5lbmQoKTsgaXQr
KykgewotICAgICAgICBOb2RlKiBjaGlsZE5vZGUgPSBpdC0+Z2V0KCk7Ci0gICAgICAgIGlmIChj
aGlsZE5vZGUtPmlzVGV4dE5vZGUoKSB8fCAhaXNCbG9jayhjaGlsZE5vZGUpIHx8IGNoaWxkTm9k
ZS0+aGFzVGFnTmFtZShwcmVUYWcpKSB7Ci0gICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHB1
dCBhIHNwYW4gdGFnIGFyb3VuZCB0aGUgY2hpbGQgbm9kZS4KLSAgICAgICAgICAgIFJlZlB0cjxO
b2RlPiBuZXdOb2RlID0gcGFyZW50Tm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKLSAgICAgICAgICAg
IEFTU0VSVChuZXdOb2RlLT5oYXNUYWdOYW1lKHNwYW5UYWcpKTsKLSAgICAgICAgICAgIEhUTUxF
bGVtZW50KiBuZXdTcGFuID0gdG9IVE1MRWxlbWVudChuZXdOb2RlLmdldCgpKTsKLSAgICAgICAg
ICAgIHNldE5vZGVBdHRyaWJ1dGUobmV3U3Bhbiwgc3R5bGVBdHRyLCBwYXJlbnRTdHlsZS0+Y3Nz
VGV4dCgpKTsKLSAgICAgICAgICAgIGluc2VydE5vZGVBZnRlcihuZXdTcGFuLCBjaGlsZE5vZGUp
OwotICAgICAgICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBuZXdTcGFu
LT5hcHBlbmRDaGlsZChjaGlsZE5vZGUsIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwot
ICAgICAgICAgICAgY2hpbGROb2RlID0gbmV3U3BhbjsKLSAgICAgICAgfSBlbHNlIGlmIChjaGls
ZE5vZGUtPmlzSFRNTEVsZW1lbnQoKSkgewotICAgICAgICAgICAgLy8gQ29weSB0aGUgc3R5bGUg
YXR0cmlidXRlIGFuZCBtZXJnZSB0aGVtIGludG8gdGhlIGNoaWxkIG5vZGUuICBXZSBkb24ndCB3
YW50IHRvIG92ZXJyaWRlCi0gICAgICAgICAgICAvLyBleGlzdGluZyBzdHlsZXMsIHNvIGRvbid0
IGNsb2JiZXIgb24gbWVyZ2UuCi0gICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IG5ld1N0eWxlID0gcGFyZW50U3R5bGUtPmNvcHkoKTsKLSAgICAgICAgICAgIEhU
TUxFbGVtZW50KiBjaGlsZEVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGNoaWxkTm9kZSk7Ci0gICAg
ICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGV4aXN0aW5nU3R5bGVz
ID0gY2hpbGRFbGVtZW50LT5nZXRJbmxpbmVTdHlsZURlY2woKS0+Y29weSgpOwotICAgICAgICAg
ICAgZXhpc3RpbmdTdHlsZXMtPm1lcmdlKG5ld1N0eWxlLmdldCgpLCBmYWxzZSk7Ci0gICAgICAg
ICAgICBzZXROb2RlQXR0cmlidXRlKGNoaWxkRWxlbWVudCwgc3R5bGVBdHRyLCBleGlzdGluZ1N0
eWxlcy0+Y3NzVGV4dCgpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6bWVyZ2VFbmRJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX3Nob3VsZE1l
cmdlRW5kKQpAQCAtMTA2Miw2ICsxMDE3LDEzIEBACiAgICAgICAgIC8vIEZJWE1FOiBNYWludGFp
biBwb3NpdGlvbnMgZm9yIHRoZSBzdGFydCBhbmQgZW5kIG9mIGluc2VydGVkIGNvbnRlbnQgaW5z
dGVhZCBvZiBrZWVwaW5nIG5vZGVzLiAgVGhlIG5vZGVzIGFyZQogICAgICAgICAvLyBvbmx5IGV2
ZXIgdXNlZCB0byBjcmVhdGUgcG9zaXRpb25zIHdoZXJlIGluc2VydGVkIGNvbnRlbnQgc3RhcnRz
L2VuZHMuCiAgICAgICAgIG1vdmVQYXJhZ3JhcGgoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSwgZW5k
T2ZQYXJhZ3JhcGgoc3RhcnRPZlBhcmFncmFwaFRvTW92ZSksIGRlc3RpbmF0aW9uKTsKKyAgICAg
ICAgUG9zaXRpb24gcG9zaXRpb25BdEZpcnN0Tm9kZSA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2li
bGVTdGFydCgpLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpOworCisgICAgICAgIG1fZmly
c3ROb2RlSW5zZXJ0ZWQgPSBwb3NpdGlvbkF0Rmlyc3ROb2RlLmRlcHJlY2F0ZWROb2RlKCk7Cisg
ICAgICAgIC8vIEZJWE1FOiB3ZSBzaG91bGQgcmVwbGFjZSBtX2ZpcnN0Tm9kZUluc2VydGVkIGJ5
IGEgcG9zaXRpb24gcmF0aGVyIHRoYW4gaGF2aW5nIHRoaXMgd29yay1hcm91bmQuCisgICAgICAg
IGlmIChtX2ZpcnN0Tm9kZUluc2VydGVkLT5pc1RleHROb2RlKCkgJiYgcG9zaXRpb25BdEZpcnN0
Tm9kZS5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSkKKyAgICAgICAgICAgIHNwbGl0VGV4dE5vZGUo
c3RhdGljX2Nhc3Q8VGV4dCo+KG1fZmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCkpLCBwb3NpdGlvbkF0
Rmlyc3ROb2RlLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKwogICAgICAgICBtX2ZpcnN0Tm9k
ZUluc2VydGVkID0gZW5kaW5nU2VsZWN0aW9uKCkudmlzaWJsZVN0YXJ0KCkuZGVlcEVxdWl2YWxl
bnQoKS5kb3duc3RyZWFtKCkuZGVwcmVjYXRlZE5vZGUoKTsKICAgICAgICAgaWYgKCFtX2xhc3RM
ZWFmSW5zZXJ0ZWQtPmluRG9jdW1lbnQoKSkKICAgICAgICAgICAgIG1fbGFzdExlYWZJbnNlcnRl
ZCA9IGVuZGluZ1NlbGVjdGlvbigpLnZpc2libGVFbmQoKS5kZWVwRXF1aXZhbGVudCgpLnVwc3Ry
ZWFtKCkuZGVwcmVjYXRlZE5vZGUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFy
a3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJ
KHJldmlzaW9uIDg3OTg3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xMjAsMTIgKzEyMCw3IEBACiBwdWJsaWM6CiAgICAgZW51bSBSYW5n
ZUZ1bGx5U2VsZWN0c05vZGUgeyBEb2VzRnVsbHlTZWxlY3ROb2RlLCBEb2VzTm90RnVsbHlTZWxl
Y3ROb2RlIH07CiAKLSAgICBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBu
b2RlcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50ZXJj
aGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGNvbnN0IFJhbmdlKiByYW5nZSkKLSAgICA6IE1hcmt1cEFj
Y3VtdWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgcmFuZ2UpCi0gICAgLCBtX3Nob3Vs
ZEFubm90YXRlKHNob3VsZEFubm90YXRlKQotICAgIHsKLSAgICB9Ci0KKyAgICBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcywgRUFubm90
YXRlRm9ySW50ZXJjaGFuZ2UsIGNvbnN0IFJhbmdlKiwgTm9kZSogaGlnaGVzdE5vZGVUb0JlU2Vy
aWFsaXplZCA9IDApOwogICAgIE5vZGUqIHNlcmlhbGl6ZU5vZGVzKE5vZGUqIHN0YXJ0Tm9kZSwg
Tm9kZSogcGFzdEVuZCk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFN0cmluZyhjb25zdCBTdHJp
bmcmIHMpIHsgcmV0dXJuIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHJpbmcocyk7IH0KICAg
ICB2b2lkIHdyYXBXaXRoTm9kZShOb2RlKiwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzID0g
ZmFsc2UsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9IERvZXNGdWxseVNlbGVjdE5vZGUpOwpAQCAt
MTMzLDE4ICsxMjgsMzcgQEAKICAgICBTdHJpbmcgdGFrZVJlc3VsdHMoKTsKIAogcHJpdmF0ZToK
KyAgICB2b2lkIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcoVmVjdG9yPFVDaGFyPiYsIENTU1N0eWxl
RGVjbGFyYXRpb24qLCBEb2N1bWVudCosIGJvb2wgaXNCbG9jayA9IGZhbHNlKTsKKyAgICBjb25z
dCBTdHJpbmcgc3R5bGVOb2RlQ2xvc2VUYWcoYm9vbCBpc0Jsb2NrID0gZmFsc2UpOwogICAgIHZp
cnR1YWwgdm9pZCBhcHBlbmRUZXh0KFZlY3RvcjxVQ2hhcj4mIG91dCwgVGV4dCopOwogICAgIFN0
cmluZyByZW5kZXJlZFRleHQoY29uc3QgTm9kZSosIGNvbnN0IFJhbmdlKik7CiAgICAgU3RyaW5n
IHN0cmluZ1ZhbHVlRm9yUmFuZ2UoY29uc3QgTm9kZSosIGNvbnN0IFJhbmdlKik7CiAgICAgdm9p
ZCBhcHBlbmRFbGVtZW50KFZlY3RvcjxVQ2hhcj4mIG91dCwgRWxlbWVudCogZWxlbWVudCwgYm9v
bCBhZGREaXNwbGF5SW5saW5lLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUpOwogICAgIHZvaWQgYXBw
ZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQsIE5hbWVzcGFj
ZXMqKSB7IGFwcGVuZEVsZW1lbnQob3V0LCBlbGVtZW50LCBmYWxzZSwgRG9lc0Z1bGx5U2VsZWN0
Tm9kZSk7IH0KIAorICAgIE5vZGUqIHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKE5vZGUq
IHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCwgYm9vbCBzaG91bGRFbWl0KTsKKwogICAgIGJvb2wg
c2hvdWxkQW5ub3RhdGUoKSB7IHJldHVybiBtX3Nob3VsZEFubm90YXRlID09IEFubm90YXRlRm9y
SW50ZXJjaGFuZ2U7IH0KKyAgICBib29sIHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShOb2RlKiBu
b2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFs
aXplZCAmJiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQtPnBhcmVudE5vZGUoKSA9PSBub2Rl
LT5wYXJlbnROb2RlKCkKKyAgICAgICAgICAgICYmIG1fd3JhcHBpbmdTdHlsZSAmJiBtX3dyYXBw
aW5nU3R5bGUtPnN0eWxlKCk7CisgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gbV9yZXZlcnNl
ZFByZWNlZGluZ01hcmt1cDsKICAgICBjb25zdCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBtX3No
b3VsZEFubm90YXRlOworICAgIE5vZGUqIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZDsKKyAg
ICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBtX3dyYXBwaW5nU3R5bGU7CiB9OwogCitpbmxpbmUgU3R5
bGVkTWFya3VwQWNjdW11bGF0b3I6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2Rl
Kj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzIHNob3VsZFJlc29sdmVVUkxzLCBFQW5ub3RhdGVGb3JJ
bnRlcmNoYW5nZSBzaG91bGRBbm5vdGF0ZSwKKyAgICBjb25zdCBSYW5nZSogcmFuZ2UsIE5vZGUq
IGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpCisgICAgOiBNYXJrdXBBY2N1bXVsYXRvcihub2Rl
cywgc2hvdWxkUmVzb2x2ZVVSTHMsIHJhbmdlKQorICAgICwgbV9zaG91bGRBbm5vdGF0ZShzaG91
bGRBbm5vdGF0ZSkKKyAgICAsIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZChoaWdoZXN0Tm9k
ZVRvQmVTZXJpYWxpemVkKQoreworfQorCiB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3
cmFwV2l0aE5vZGUoTm9kZSogbm9kZSwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCBSYW5n
ZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNOb2RlKQogewogICAgIFZlY3RvcjxV
Q2hhcj4gbWFya3VwOwpAQCAtMTYwLDIwICsxNzQsMzAgQEAKIAogdm9pZCBTdHlsZWRNYXJrdXBB
Y2N1bXVsYXRvcjo6d3JhcFdpdGhTdHlsZU5vZGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUs
IERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpc0Jsb2NrKQogeworICAgIFZlY3RvcjxVQ2hhcj4g
b3BlblRhZzsKKyAgICBhcHBlbmRTdHlsZU5vZGVPcGVuVGFnKG9wZW5UYWcsIHN0eWxlLCBkb2N1
bWVudCwgaXNCbG9jayk7CisgICAgbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cC5hcHBlbmQoU3Ry
aW5nOjphZG9wdChvcGVuVGFnKSk7CisgICAgYXBwZW5kU3RyaW5nKHN0eWxlTm9kZUNsb3NlVGFn
KGlzQmxvY2spKTsKK30KKwordm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3R5
bGVOb2RlT3BlblRhZyhWZWN0b3I8VUNoYXI+JiBvdXQsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0
eWxlLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNCbG9jaykKK3sKICAgICAvLyBBbGwgdGV4
dC1kZWNvcmF0aW9uLXJlbGF0ZWQgZWxlbWVudHMgc2hvdWxkIGhhdmUgYmVlbiB0cmVhdGVkIGFz
IHNwZWNpYWwgYW5jZXN0b3JzCiAgICAgLy8gSWYgd2UgZXZlciBoaXQgdGhpcyBBU1NFUlQsIHdl
IHNob3VsZCBleHBvcnQgU3R5bGVDaGFuZ2UgaW4gQXBwbHlTdHlsZUNvbW1hbmQgYW5kIHVzZSBp
dCBoZXJlCiAgICAgQVNTRVJUKHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoc3R5bGUsIENT
U1Byb3BlcnR5VGV4dERlY29yYXRpb24pICYmIHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUo
c3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpKTsKICAgICBE
RUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2U3R5bGUsICgiPGRpdiBzdHlsZT1c
IiIpKTsKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5bGVTcGFuT3Bl
biwgKCI8c3BhbiBjbGFzcz1cIiIgQXBwbGVTdHlsZVNwYW5DbGFzcyAiXCIgc3R5bGU9XCIiKSk7
CisgICAgYXBwZW5kKG91dCwgaXNCbG9jayA/IGRpdlN0eWxlIDogc3R5bGVTcGFuT3Blbik7Cisg
ICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3V0LCBzdHlsZS0+Y3NzVGV4dCgpLCBkb2N1bWVudC0+
aXNIVE1MRG9jdW1lbnQoKSk7CisgICAgb3V0LmFwcGVuZCgnXCInKTsKKyAgICBvdXQuYXBwZW5k
KCc+Jyk7Cit9CisKK2NvbnN0IFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c3R5bGVO
b2RlQ2xvc2VUYWcoYm9vbCBpc0Jsb2NrKQorewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCBkaXZDbG9zZSwgKCI8L2Rpdj4iKSk7Ci0gICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHN0eWxlU3Bhbk9wZW4sICgiPHNwYW4gY2xhc3M9XCIiIEFwcGxlU3R5
bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCBzdHlsZVNwYW5DbG9zZSwgKCI8L3NwYW4+IikpOwotICAgIFZlY3RvcjxVQ2hh
cj4gb3BlblRhZzsKLSAgICBhcHBlbmQob3BlblRhZywgaXNCbG9jayA/IGRpdlN0eWxlIDogc3R5
bGVTcGFuT3Blbik7Ci0gICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3BlblRhZywgc3R5bGUtPmNz
c1RleHQoKSwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOwotICAgIG9wZW5UYWcuYXBwZW5k
KCdcIicpOwotICAgIG9wZW5UYWcuYXBwZW5kKCc+Jyk7Ci0gICAgbV9yZXZlcnNlZFByZWNlZGlu
Z01hcmt1cC5hcHBlbmQoU3RyaW5nOjphZG9wdChvcGVuVGFnKSk7Ci0gICAgYXBwZW5kU3RyaW5n
KGlzQmxvY2sgPyBkaXZDbG9zZSA6IHN0eWxlU3BhbkNsb3NlKTsKKyAgICByZXR1cm4gaXNCbG9j
ayA/IGRpdkNsb3NlIDogc3R5bGVTcGFuQ2xvc2U7CiB9CiAKIFN0cmluZyBTdHlsZWRNYXJrdXBB
Y2N1bXVsYXRvcjo6dGFrZVJlc3VsdHMoKQpAQCAtMTkxLDE3ICsyMTUsNDIgQEAKIH0KIAogdm9p
ZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChWZWN0b3I8VUNoYXI+JiBvdXQs
IFRleHQqIHRleHQpCi17Ci0gICAgaWYgKCFzaG91bGRBbm5vdGF0ZSgpIHx8ICh0ZXh0LT5wYXJl
bnRFbGVtZW50KCkgJiYgdGV4dC0+cGFyZW50RWxlbWVudCgpLT50YWdRTmFtZSgpID09IHRleHRh
cmVhVGFnKSkgeworeyAgICAKKyAgICBib29sIHBhcmVudElzVGV4dGFyZWEgPSB0ZXh0LT5wYXJl
bnRFbGVtZW50KCkgJiYgdGV4dC0+cGFyZW50RWxlbWVudCgpLT50YWdRTmFtZSgpID09IHRleHRh
cmVhVGFnOworICAgIGJvb2wgd3JhcHBpbmdTcGFuID0gc2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxl
KHRleHQpICYmICFwYXJlbnRJc1RleHRhcmVhOworICAgIGlmICh3cmFwcGluZ1NwYW4pIHsKKyAg
ICAgICAgbV93cmFwcGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUodGV4dCwgRWRpdGlu
Z1N0eWxlOjpFZGl0aW5nSW5oZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dyb3VuZENvbG9ySW5F
ZmZlY3QpOworCisgICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJp
YnV0ZSBzaG91bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwKKyAgICAg
ICAgLy8gdG8gaGVscCB1cyBkaWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBmcm9tIG9uZXMgdGhh
dCB0aGUgdXNlciBoYXMgYXBwbGllZC4KKyAgICAgICAgLy8gVGhpcyBoZWxwcyB1cyBnZXQgdGhl
IGNvbG9yIG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQuCisgICAgICAg
IG1fd3JhcHBpbmdTdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdOb2RlT2ZU
eXBlKHBvc2l0aW9uQmVmb3JlTm9kZSh0ZXh0KSwgaXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jvc3NF
ZGl0aW5nQm91bmRhcnkpKTsKKworICAgICAgICAvLyBEb24ndCBwdXQgLXdlYmtpdC10ZXh0LWRl
Y29yYXRpb25zLWluLWVmZmVjdCBpbiBzZXJpYWxpemVkIG1hcmt1cAorICAgICAgICBtX3dyYXBw
aW5nU3R5bGUtPmNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCk7CisKKyAgICAgICAg
Ly8gPHJkYXI6Ly9wcm9ibGVtLzUzNzE1MzY+CisgICAgICAgIC8vIE1ha2Ugc3VyZSBzcGFucyBh
cmUgaW5saW5lIHN0eWxlIGluIHBhc3RlIHNpZGUgZS5nLiBzcGFuIHsgZGlzcGxheTogYmxvY2sg
fQorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPnN0eWxlKCktPnNldFByb3BlcnR5KENTU1Byb3Bl
cnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmUpOworICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPnN0
eWxlKCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQsIENTU1ZhbHVlTm9uZSk7CisKKyAg
ICAgICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOworICAgICAgICBhcHBlbmRTdHlsZU5vZGVPcGVu
VGFnKG9wZW5UYWcsIG1fd3JhcHBpbmdTdHlsZS0+c3R5bGUoKSwgdGV4dC0+ZG9jdW1lbnQoKSk7
CisgICAgICAgIGFwcGVuZChvdXQsIFN0cmluZzo6YWRvcHQob3BlblRhZykpOworICAgIH0KKwor
ICAgIGlmICghc2hvdWxkQW5ub3RhdGUoKSB8fCBwYXJlbnRJc1RleHRhcmVhKQogICAgICAgICBN
YXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChvdXQsIHRleHQpOwotICAgICAgICByZXR1cm47
CisgICAgZWxzZSB7CisgICAgICAgIGJvb2wgdXNlUmVuZGVyZWRUZXh0ID0gIWVuY2xvc2luZ05v
ZGVXaXRoVGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dCksIHNlbGVjdFRhZyk7CisgICAgICAg
IFN0cmluZyBjb250ZW50ID0gdXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRleHQsIG1f
cmFuZ2UpIDogc3RyaW5nVmFsdWVGb3JSYW5nZSh0ZXh0LCBtX3JhbmdlKTsKKyAgICAgICAgVmVj
dG9yPFVDaGFyPiBidWZmZXI7CisgICAgICAgIGFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRp
dGllcyhidWZmZXIsIGNvbnRlbnQuY2hhcmFjdGVycygpLCBjb250ZW50Lmxlbmd0aCgpLCBFbnRp
dHlNYXNrSW5QQ0RBVEEpOworICAgICAgICBhcHBlbmQob3V0LCBjb252ZXJ0SFRNTFRleHRUb0lu
dGVyY2hhbmdlRm9ybWF0KFN0cmluZzo6YWRvcHQoYnVmZmVyKSwgdGV4dCkpOwogICAgIH0KIAot
ICAgIGJvb2wgdXNlUmVuZGVyZWRUZXh0ID0gIWVuY2xvc2luZ05vZGVXaXRoVGFnKGZpcnN0UG9z
aXRpb25Jbk5vZGUodGV4dCksIHNlbGVjdFRhZyk7Ci0gICAgU3RyaW5nIGNvbnRlbnQgPSB1c2VS
ZW5kZXJlZFRleHQgPyByZW5kZXJlZFRleHQodGV4dCwgbV9yYW5nZSkgOiBzdHJpbmdWYWx1ZUZv
clJhbmdlKHRleHQsIG1fcmFuZ2UpOwotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOwotICAgIGFw
cGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyhidWZmZXIsIGNvbnRlbnQuY2hhcmFjdGVy
cygpLCBjb250ZW50Lmxlbmd0aCgpLCBFbnRpdHlNYXNrSW5QQ0RBVEEpOwotICAgIGFwcGVuZChv
dXQsIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYXQoU3RyaW5nOjphZG9wdChidWZm
ZXIpLCB0ZXh0KSk7CisgICAgaWYgKHdyYXBwaW5nU3BhbikKKyAgICAgICAgYXBwZW5kKG91dCwg
c3R5bGVOb2RlQ2xvc2VUYWcoKSk7CiB9CiAgICAgCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11
bGF0b3I6OnJlbmRlcmVkVGV4dChjb25zdCBOb2RlKiBub2RlLCBjb25zdCBSYW5nZSogcmFuZ2Up
CkBAIC0yNDgsMTUgKzI5NywzMyBAQAogICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwg
bGVuZ3RoOyBpKyspIHsKICAgICAgICAgQXR0cmlidXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVz
LT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAvLyBXZSdsbCBoYW5kbGUgdGhlIHN0eWxlIGF0
dHJpYnV0ZSBzZXBhcmF0ZWx5LCBiZWxvdy4KLSAgICAgICAgaWYgKGF0dHJpYnV0ZS0+bmFtZSgp
ID09IHN0eWxlQXR0ciAmJiBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90
YXRlKCkgfHwgYWRkRGlzcGxheUlubGluZSkpCisgICAgICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUo
KSA9PSBzdHlsZUF0dHIgJiYgZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5v
dGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUgfHwgc2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxlKGVs
ZW1lbnQpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhcHBlbmRBdHRyaWJ1dGUo
b3V0LCBlbGVtZW50LCAqYXR0cmlidXRlLCAwKTsKICAgICB9CiAKICAgICBpZiAoZWxlbWVudC0+
aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUp
KSB7CiAgICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpj
cmVhdGUodG9IVE1MRWxlbWVudChlbGVtZW50KS0+Z2V0SW5saW5lU3R5bGVEZWNsKCkpOwotICAg
ICAgICBpZiAoc2hvdWxkQW5ub3RhdGUoKSkKKyAgICAgICAgaWYgKHNob3VsZEFubm90YXRlKCkp
IHsKICAgICAgICAgICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlv
bih0b0hUTUxFbGVtZW50KGVsZW1lbnQpKTsKKworICAgICAgICAgICAgaWYgKHNob3VsZEFwcGx5
V3JhcHBpbmdTdHlsZShlbGVtZW50KSkgeworICAgICAgICAgICAgICAgIG1fd3JhcHBpbmdTdHls
ZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGVsZW1lbnQsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0lu
aGVyaXRhYmxlUHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAg
ICAgICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJpYnV0ZSBzaG91
bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwKKyAgICAgICAgICAgICAg
ICAvLyB0byBoZWxwIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0
IHRoZSB1c2VyIGhhcyBhcHBsaWVkLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaGVscHMgdXMg
Z2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJpZ2h0Lgor
ICAgICAgICAgICAgICAgIG1fd3JhcHBpbmdTdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShl
bmNsb3NpbmdOb2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShlbGVtZW50KSwg
aXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKKyAgICAgICAgICAg
ICAgICAKKworICAgICAgICAgICAgICAgIC8vIENhbGwgY29sbGFwc2VUZXh0RGVjb3JhdGlvblBy
b3BlcnRpZXMgZmlyc3Qgb3Igb3RoZXJ3aXNlIGl0J2xsIGNvcHkgdGhlIHZhbHVlIG92ZXIgZnJv
bSBpbi1lZmZlY3QgdG8gdGV4dC1kZWNvcmF0aW9ucy4KKyAgICAgICAgICAgICAgICBtX3dyYXBw
aW5nU3R5bGUtPmNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCk7CisgICAgICAgICAg
ICAgICAgbV93cmFwcGluZ1N0eWxlLT5yZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0
eWxlKHRvSFRNTEVsZW1lbnQoZWxlbWVudCkpOworCisgICAgICAgICAgICAgICAgYm9vbCBhcmVP
dmVycmlkZXNPbkNvbmZsaWN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgc3R5bGUtPnN0eWxl
KCktPm1lcmdlKG1fd3JhcHBpbmdTdHlsZS0+c3R5bGUoKSwgYXJlT3ZlcnJpZGVzT25Db25mbGlj
dCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKGFkZERpc3BsYXlJbmxp
bmUpCiAgICAgICAgICAgICBzdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlE
aXNwbGF5LCBDU1NWYWx1ZUlubGluZSwgdHJ1ZSk7CiAKQEAgLTI3MSw2ICszMzgsMzIgQEAKICAg
ICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgc3R5bGUtPnN0eWxlKCktPmNzc1Rl
eHQoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAgICAgICAgb3V0LmFwcGVuZCgnXCInKTsKICAg
ICAgICAgfQorICAgIH0gZWxzZSBpZiAoc2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxlKGVsZW1lbnQp
ICYmIHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KSkgeworICAgICAgICBtX3dyYXBw
aW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVtZW50LCBFZGl0aW5nU3R5bGU6OkVk
aXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk7CisK
KyAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRlIHNob3Vs
ZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLAorICAgICAgICAvLyB0byBo
ZWxwIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1c2Vy
IGhhcyBhcHBsaWVkLgorICAgICAgICAvLyBUaGlzIGhlbHBzIHVzIGdldCB0aGUgY29sb3Igb2Yg
Y29udGVudCBwYXN0ZWQgaW50byBibG9ja3F1b3RlcyByaWdodC4KKyAgICAgICAgbV93cmFwcGlu
Z1N0eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKGVsZW1lbnQpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9z
c0VkaXRpbmdCb3VuZGFyeSkpOworCisgICAgICAgIC8vIENhbGwgY29sbGFwc2VUZXh0RGVjb3Jh
dGlvblByb3BlcnRpZXMgZmlyc3Qgb3Igb3RoZXJ3aXNlIGl0J2xsIGNvcHkgdGhlIHZhbHVlIG92
ZXIgZnJvbSBpbi1lZmZlY3QgdG8gdGV4dC1kZWNvcmF0aW9ucy4KKyAgICAgICAgbV93cmFwcGlu
Z1N0eWxlLT5jb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcygpOworICAgICAgICBtX3dy
YXBwaW5nU3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoZWxlbWVu
dCk7CisKKyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGU7CisgICAgICAgIGlmIChl
bGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4o
ZWxlbWVudCktPmlubGluZVN0eWxlRGVjbCgpKSB7CisgICAgICAgICAgICBzdHlsZSA9IEVkaXRp
bmdTdHlsZTo6Y3JlYXRlKHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+aW5s
aW5lU3R5bGVEZWNsKCkpOworICAgICAgICAgICAgYm9vbCBhcmVPdmVycmlkZXNPbkNvbmZsaWN0
ID0gZmFsc2U7CisgICAgICAgICAgICBzdHlsZS0+c3R5bGUoKS0+bWVyZ2UobV93cmFwcGluZ1N0
eWxlLT5zdHlsZSgpLCBhcmVPdmVycmlkZXNPbkNvbmZsaWN0KTsKKyAgICAgICAgfSBlbHNlCisg
ICAgICAgICAgICBzdHlsZSA9IG1fd3JhcHBpbmdTdHlsZTsKKworICAgICAgICBpZiAoIXN0eWxl
LT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3Ry
aW5nLCBzdHlsZVByZWZpeCwgKCIgc3R5bGU9XCIiKSk7CisgICAgICAgICAgICBhcHBlbmQob3V0
LCBzdHlsZVByZWZpeCk7CisgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQsIHN0
eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKKyAgICAgICAgICAgIG91
dC5hcHBlbmQoJ1wiJyk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBhcHBlbmRDbG9zZVRhZyhv
dXQsIGVsZW1lbnQpOwpAQCAtMjc4LDYgKzM3MSwyNiBAQAogCiBOb2RlKiBTdHlsZWRNYXJrdXBB
Y2N1bXVsYXRvcjo6c2VyaWFsaXplTm9kZXMoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5k
KQogeworICAgIGlmICghbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkKSB7CisgICAgICAgIE5v
ZGUqIGxhc3RDbG9zZWQgPSB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihzdGFydE5vZGUs
IHBhc3RFbmQsIGZhbHNlKTsKKyAgICAgICAgbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID0g
bGFzdENsb3NlZDsKKyAgICB9CisgICAgCisgICAgTm9kZSogcGFyZW50T2ZIaWdoZXN0Tm9kZSA9
IG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCA/IG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXpl
ZC0+cGFyZW50Tm9kZSgpIDogMDsKKyAgICBpZiAocGFyZW50T2ZIaWdoZXN0Tm9kZSkgeworICAg
ICAgICBtX3dyYXBwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwYXJlbnRPZkhpZ2hl
c3ROb2RlLCBFZGl0aW5nU3R5bGU6OkVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNr
Z3JvdW5kQ29sb3JJbkVmZmVjdCk7CisKKyAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9j
a3F1b3RlcyBjb250cmlidXRlIHNob3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9j
a3F1b3RlLAorICAgICAgICAvLyB0byBoZWxwIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVz
IGZyb20gb25lcyB0aGF0IHRoZSB1c2VyIGhhcyBhcHBsaWVkLgorICAgICAgICAvLyBUaGlzIGhl
bHBzIHVzIGdldCB0aGUgY29sb3Igb2YgY29udGVudCBwYXN0ZWQgaW50byBibG9ja3F1b3RlcyBy
aWdodC4KKyAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVu
Y2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlvbkluTm9kZShwYXJlbnRPZkhpZ2hlc3ROb2Rl
KSwgaXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oc3RhcnROb2RlLCBwYXN0
RW5kLCB0cnVlKTsKK30KKworTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRyYXZlcnNl
Tm9kZXNGb3JTZXJpYWxpemF0aW9uKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCwgYm9v
bCBzaG91bGRFbWl0KQorewogICAgIFZlY3RvcjxOb2RlKj4gYW5jZXN0b3JzVG9DbG9zZTsKICAg
ICBOb2RlKiBuZXh0OwogICAgIE5vZGUqIGxhc3RDbG9zZWQgPSAwOwpAQCAtMzA0LDExICs0MTcs
MTMgQEAKICAgICAgICAgICAgICAgICBuZXh0ID0gcGFzdEVuZDsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIC8vIEFkZCB0aGUgbm9kZSB0byB0aGUgbWFya3VwIGlmIHdlJ3JlIG5vdCBz
a2lwcGluZyB0aGUgZGVzY2VuZGFudHMKLSAgICAgICAgICAgIGFwcGVuZFN0YXJ0VGFnKG4pOwor
ICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAgICAgICAgICAgYXBwZW5kU3RhcnRU
YWcobik7CiAKICAgICAgICAgICAgIC8vIElmIG5vZGUgaGFzIG5vIGNoaWxkcmVuLCBjbG9zZSB0
aGUgdGFnIG5vdy4KICAgICAgICAgICAgIGlmICghbi0+Y2hpbGROb2RlQ291bnQoKSkgewotICAg
ICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhuKTsKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxk
RW1pdCkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kRW5kVGFnKG4pOwogICAgICAgICAgICAg
ICAgIGxhc3RDbG9zZWQgPSBuOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAg
ICBvcGVuZWRUYWcgPSB0cnVlOwpAQCAtMzI1LDcgKzQ0MCw4IEBACiAgICAgICAgICAgICAgICAg
aWYgKG5leHQgIT0gcGFzdEVuZCAmJiBuZXh0LT5pc0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpCiAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIC8vIE5vdCBhdCB0aGUg
ZW5kIG9mIHRoZSByYW5nZSwgY2xvc2UgYW5jZXN0b3JzIHVwIHRvIHNpYmxpbmcgb2YgbmV4dCBu
b2RlLgotICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhhbmNlc3Rvcik7CisgICAgICAgICAg
ICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhh
bmNlc3Rvcik7CiAgICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9IGFuY2VzdG9yOwogICAgICAg
ICAgICAgICAgIGFuY2VzdG9yc1RvQ2xvc2UucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgfQpA
QCAtMzQwLDcgKzQ1Niw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAg
ICAgICAgICAgICAgICAgICAgLy8gb3IgYikgYW5jZXN0b3JzIHRoYXQgd2UgbmV2ZXIgZW5jb3Vu
dGVyZWQgZHVyaW5nIGEgcHJlLW9yZGVyIHRyYXZlcnNhbCBzdGFydGluZyBhdCBzdGFydE5vZGU6
CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdGFydE5vZGUtPmlzRGVzY2VuZGFudE9mKHBh
cmVudCkpOwotICAgICAgICAgICAgICAgICAgICB3cmFwV2l0aE5vZGUocGFyZW50KTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAgICAgICAgICAgICAgICAgICB3
cmFwV2l0aE5vZGUocGFyZW50KTsKICAgICAgICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9IHBh
cmVudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC01MTMsNyArNjMwLDEz
IEBACiAKICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CiAKLSAgICBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hv
dWxkUmVzb2x2ZVVSTHMsIHNob3VsZEFubm90YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCkpOworICAg
IE5vZGUqIGJvZHkgPSBlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNv
bW1vbkFuY2VzdG9yKSwgYm9keVRhZyk7CisgICAgTm9kZSogZnVsbHlTZWxlY3RlZFJvb3QgPSAw
OworICAgIC8vIEZJWE1FOiBEbyB0aGlzIGZvciBhbGwgZnVsbHkgc2VsZWN0ZWQgYmxvY2tzLCBu
b3QganVzdCB0aGUgYm9keS4KKyAgICBpZiAoYm9keSAmJiBhcmVSYW5nZXNFcXVhbChWaXNpYmxl
U2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoYm9keSkudG9Ob3JtYWxpemVk
UmFuZ2UoKS5nZXQoKSwgcmFuZ2UpKQorICAgICAgICBmdWxseVNlbGVjdGVkUm9vdCA9IGJvZHk7
CisgICAgTm9kZSogc3BlY2lhbENvbW1vbkFuY2VzdG9yID0gaGlnaGVzdEFuY2VzdG9yVG9XcmFw
TWFya3VwKHVwZGF0ZWRSYW5nZS5nZXQoKSwgZnVsbHlTZWxlY3RlZFJvb3QsIHNob3VsZEFubm90
YXRlKTsKKyAgICBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hv
dWxkUmVzb2x2ZVVSTHMsIHNob3VsZEFubm90YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIHNwZWNp
YWxDb21tb25BbmNlc3Rvcik7CiAgICAgTm9kZSogcGFzdEVuZCA9IHVwZGF0ZWRSYW5nZS0+cGFz
dExhc3ROb2RlKCk7CiAKICAgICBOb2RlKiBzdGFydE5vZGUgPSB1cGRhdGVkUmFuZ2UtPmZpcnN0
Tm9kZSgpOwpAQCAtNTM5LDE0ICs2NjIsNiBAQAogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9
CiAKLSAgICBOb2RlKiBib2R5ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbklu
Tm9kZShjb21tb25BbmNlc3RvciksIGJvZHlUYWcpOwotICAgIE5vZGUqIGZ1bGx5U2VsZWN0ZWRS
b290ID0gMDsKLSAgICAvLyBGSVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJs
b2Nrcywgbm90IGp1c3QgdGhlIGJvZHkuCi0gICAgaWYgKGJvZHkgJiYgYXJlUmFuZ2VzRXF1YWwo
VmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGJvZHkpLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIHJhbmdlKSkKLSAgICAgICAgZnVsbHlTZWxlY3RlZFJvb3Qg
PSBib2R5OwotCi0gICAgTm9kZSogc3BlY2lhbENvbW1vbkFuY2VzdG9yID0gaGlnaGVzdEFuY2Vz
dG9yVG9XcmFwTWFya3VwKHVwZGF0ZWRSYW5nZS5nZXQoKSwgZnVsbHlTZWxlY3RlZFJvb3QsIHNo
b3VsZEFubm90YXRlKTsKLQogICAgIE5vZGUqIGxhc3RDbG9zZWQgPSBhY2N1bXVsYXRvci5zZXJp
YWxpemVOb2RlcyhzdGFydE5vZGUsIHBhc3RFbmQpOwogCiAgICAgaWYgKHNwZWNpYWxDb21tb25B
bmNlc3RvciAmJiBsYXN0Q2xvc2VkKSB7CkBAIC01ODYsMjAgKzcwMSw2IEBACiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICAvLyBBZGQgYSB3cmFwcGVyIHNwYW4gd2l0aCB0aGUgc3R5bGVzIHRoYXQg
YWxsIG9mIHRoZSBub2RlcyBpbiB0aGUgbWFya3VwIGluaGVyaXQuCi0gICAgQ29udGFpbmVyTm9k
ZSogcGFyZW50T2ZMYXN0Q2xvc2VkID0gbGFzdENsb3NlZCA/IGxhc3RDbG9zZWQtPnBhcmVudE5v
ZGUoKSA6IDA7Ci0gICAgaWYgKHBhcmVudE9mTGFzdENsb3NlZCAmJiBwYXJlbnRPZkxhc3RDbG9z
ZWQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBF
ZGl0aW5nU3R5bGU6OmNyZWF0ZShwYXJlbnRPZkxhc3RDbG9zZWQsIEVkaXRpbmdTdHlsZTo6RWRp
dGluZ0luaGVyaXRhYmxlUHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKLQot
ICAgICAgICAvLyBTdHlsZXMgdGhhdCBNYWlsIGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxk
IG9ubHkgYmUgcGxhY2VkIG9uIHRoZSBNYWlsIGJsb2NrcXVvdGUsIHRvIGhlbHAKLSAgICAgICAg
Ly8gdXMgZGlmZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIg
aGFzIGFwcGxpZWQuICBUaGlzIGhlbHBzIHVzCi0gICAgICAgIC8vIGdldCB0aGUgY29sb3Igb2Yg
Y29udGVudCBwYXN0ZWQgaW50byBibG9ja3F1b3RlcyByaWdodC4KLSAgICAgICAgc3R5bGUtPnJl
bW92ZVN0eWxlQWRkZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShmaXJzdFBvc2l0aW9uSW5O
b2RlKHBhcmVudE9mTGFzdENsb3NlZCksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGlu
Z0JvdW5kYXJ5KSk7Ci0KLSAgICAgICAgaWYgKCFzdHlsZS0+aXNFbXB0eSgpKQotICAgICAgICAg
ICAgYWNjdW11bGF0b3Iud3JhcFdpdGhTdHlsZU5vZGUoc3R5bGUtPnN0eWxlKCksIGRvY3VtZW50
KTsKLSAgICB9Ci0KICAgICAvLyBGSVhNRTogVGhlIGludGVyY2hhbmdlIG5ld2xpbmUgc2hvdWxk
IGJlIHBsYWNlZCBpbiB0aGUgYmxvY2sgdGhhdCBpdCdzIGluLCBub3QgYWZ0ZXIgYWxsIG9mIHRo
ZSBjb250ZW50LCB1bmNvbmRpdGlvbmFsbHkuCiAgICAgaWYgKHNob3VsZEFubm90YXRlID09IEFu
bm90YXRlRm9ySW50ZXJjaGFuZ2UgJiYgbmVlZEludGVyY2hhbmdlTmV3bGluZUFmdGVyKHZpc2li
bGVFbmQucHJldmlvdXMoKSkpCiAgICAgICAgIGFjY3VtdWxhdG9yLmFwcGVuZFN0cmluZyhpbnRl
cmNoYW5nZU5ld2xpbmVTdHJpbmcpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0
aW5nU3R5bGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGlu
Z1N0eWxlLmNwcAkocmV2aXNpb24gODc5ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRpbmdTdHlsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTg2LDcgKzg2LDcgQEAKICAgICByZXR1
cm4gY29weUVkaXRpbmdQcm9wZXJ0aWVzKHN0eWxlLmdldCgpKTsKIH0KIAotc3RhdGljIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHJvcGVydGllc05vdEluKENTU1N0eWxl
RGVjbGFyYXRpb24qIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIENTU1N0eWxlRGVjbGFy
YXRpb24qIGJhc2VTdHlsZSk7CitzdGF0aWMgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uPiBnZXRQcm9wZXJ0aWVzTm90SW4oRG9jdW1lbnQqLCBDU1NTdHlsZURlY2xhcmF0aW9uKiBz
dHlsZVdpdGhSZWR1bmRhbnRQcm9wZXJ0aWVzLCBDU1NTdHlsZURlY2xhcmF0aW9uKiBiYXNlU3R5
bGUpOwogCiBjbGFzcyBIVE1MRWxlbWVudEVxdWl2YWxlbnQgewogcHVibGljOgpAQCAtMzA4LDI4
ICszMDgsMzEgQEAKIHsKIH0KIAotc3RhdGljIFJHQkEzMiBjc3NWYWx1ZVRvUkdCQShDU1NWYWx1
ZSogY29sb3JWYWx1ZSkKK3N0YXRpYyBSR0JBMzIgY3NzVmFsdWVUb1JHQkEoRG9jdW1lbnQqIGRv
Y3VtZW50LCBDU1NWYWx1ZSogY29sb3JWYWx1ZSkKIHsKICAgICBpZiAoIWNvbG9yVmFsdWUgfHwg
IWNvbG9yVmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSkKICAgICAgICAgcmV0dXJuIENvbG9yOjp0
cmFuc3BhcmVudDsKLSAgICAKKwogICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBwcmltaXRpdmVDb2xv
ciA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4oY29sb3JWYWx1ZSk7CiAgICAgaWYg
KHByaW1pdGl2ZUNvbG9yLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19SR0JDT0xPUikKICAgICAgICAgcmV0dXJuIHByaW1pdGl2ZUNvbG9yLT5nZXRSR0JBMzJWYWx1
ZSgpOwotICAgIAorCisgICAgaWYgKGRvY3VtZW50ICYmIHByaW1pdGl2ZUNvbG9yLT5wcmltaXRp
dmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCAmJiBwcmltaXRpdmVDb2xv
ci0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZVdlYmtpdExpbmspCisgICAgICAgIHJldHVybiBkb2N1
bWVudC0+bGlua0NvbG9yKCkucmdiKCk7CisKICAgICBSR0JBMzIgcmdiYSA9IDA7CiAgICAgQ1NT
UGFyc2VyOjpwYXJzZUNvbG9yKHJnYmEsIGNvbG9yVmFsdWUtPmNzc1RleHQoKSk7CiAgICAgcmV0
dXJuIHJnYmE7CiB9CiAKLXN0YXRpYyBpbmxpbmUgUkdCQTMyIGdldFJHQkFGb250Q29sb3IoQ1NT
U3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCitzdGF0aWMgaW5saW5lIFJHQkEzMiBnZXRSR0JBRm9u
dENvbG9yKERvY3VtZW50KiBkb2N1bWVudCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCiB7
Ci0gICAgcmV0dXJuIGNzc1ZhbHVlVG9SR0JBKHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENT
U1Byb3BlcnR5Q29sb3IpLmdldCgpKTsKKyAgICByZXR1cm4gY3NzVmFsdWVUb1JHQkEoZG9jdW1l
bnQsIHN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Q29sb3IpLmdldCgpKTsK
IH0KIAotc3RhdGljIGlubGluZSBSR0JBMzIgcmdiYUJhY2tncm91bmRDb2xvckluRWZmZWN0KE5v
ZGUqIG5vZGUpCitzdGF0aWMgaW5saW5lIFJHQkEzMiByZ2JhQmFja2dyb3VuZENvbG9ySW5FZmZl
Y3QoRG9jdW1lbnQqIGRvY3VtZW50LCBOb2RlKiBub2RlKQogewotICAgIHJldHVybiBjc3NWYWx1
ZVRvUkdCQShiYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChub2RlKS5nZXQoKSk7CisgICAgcmV0dXJu
IGNzc1ZhbHVlVG9SR0JBKGRvY3VtZW50LCBiYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdChub2RlKS5n
ZXQoKSk7CiB9CiAKIHZvaWQgRWRpdGluZ1N0eWxlOjppbml0KE5vZGUqIG5vZGUsIFByb3BlcnRp
ZXNUb0luY2x1ZGUgcHJvcGVydGllc1RvSW5jbHVkZSkKQEAgLTU1NCw3ICs1NTcsMTAgQEAKICAg
ICBpZiAoIXRleHREZWNvcmF0aW9uc0luRWZmZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBt
X211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgdGV4
dERlY29yYXRpb25zSW5FZmZlY3QtPmNzc1RleHQoKSwgbV9tdXRhYmxlU3R5bGUtPmdldFByb3Bl
cnR5UHJpb3JpdHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikpOworICAgIGlmICh0ZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdC0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0aW9uc0lu
RWZmZWN0LT5jc3NUZXh0KCksIG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KENT
U1Byb3BlcnR5VGV4dERlY29yYXRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIG1fbXV0YWJsZVN0
eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKICAgICBtX211
dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlv
bnNJbkVmZmVjdCk7CiB9CiAKQEAgLTU3MCw3ICs1NzYsOCBAQAogVHJpU3RhdGUgRWRpdGluZ1N0
eWxlOjp0cmlTdGF0ZU9mU3R5bGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVUb0NvbXBhcmUs
IFNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGllcyBzaG91bGRJZ25vcmVUZXh0T25seVByb3Bl
cnRpZXMpIGNvbnN0CiB7CiAgICAgLy8gRklYTUU6IHRha2UgY2FyZSBvZiBiYWNrZ3JvdW5kLWNv
bG9yIGluIGVmZmVjdAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGlm
ZmVyZW5jZSA9IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5bGVU
b0NvbXBhcmUpOworICAgIC8vIEZJWE1FOiBnZXRQcm9wZXJ0aWVzTm90SW4gbmVlZHMgZG9jdW1l
bnQKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRpZmZlcmVuY2UgPSBn
ZXRQcm9wZXJ0aWVzTm90SW4oMCwgbV9tdXRhYmxlU3R5bGUuZ2V0KCksIHN0eWxlVG9Db21wYXJl
KTsKIAogICAgIGlmIChzaG91bGRJZ25vcmVUZXh0T25seVByb3BlcnRpZXMgPT0gSWdub3JlVGV4
dE9ubHlQcm9wZXJ0aWVzKQogICAgICAgICBkaWZmZXJlbmNlLT5yZW1vdmVQcm9wZXJ0aWVzSW5T
ZXQodGV4dE9ubHlQcm9wZXJ0aWVzLCBXVEZfQVJSQVlfTEVOR1RIKHRleHRPbmx5UHJvcGVydGll
cykpOwpAQCAtNzI3LDcgKzczNCw4IEBACiAKIGJvb2wgRWRpdGluZ1N0eWxlOjpzdHlsZUlzUHJl
c2VudEluQ29tcHV0ZWRTdHlsZU9mTm9kZShOb2RlKiBub2RlKSBjb25zdAogewotICAgIHJldHVy
biAhbV9tdXRhYmxlU3R5bGUgfHwgIWdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5n
ZXQoKSwgY29tcHV0ZWRTdHlsZShub2RlKS5nZXQoKSktPmxlbmd0aCgpOworICAgIEFTU0VSVChu
b2RlKTsKKyAgICByZXR1cm4gIW1fbXV0YWJsZVN0eWxlIHx8ICFnZXRQcm9wZXJ0aWVzTm90SW4o
bm9kZS0+ZG9jdW1lbnQoKSwgbV9tdXRhYmxlU3R5bGUuZ2V0KCksIGNvbXB1dGVkU3R5bGUobm9k
ZSkuZ2V0KCkpLT5sZW5ndGgoKTsKIH0KIAogdm9pZCBFZGl0aW5nU3R5bGU6OnByZXBhcmVUb0Fw
cGx5QXQoY29uc3QgUG9zaXRpb24mIHBvc2l0aW9uLCBTaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJl
Y3Rpb24gc2hvdWxkUHJlc2VydmVXcml0aW5nRGlyZWN0aW9uKQpAQCAtNzQ3LDEyICs3NTUsMTQg
QEAKICAgICAgICAgZGlyZWN0aW9uID0gbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFs
dWUoQ1NTUHJvcGVydHlEaXJlY3Rpb24pOwogICAgIH0KIAorICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IHBvc2l0aW9uLmFuY2hvck5vZGUoKSA/IHBvc2l0aW9uLmFuY2hvck5vZGUoKS0+ZG9jdW1l
bnQoKSA6IDA7CisKICAgICBzdHlsZS0+bV9tdXRhYmxlU3R5bGUtPmRpZmYobV9tdXRhYmxlU3R5
bGUuZ2V0KCkpOwotICAgIGlmIChnZXRSR0JBRm9udENvbG9yKG1fbXV0YWJsZVN0eWxlLmdldCgp
KSA9PSBnZXRSR0JBRm9udENvbG9yKHN0eWxlLT5tX211dGFibGVTdHlsZS5nZXQoKSkpCisgICAg
aWYgKGdldFJHQkFGb250Q29sb3IoZG9jdW1lbnQsIG1fbXV0YWJsZVN0eWxlLmdldCgpKSA9PSBn
ZXRSR0JBRm9udENvbG9yKGRvY3VtZW50LCBzdHlsZS0+bV9tdXRhYmxlU3R5bGUuZ2V0KCkpKQog
ICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvcik7
CiAKICAgICBpZiAoaGFzVHJhbnNwYXJlbnRCYWNrZ3JvdW5kQ29sb3IobV9tdXRhYmxlU3R5bGUu
Z2V0KCkpCi0gICAgICAgIHx8IGNzc1ZhbHVlVG9SR0JBKG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5nZXQoKSkgPT0gcmdiYUJh
Y2tncm91bmRDb2xvckluRWZmZWN0KHBvc2l0aW9uLmNvbnRhaW5lck5vZGUoKSkpCisgICAgICAg
IHx8IGNzc1ZhbHVlVG9SR0JBKGRvY3VtZW50LCBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlD
U1NWYWx1ZShDU1NQcm9wZXJ0eUJhY2tncm91bmRDb2xvcikuZ2V0KCkpID09IHJnYmFCYWNrZ3Jv
dW5kQ29sb3JJbkVmZmVjdChkb2N1bWVudCwgcG9zaXRpb24uY29udGFpbmVyTm9kZSgpKSkKICAg
ICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5QmFja2dyb3Vu
ZENvbG9yKTsKIAogICAgIGlmICh1bmljb2RlQmlkaSAmJiB1bmljb2RlQmlkaS0+aXNQcmltaXRp
dmVWYWx1ZSgpKSB7CkBAIC04MTgsMTEgKzgyOCwxMCBAQAogICAgIH0KIH0KIAotc3RhdGljIFBh
c3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxl
c0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBQYXNzUmVmUHRyPENTU011dGFi
bGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KEVsZW1l
bnQqIGVsZW1lbnQsIHVuc2lnbmVkIGZpbHRlcikKIHsKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24+IHN0eWxlID0gQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0
ZSgpOwotICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hlZFJ1bGVzID0gZWxlbWVudC0+ZG9j
dW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LAot
ICAgICAgICBDU1NTdHlsZVNlbGVjdG9yOjpBdXRob3JDU1NSdWxlcyB8IENTU1N0eWxlU2VsZWN0
b3I6OkNyb3NzT3JpZ2luQ1NTUnVsZXMpOworICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hl
ZFJ1bGVzID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZVJ1bGVz
Rm9yRWxlbWVudChlbGVtZW50LCBmaWx0ZXIpOwogICAgIGlmIChtYXRjaGVkUnVsZXMpIHsKICAg
ICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoZWRSdWxlcy0+bGVuZ3RoKCk7IGkr
KykgewogICAgICAgICAgICAgaWYgKG1hdGNoZWRSdWxlcy0+aXRlbShpKS0+dHlwZSgpID09IENT
U1J1bGU6OlNUWUxFX1JVTEUpIHsKQEAgLTgzNyw3ICs4NDYsOCBAQAogCiB2b2lkIEVkaXRpbmdT
dHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50KiBlbGVtZW50KQogewotICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVz
ID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50KTsKKyAgICBSZWZQdHI8
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxl
RnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwKKyAgICAgICAgQ1NTU3R5bGVTZWxl
Y3Rvcjo6QXV0aG9yQ1NTUnVsZXMgfCBDU1NTdHlsZVNlbGVjdG9yOjpDcm9zc09yaWdpbkNTU1J1
bGVzKTsKICAgICAvLyBTdHlsZXMgZnJvbSB0aGUgaW5saW5lIHN0eWxlIGRlY2xhcmF0aW9uLCBo
ZWxkIGluIHRoZSB2YXJpYWJsZSAic3R5bGUiLCB0YWtlIHByZWNlZGVuY2UgCiAgICAgLy8gb3Zl
ciB0aG9zZSBmcm9tIG1hdGNoZWQgcnVsZXMuCiAgICAgaWYgKG1fbXV0YWJsZVN0eWxlKQpAQCAt
ODcwLDE2ICs4ODAsNDkgQEAKICAgICBtX211dGFibGVTdHlsZS0+bWVyZ2UoZnJvbUNvbXB1dGVk
U3R5bGUuZ2V0KCkpOwogfQogCit2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlUHJvcGVydGllc0lu
RWxlbWVudERlZmF1bHRTdHlsZShFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmICghbV9tdXRh
YmxlU3R5bGUgfHwgIW1fbXV0YWJsZVN0eWxlLT5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkZWZhdWx0U3R5bGUgPSBz
dHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIENTU1N0eWxlU2VsZWN0b3I6
OlVBQW5kVXNlckNTU1J1bGVzKTsKKworICAgIFZlY3RvcjxpbnQ+IHByb3BlcnRpZXNUb1JlbW92
ZShkZWZhdWx0U3R5bGUtPmxlbmd0aCgpKTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGRlZmF1bHRTdHlsZS0+
ZW5kKCk7CisgICAgZm9yIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBkZWZhdWx0U3R5bGUtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCwgKytpKQorICAg
ICAgICBwcm9wZXJ0aWVzVG9SZW1vdmVbaV0gPSBpdC0+aWQoKTsKKworICAgIG1fbXV0YWJsZVN0
eWxlLT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQocHJvcGVydGllc1RvUmVtb3ZlLmRhdGEoKSwgcHJv
cGVydGllc1RvUmVtb3ZlLnNpemUoKSk7Cit9CisKIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVT
dHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50KiBlbGVtZW50KQogeworICAgIEFTU0VSVChlbGVt
ZW50KTsKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQogICAgICAgICByZXR1cm47CiAKLSAgICBS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9
IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCk7Ci0gICAgaWYgKCFzdHls
ZUZyb21NYXRjaGVkUnVsZXMpCi0gICAgICAgIHJldHVybjsKKyAgICAvLyAxLiBSZW1vdmUgc3R5
bGUgZnJvbSBtYXRjaGVkIHJ1bGVzIGJlY2F1c2Ugc3R5bGUgcmVtYWluIHdpdGhvdXQgcmVwZWF0
aW5nIGl0IGluIGlubGluZSBzdHlsZSBkZWNsYXJhdGlvbgorICAgIFJlZlB0cjxDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hl
ZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBDU1NTdHlsZVNlbGVjdG9yOjpBdXRob3JDU1NSdWxl
cyB8IENTU1N0eWxlU2VsZWN0b3I6OkNyb3NzT3JpZ2luQ1NTUnVsZXMpOworICAgIGlmIChzdHls
ZUZyb21NYXRjaGVkUnVsZXMgJiYgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLT5sZW5ndGgoKSkKKyAg
ICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4oZWxlbWVudC0+ZG9jdW1l
bnQoKSwgbV9tdXRhYmxlU3R5bGUuZ2V0KCksIHN0eWxlRnJvbU1hdGNoZWRSdWxlcy5nZXQoKSk7
CiAKLSAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHls
ZS5nZXQoKSwgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLmdldCgpKTsKKyAgICAvLyAyLiBSZW1vdmUg
c3R5bGUgcHJlc2VudCBpbiBwYXJlbnQgYW5kIG5vdCBvdmVycmlkZW4gYnkgbWF0Y2hlZCBydWxl
cy4KKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBjb21wdXRlZFN0eWxlID0gRWRpdGluZ1N0eWxl
OjpjcmVhdGUoZWxlbWVudC0+cGFyZW50Tm9kZSgpLCBFZGl0aW5nSW5oZXJpdGFibGVQcm9wZXJ0
aWVzQW5kQmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOworICAgIGlmIChjb21wdXRlZFN0eWxlLT5t
X211dGFibGVTdHlsZSkgeworICAgICAgICBjb21wdXRlZFN0eWxlLT5yZW1vdmVQcm9wZXJ0aWVz
SW5FbGVtZW50RGVmYXVsdFN0eWxlKGVsZW1lbnQpOworICAgIAorICAgICAgICBtX211dGFibGVT
dHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbihlbGVtZW50LT5kb2N1bWVudCgpLCBtX211dGFibGVT
dHlsZS5nZXQoKSwgY29tcHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUuZ2V0KCkpOyAgICAgICAg
CisgICAgfQorICAgIAorICAgIC8vIDMuIElmIHRoaXMgZWxlbWVudCBpcyBhIHNwYW4gYW5kIGhh
cyBkaXNwbGF5OiBpbmxpbmUgb3IgZmxvYXQ6IG5vbmUsIHJlbW92ZSB0aGVtIHVubGVzcyB0aGV5
IGFyZSBvdmVycmlkZW4gYnkgcnVsZXMKKyAgICAvLyBUaGVzZSBydWxlcyBhcmUgYWRkZWQgYnkg
c2VyaWFsaXphdGlvbiBjb2RlIHRvIHdyYXAgdGV4dCBub2Rlcy4KKyAgICBpZiAoaXNTdHlsZVNw
YW4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKCFzdHlsZUZyb21NYXRjaGVkUnVsZXMtPmdldFBy
b3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlEaXNwbGF5KSAmJiBnZXRJZGVudGlmaWVyVmFsdWUo
bV9tdXRhYmxlU3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5RGlzcGxheSkgPT0gQ1NTVmFsdWVJbmxp
bmUpCisgICAgICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVy
dHlEaXNwbGF5KTsKKyAgICAgICAgaWYgKCFzdHlsZUZyb21NYXRjaGVkUnVsZXMtPmdldFByb3Bl
cnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGbG9hdCkgJiYgZ2V0SWRlbnRpZmllclZhbHVlKG1fbXV0
YWJsZVN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eUZsb2F0KSA9PSBDU1NWYWx1ZU5vbmUpCisgICAg
ICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCk7
CisgICAgfQogfQogCiBzdGF0aWMgdm9pZCByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRp
ZXMoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQpAQCAtOTEzLDcgKzk1Niw3IEBA
CiAKICAgICBSZWZQdHI8Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uPiBjb21wdXRlZFN0eWxl
ID0gcG9zaXRpb24uY29tcHV0ZWRTdHlsZSgpOwogICAgIC8vIEZJWE1FOiB0YWtlIGNhcmUgb2Yg
YmFja2dyb3VuZC1jb2xvciBpbiBlZmZlY3QKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24+IG11dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbihzdHlsZS0+c3R5bGUo
KSwgY29tcHV0ZWRTdHlsZS5nZXQoKSk7CisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBtdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4oZG9jdW1lbnQsIHN0eWxl
LT5zdHlsZSgpLCBjb21wdXRlZFN0eWxlLmdldCgpKTsKIAogICAgIHJlY29uY2lsZVRleHREZWNv
cmF0aW9uUHJvcGVydGllcyhtdXRhYmxlU3R5bGUuZ2V0KCkpOwogICAgIGlmICghZG9jdW1lbnQt
PmZyYW1lKCktPmVkaXRvcigpLT5zaG91bGRTdHlsZVdpdGhDU1MoKSkKQEAgLTk4OCw3ICsxMDMx
LDcgQEAKICAgICB9CiAKICAgICBpZiAoc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlDb2xvcikpIHsKLSAgICAgICAgbV9hcHBseUZvbnRDb2xvciA9IENvbG9yKGdldFJHQkFG
b250Q29sb3Ioc3R5bGUpKS5zZXJpYWxpemVkKCk7CisgICAgICAgIG1fYXBwbHlGb250Q29sb3Ig
PSBDb2xvcihnZXRSR0JBRm9udENvbG9yKGRvY3VtZW50LCBzdHlsZSkpLnNlcmlhbGl6ZWQoKTsK
ICAgICAgICAgc3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IpOwogICAgIH0K
IApAQCAtMTAzMyw2ICsxMDc2LDcgQEAKIAogICAgIC8vIEJlY2F1c2UgYiB0YWcgY2FuIG9ubHkg
Ym9sZCB0ZXh0LCB0aGVyZSBhcmUgb25seSB0d28gc3RhdGVzIGluIHBsYWluIGh0bWw6IGJvbGQg
YW5kIG5vdCBib2xkLgogICAgIC8vIENvbGxhcHNlIGFsbCBvdGhlciB2YWx1ZXMgdG8gZWl0aGVy
IG9uZSBvZiB0aGVzZSB0d28gc3RhdGVzIGZvciBlZGl0aW5nIHB1cnBvc2VzLgorICAgIC8vIEZJ
WE1FOiBXZSBzaG91bGRuJ3QgdHJlYXQgYm9sZGVyIGFuZCBsaWdodGVyIGxpa2Ugbm9ybWFsIGFu
ZCBib2xkLgogICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihmb250
V2VpZ2h0LmdldCgpKS0+Z2V0SWRlbnQoKSkgewogICAgICAgICBjYXNlIENTU1ZhbHVlMTAwOgog
ICAgICAgICBjYXNlIENTU1ZhbHVlMjAwOgpAQCAtMTA0MCw4ICsxMDg0LDEwIEBACiAgICAgICAg
IGNhc2UgQ1NTVmFsdWU0MDA6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWU1MDA6CiAgICAgICAgIGNh
c2UgQ1NTVmFsdWVOb3JtYWw6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVMaWdodGVyOgogICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICBjYXNlIENTU1ZhbHVlQm9sZDoKKyAgICAgICAg
Y2FzZSBDU1NWYWx1ZUJvbGRlcjoKICAgICAgICAgY2FzZSBDU1NWYWx1ZTYwMDoKICAgICAgICAg
Y2FzZSBDU1NWYWx1ZTcwMDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZTgwMDoKQEAgLTEwNDksNyAr
MTA5NSw2IEBACiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgLy8gRm9yIENTU1ZhbHVlQm9sZGVyIGFuZCBDU1NWYWx1ZUxpZ2h0ZXIK
ICAgICByZXR1cm4gZmFsc2U7IC8vIE1ha2UgY29tcGlsZXIgaGFwcHkKIH0KIApAQCAtMTA3Miw3
ICsxMTE3LDcgQEAKICAgICByZXR1cm4gQ1NTVmFsdWVJbnZhbGlkOwogfQogCi1SZWZQdHI8Q1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGdldFByb3BlcnRpZXNOb3RJbihDU1NTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZVdpdGhSZWR1bmRhbnRQcm9wZXJ0aWVzLCBDU1NTdHlsZURlY2xhcmF0aW9u
KiBiYXNlU3R5bGUpCitSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGdldFByb3Bl
cnRpZXNOb3RJbihEb2N1bWVudCogZG9jdW1lbnQsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxl
V2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIENTU1N0eWxlRGVjbGFyYXRpb24qIGJhc2VTdHlsZSkK
IHsKICAgICBBU1NFUlQoc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcyk7CiAgICAgQVNTRVJU
KGJhc2VTdHlsZSk7CkBAIC0xMDg0LDEzICsxMTI5LDEzIEBACiAgICAgZGlmZlRleHREZWNvcmF0
aW9ucyhyZXN1bHQuZ2V0KCksIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIGJhc2VUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdC5nZXQoKSk7CiAgICAgZGlmZlRleHREZWNvcmF0aW9ucyhyZXN1bHQu
Z2V0KCksIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIGJhc2VUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdC5nZXQoKSk7CiAKLSAgICBpZiAoZm9udFdlaWdodElzQm9sZChy
ZXN1bHQuZ2V0KCkpID09IGZvbnRXZWlnaHRJc0JvbGQoYmFzZVN0eWxlKSkKKyAgICBpZiAoYmFz
ZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFNpemUpICYmIGZvbnRX
ZWlnaHRJc0JvbGQocmVzdWx0LmdldCgpKSA9PSBmb250V2VpZ2h0SXNCb2xkKGJhc2VTdHlsZSkp
CiAgICAgICAgIHJlc3VsdC0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0KTsK
IAotICAgIGlmIChnZXRSR0JBRm9udENvbG9yKHJlc3VsdC5nZXQoKSkgPT0gZ2V0UkdCQUZvbnRD
b2xvcihiYXNlU3R5bGUpKQorICAgIGlmIChiYXNlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpICYmIGdldFJHQkFGb250Q29sb3IoZG9jdW1lbnQs
IHJlc3VsdC5nZXQoKSkgPT0gZ2V0UkdCQUZvbnRDb2xvcihkb2N1bWVudCwgYmFzZVN0eWxlKSkK
ICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUNvbG9yKTsKIAotICAg
IGlmIChnZXRUZXh0QWxpZ25tZW50KHJlc3VsdC5nZXQoKSkgPT0gZ2V0VGV4dEFsaWdubWVudChi
YXNlU3R5bGUpKQorICAgIGlmIChiYXNlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJv
cGVydHlUZXh0QWxpZ24pICYmIGdldFRleHRBbGlnbm1lbnQocmVzdWx0LmdldCgpKSA9PSBnZXRU
ZXh0QWxpZ25tZW50KGJhc2VTdHlsZSkpCiAgICAgICAgIHJlc3VsdC0+cmVtb3ZlUHJvcGVydHko
Q1NTUHJvcGVydHlUZXh0QWxpZ24pOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlz
aW9uIDg3OTg3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OSw3ICs3OSw2IEBACiAgICAgCiAgICAgdm9pZCBy
ZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKCk7CiAgICAgdm9pZCBo
YW5kbGVTdHlsZVNwYW5zKCk7Ci0gICAgdm9pZCBjb3B5U3R5bGVUb0NoaWxkcmVuKE5vZGUqIHBh
cmVudE5vZGUsIGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBwYXJlbnRTdHlsZSk7
CiAgICAgdm9pZCBoYW5kbGVQYXN0ZUFzUXVvdGF0aW9uTm9kZSgpOwogICAgIAogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKE5vZGUqKTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNpb24gODc5ODcpCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0
Nyw3IEBACiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3Mg
RG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBOb2Rl
OwogY2xhc3MgUG9zaXRpb247CkBAIC0xMjIsNiArMTIzLDcgQEAKICAgICB2b2lkIG1lcmdlSW5s
aW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCopOwogICAgIHZvaWQgbWVyZ2VTdHlsZUZy
b21SdWxlcyhTdHlsZWRFbGVtZW50Kik7CiAgICAgdm9pZCBtZXJnZVN0eWxlRnJvbVJ1bGVzRm9y
U2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVQcm9wZXJ0aWVz
SW5FbGVtZW50RGVmYXVsdFN0eWxlKEVsZW1lbnQqIGVsZW1lbnQpOwogICAgIHZvaWQgcmVtb3Zl
U3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxlbWVudCopOwogCiAgICAgZmxvYXQgZm9udFNpemVEZWx0
YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YTsgfQpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkocmV2aXNpb24gODc5ODcpCisrKyBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMjEsNyAr
MjAyMSw3IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAobV9tYXRjaEF1dGhvckFuZFVz
ZXJTdHlsZXMpIHsKKyAgICBpZiAobV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgJiYgcnVsZXNU
b0luY2x1ZGUgJiBBdXRob3JDU1NSdWxlcykgewogICAgICAgICBtX2NoZWNrZXIubV9zYW1lT3Jp
Z2luT25seSA9ICEocnVsZXNUb0luY2x1ZGUgJiBDcm9zc09yaWdpbkNTU1J1bGVzKTsKIAogICAg
ICAgICAvLyBDaGVjayB0aGUgcnVsZXMgaW4gYXV0aG9yIHNoZWV0cy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95991</attachid>
            <date>2011-06-03 17:05:36 -0700</date>
            <delta_ts>2011-06-03 23:06:27 -0700</delta_ts>
            <desc>alpha version</desc>
            <filename>wip34564f</filename>
            <type>text/plain</type>
            <size>54389</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1u
b25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVu
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3OTg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogfCAgICAgIkVkaXRhYmw8I3NlbGVj
dGlvbi1hbmNob3I+ZSBwYXJhZ3JhcGggY29udGFpbmluZyBhICIKIHwgICAgIDxzcGFuPgogfCAg
ICAgICBjb250ZW50ZWRpdGFibGU9ImZhbHNlIgotfCAgICAgICBzdHlsZT0iYmFja2dyb3VuZC1j
b2xvcjogTGlnaHRHcmF5OyIKK3wgICAgICAgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigy
MTEsIDIxMSwgMjExKTsgIgogfCAgICAgICAibm9uLWVkaXRhYmxlIgogfCAgICAgIiBpbiB0aGUg
bWlkZGxlIgogfCAgICAgPGJyPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtNDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA4Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5
Nzc3LWZpeC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMCBAQAog
IgogfCA8dWw+CiB8ICAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7IgotfCAgIDx1bD4KLXwgICAg
IHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgIgotfCAgICAgPGxpPgotfCAgICAgICAiQSIKK3wg
ICA8bGk+Cit8ICAgICAiQSIKIHwgICA8ZGl2PgorfCAgICAgc3R5bGU9InRleHQtYWxpZ246IC13
ZWJraXQtYXV0bzsgIgogfCAgICAgPHVsPgogfCAgICAgICA8bGk+CiB8ICAgICAgICAgPGE+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3OTg3KQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNiw0ICs2LDQgQEAKIGZvbwogCiBleGVjQ29weUNvbW1hbmQ6IDxkaXYgaWQ9InRl
c3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90ZT48L2Rp
dj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8
ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2Nr
cXVvdGU+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9ImVkaXRpbmciPjxzcGFuIGNsYXNzPSJBcHBs
ZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXplOiBtZWRpdW07ICI+PGRpdiBpZD0idGVzdCIg
Y2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjwvZGl2Pjwvc3Bhbj48L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYg
aWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90
ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PGRpdiBpZD0idGVzdCIgY2xhc3M9
ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+PGJy
PjwvZGl2PjwvZGl2PjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4
Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBACiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2lu
Z0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
MCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2Vy
dEFjdGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZy
b20gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IFNQQU4gPiBCID4gRk9OVCA+IFAgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gU1BBTiA+
IEIgPiBGT05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IEIgPiBGT05UID4gUCA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBCID4gRk9OVCA+IFAgPiBCID4gRk9OVCA+
IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5
RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3Rp
ZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtMzAsMTkgKzMwLDE4IEBACiB8
ICAgPGZvbnQ+CiB8ICAgICBmYWNlPSJNb25hY28iCiB8ICAgICA8Yj4KLXwgICAgICAgPHNwYW4+
Ci18ICAgICAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCit8ICAgICAgIDxwPgogfCAgICAg
ICAgIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IGZvbnQtd2VpZ2h0OiBub3JtYWw7ICIKLXwg
ICAgICAgICA8cD4KLXwgICAgICAgICAgIDxmb250PgotfCAgICAgICAgICAgICBmYWNlPSJNb25h
Y28iCi18ICAgICAgICAgICAgIDxiPgotfCAgICAgICAgICAgICAgICJoZWxsbyIKLXwgICAgICAg
ICA8cD4KLXwgICAgICAgICAgIDxmb250PgotfCAgICAgICAgICAgICBmYWNlPSJNb25hY28iCi18
ICAgICAgICAgICAgIDxiPgotfCAgICAgICAgICAgICAgICJ0aGVyZTwjc2VsZWN0aW9uLWNhcmV0
PiIKK3wgICAgICAgICA8Zm9udD4KK3wgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKK3wgICAgICAg
ICAgIDxiPgorfCAgICAgICAgICAgICAiaGVsbG8iCit8ICAgICAgIDxwPgorfCAgICAgICAgIHN0
eWxlPSJmb250LWZhbWlseTogVGltZXM7IGZvbnQtd2VpZ2h0OiBub3JtYWw7ICIKK3wgICAgICAg
ICA8Zm9udD4KK3wgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKK3wgICAgICAgICAgIDxiPgorfCAg
ICAgICAgICAgICAidGhlcmU8I3NlbGVjdGlvbi1jYXJldD4iCiB8ICIKIAogCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
dGV4dC13aXRoLXN0eWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQg
cmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gSSA+IEIgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25Q
YXN0ZWQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDkgb2Yg
I3RleHQgPiBGT05UID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOSBv
ZiAjdGV4dCA+IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQor
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDkgb2YgI3RleHQgPiBGT05UID4gRElWID4gSSA+IEIgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+IEkg
PiBCID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25B
ZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hh
bmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KQEAgLTMwLDEzICszMCwx
OCBAQAogTWFya3VwIGFmdGVyOgogfCA8Yj4KIHwgICA8aT4KLXwgICAgICJoZWxsbyBib2xkIGFu
ZCBpdGFsaWMiCi18IDxkaXY+Ci18ICAgPGk+Ci18ICAgICAiaGVsbG8gaXRhbGljIgotfCA8ZGl2
PgotfCAgIDxmb250PgotfCAgICAgY29sb3I9IiNmZjAwMDAiCi18ICAgICAiaGVsbG8gcmVkPCNz
ZWxlY3Rpb24tY2FyZXQ+IgorfCAgICAgPGI+Cit8ICAgICAgIHN0eWxlPSJmb250LXN0eWxlOiBu
b3JtYWw7ICIKK3wgICAgICAgPGk+Cit8ICAgICAgICAgImhlbGxvIGJvbGQgYW5kIGl0YWxpYyIK
K3wgICAgIDxkaXY+Cit8ICAgICAgIHN0eWxlPSJmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2Vp
Z2h0OiBub3JtYWw7ICIKK3wgICAgICAgPGk+Cit8ICAgICAgICAgImhlbGxvIGl0YWxpYyIKK3wg
ICAgIDxkaXY+Cit8ICAgICAgIHN0eWxlPSJmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2VpZ2h0
OiBub3JtYWw7ICIKK3wgICAgICAgPGZvbnQ+Cit8ICAgICAgICAgY29sb3I9IiNmZjAwMDAiCit8
ICAgICAgICAgImhlbGxvIHJlZDwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgIgogIgpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Rpc3BsYXktYmxvY2stb24tc3BhbnMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kaXNw
bGF5LWJsb2NrLW9uLXNwYW5zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGlzcGxheS1ibG9jay1vbi1zcGFucy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKIHwgPHNwYW4+CiB8ICAgc3R5
bGU9ImRpc3BsYXk6YmxvY2siCiB8ICAgPGI+Ci18ICAgICAiVGhpczwjc2VsZWN0aW9uLWNhcmV0
PiIKLXwgICA8Yj4KK3wgICAgIDxiPgorfCAgICAgICAiVGhpczwjc2VsZWN0aW9uLWNhcmV0PiIK
IHwgICAgICLCoGlzIGFub3RoZXIgcGFyYWdyYXBoLiIKIHwgICA8YnI+CiB8ICIKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAwMS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQt
MDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC05LDcgKzksNyBAQAogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1l
bnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gU1BB
TiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDcgb2YgI3RleHQgPiBTUEFOID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFj
dGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAwIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDEgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBh
ZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxT
RQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgpAQCAtMjEsNyArMjEsOCBAQAogfCA8c3Bhbj4KIHwgICBpZD0idGVzdCIKIHwgICAiZm9v
IGJhciIKLXwgICAiYmFyPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiYmFyPCNzZWxlY3Rpb24tY2Fy
ZXQ+IgorfCA8c3Bhbj4KIHwgICAiwqBiYXoiCiB8ICIKICIKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDg3OTg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLXByZS0wMDItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDQgKzIsNCBAQAog
Zm9vCiBiYXIKIGV4ZWNDb3B5Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmci
PiA8cHJlPmZvbyBiYXI8L3ByZT4gPC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0
ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4i
IHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNwYWNlOiBub3JtYWw7ICI+PHByZT5m
b28gYmFyPC9wcmU+PC9zcGFuPjwvcHJlPiA8L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYg
aWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48cHJlPmZvbyBiYXI8L3ByZT48L3ByZT4g
PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1p
bi1wcmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3OTg3KQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywxMCArMyw3IEBACiB8IDxwcmU+CiB8ICAgY29u
dGVudGVkaXRhYmxlPSJ0cnVlIgogfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFz
cz0iQXBwbGUtc3R5bGUtc3BhbiIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdo
aXRlLXNwYWNlOiBub3JtYWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRlZGl0YWJs
ZT0idHJ1ZSIKLXwgICAgICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24n
PmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgIDxwcmU+Cit8ICAg
ICBjb250ZW50ZWRpdGFibGU9InRydWUiCit8ICAgICBpZD0icHJlIgorfCAgICAgIjxpbnB1dCB0
eXBlPSdidXR0b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1w
cmUtMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTcsNCArNyw0IEBACiBmb28KIGJhcgogZXhlY0N1dENvbW1hbmQ6IDxkaXYgaWQ9InRlc3Qi
IGNsYXNzPSJlZGl0aW5nIj4gPHByZT48YnI+PC9wcmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFu
ZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBs
ZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1zcGFjZTogbm9y
bWFsOyAiPjxwcmU+Zm9vIGJhcjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CitleGVjUGFzdGVD
b21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHByZT5mb28gYmFy
PC9wcmU+PC9wcmU+IDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
LzUwNjU2MDUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC81MDY1NjA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTA2NTYwNS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxk
SW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFj
dGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MjQgb2YgI3RleHQgPiBGT05UID4gRElWID4gU1BBTiA+IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAyNCBvZiAjdGV4dCA+IEZPTlQgPiBESVYgPiBTUEFOID4g
Rk9OVCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gMjQgb2YgI3RleHQgPiBGT05UID4gRElWID4gRk9OVCA+IERJViA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDI0IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+IEZPTlQg
PiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlv
bkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRD
aGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtNDAsMTUgKzQw
LDEzIEBACiB8ICAgPGZvbnQ+CiB8ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKIHwgICAg
IGNvbG9yPSIjZmYwMDAwIgotfCAgICAgPHNwYW4+Cit8ICAgICA8Zm9udD4KIHwgICAgICAgY2xh
c3M9IkFwcGxlLXN0eWxlLXNwYW4iCit8ICAgICAgIGNvbG9yPSIjZmYwMDAwIgorfCAgICAgICAi
VGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuIgorfCAgICAgPGRpdj4KIHwgICAgICAgc3R5bGU9ImNv
bG9yOiByZ2IoMCwgMCwgMCk7ICIKIHwgICAgICAgPGZvbnQ+CiB8ICAgICAgICAgY2xhc3M9IkFw
cGxlLXN0eWxlLXNwYW4iCiB8ICAgICAgICAgY29sb3I9IiNmZjAwMDAiCi18ICAgICAgICAgIlRo
aXMgdGV4dCBzaG91bGQgYmUgcmVkLiIKLXwgICAgICAgPGRpdj4KLXwgICAgICAgICA8Zm9udD4K
LXwgICAgICAgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgotfCAgICAgICAgICAgY29sb3I9
IiNmZjAwMDAiCi18ICAgICAgICAgICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuPCNzZWxlY3Rp
b24tY2FyZXQ+IgorfCAgICAgICAgICJUaGlzIHRleHQgc2hvdWxkIGJlIHJlZC48I3NlbGVjdGlv
bi1jYXJldD4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0aW5nLWxp
bmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1jb2xvci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFrLXBy
ZXNlcnZlcy11bmRlcmxpbmUtY29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4Nzk4NykKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRpbmctbGluZS1icmVhay1wcmVzZXJ2
ZXMtdW5kZXJsaW5lLWNvbG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNyAr
MTMsNyBAQAogfCA8ZGl2PgogfCAgICJUaGlzIHNob3VsZCBub3QgYmUgdW5kZXJsaW5lZC48I3Nl
bGVjdGlvbi1jYXJldD4iCiB8ICAgPHNwYW4+Ci18ICAgICBzdHlsZT0idGV4dC1kZWNvcmF0aW9u
OiB1bmRlcmxpbmU7IGNvbG9yOiBibHVlOyIKK3wgICAgIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246
IHVuZGVybGluZTsgY29sb3I6IGJsdWU7ICIKIHwgICAgIDxzcGFuPgogfCAgICAgICBzdHlsZT0i
Y29sb3I6cmVkOyIKIHwgICAgICAgIlRoaXMgc2hvdWxkIGJlIHVuZGVybGluZWQuIgpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHAJKHJldmlzaW9uIDg3OTg3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3OCwzNCArNDc4LDI3IEBACiAv
LyBhIGRpdiBpbnNlcnRlZCBpbnRvIGEgZG9jdW1lbnQgd2l0aCBkaXYgeyBkaXNwbGF5OmlubGlu
ZTsgfS4KIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnJlbW92ZVJlZHVuZGFudFN0eWxl
c0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoKQogewotICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUg
PSBtX2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VO
ZXh0Tm9kZSgpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNTM3MTUzNj4g
U3R5bGUgcnVsZXMgdGhhdCBtYXRjaCBwYXN0ZWQgY29udGVudCBjYW4gY2hhbmdlIGl0J3MgYXBw
ZWFyYW5jZQotICAgICAgICBpZiAoaXNTdHlsZVNwYW4obm9kZS5nZXQoKSkpIHsKLSAgICAgICAg
ICAgIEhUTUxFbGVtZW50KiBlID0gdG9IVE1MRWxlbWVudChub2RlLmdldCgpKTsKLSAgICAgICAg
ICAgIC8vIFRoZXJlIGFyZSBvdGhlciBzdHlsZXMgdGhhdCBzdHlsZSBydWxlcyBjYW4gZ2l2ZSB0
byBzdHlsZSBzcGFucywKLSAgICAgICAgICAgIC8vIGJ1dCB0aGVzZSBhcmUgdGhlIHR3byBpbXBv
cnRhbnQgb25lcyBiZWNhdXNlIHRoZXknbGwgcHJldmVudAotICAgICAgICAgICAgLy8gaW5zZXJ0
ZWQgY29udGVudCBmcm9tIGFwcGVhcmluZyBpbiB0aGUgcmlnaHQgcGFyYWdyYXBoLgotICAgICAg
ICAgICAgLy8gRklYTUU6IEh5YXR0IGlzIGNvbmNlcm5lZCB0aGF0IHNlbGVjdGl2ZWx5IHVzaW5n
IGRpc3BsYXk6aW5saW5lIHdpbGwgZ2l2ZSBpbmNvbnNpc3RlbnQKLSAgICAgICAgICAgIC8vIHJl
c3VsdHMuIFdlIGFscmVhZHkga25vdyBvbmUgaXNzdWUgYmVjYXVzZSB0ZCBlbGVtZW50cyBpZ25v
cmUgdGhlaXIgZGlzcGxheSBwcm9wZXJ0eQotICAgICAgICAgICAgLy8gaW4gcXVpcmtzIG1vZGUg
KHdoaWNoIE1haWwuYXBwIGlzIGFsd2F5cyBpbikuIFdlIHNob3VsZCBsb29rIGZvciBhbiBhbHRl
cm5hdGl2ZS4KLSAgICAgICAgICAgIGlmIChpc0Jsb2NrKGUpKQotICAgICAgICAgICAgICAgIGUt
PmdldElubGluZVN0eWxlRGVjbCgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENT
U1ZhbHVlSW5saW5lKTsKLSAgICAgICAgICAgIGlmIChlLT5yZW5kZXJlcigpICYmIGUtPnJlbmRl
cmVyKCktPnN0eWxlKCktPmZsb2F0aW5nKCkgIT0gRk5PTkUpCi0gICAgICAgICAgICAgICAgZS0+
Z2V0SW5saW5lU3R5bGVEZWNsKCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQsIENTU1Zh
bHVlTm9uZSk7Ci0gICAgICAgIH0gZWxzZSBpZiAobm9kZS0+aXNTdHlsZWRFbGVtZW50KCkpIHsK
LSAgICAgICAgICAgIFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRF
bGVtZW50Kj4obm9kZS5nZXQoKSk7Ci0gICAgICAgICAgICBpZiAoQ1NTTXV0YWJsZVN0eWxlRGVj
bGFyYXRpb24qIGlubGluZVN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCkpIHsKLSAg
ICAgICAgICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBuZXdJbmxpbmVTdHlsZSA9IEVkaXRp
bmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKLSAgICAgICAgICAgICAgICBuZXdJbmxpbmVT
dHlsZS0+cmVtb3ZlU3R5bGVGcm9tUnVsZXMoZWxlbWVudCk7Ci0gICAgICAgICAgICAgICAgaWYg
KCFuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKSB8fCAhbmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmxl
bmd0aCgpKQotICAgICAgICAgICAgICAgICAgICByZW1vdmVOb2RlQXR0cmlidXRlKGVsZW1lbnQs
IHN0eWxlQXR0cik7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAobmV3SW5saW5lU3R5bGUtPnN0
eWxlKCktPmxlbmd0aCgpIDwgaW5saW5lU3R5bGUtPmxlbmd0aCgpKQotICAgICAgICAgICAgICAg
ICAgICBzZXROb2RlQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlQXR0ciwgbmV3SW5saW5lU3R5bGUt
PnN0eWxlKCktPmNzc1RleHQoKSk7ICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQorICAgIFJlZlB0cjxOb2RlPiBwYXN0RW5kTm9kZSA9IG1fbGFzdExlYWZJbnNl
cnRlZCA/IG1fbGFzdExlYWZJbnNlcnRlZC0+dHJhdmVyc2VOZXh0Tm9kZSgpIDogMDsKKyAgICBS
ZWZQdHI8Tm9kZT4gbmV4dDsKKyAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2RlID0gbV9maXJzdE5v
ZGVJbnNlcnRlZC5nZXQoKTsgbm9kZSAmJiBub2RlICE9IHBhc3RFbmROb2RlOyBub2RlID0gbmV4
dCkgeworICAgICAgICBuZXh0ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpOworICAgICAgICBp
ZiAoIW5vZGUtPmlzU3R5bGVkRWxlbWVudCgpKQorICAgICAgICAgICAgY29udGludWU7CiAKLSAg
ICAgICAgaWYgKG5vZGUgPT0gbV9sYXN0TGVhZkluc2VydGVkKQotICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTdHlsZWRFbGVt
ZW50Kj4obm9kZS5nZXQoKSk7CisKKyAgICAgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24q
IGlubGluZVN0eWxlID0gZWxlbWVudC0+aW5saW5lU3R5bGVEZWNsKCk7CisgICAgICAgIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5s
aW5lU3R5bGUpOworICAgICAgICBpZiAoaW5saW5lU3R5bGUpCisgICAgICAgICAgICBuZXdJbmxp
bmVTdHlsZS0+cmVtb3ZlU3R5bGVGcm9tUnVsZXMoZWxlbWVudCk7CisKKyAgICAgICAgaWYgKGlu
bGluZVN0eWxlICYmIG5ld0lubGluZVN0eWxlLT5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIGlm
IChpc1N0eWxlU3Bhbihub2RlLmdldCgpKSkgLy8gRklYTUU6IHNob3VsZCBjYWxsIGlzU3Bhbldp
dGhvdXRBdHRyaWJ1dGVzT3JVbnN0eWxlU3R5bGVTcGFuIGluc3RlYWQKKyAgICAgICAgICAgICAg
ICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKG5vZGUuZ2V0KCkpOworICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgIHJlbW92ZU5vZGVBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVB
dHRyKTsKKyAgICAgICAgfSBlbHNlIGlmICghbmV3SW5saW5lU3R5bGUtPmlzRW1wdHkoKSAmJiAo
IWlubGluZVN0eWxlIHx8IG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5sZW5ndGgoKSAhPSBpbmxp
bmVTdHlsZS0+bGVuZ3RoKCkpKQorICAgICAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShlbGVtZW50
LCBzdHlsZUF0dHIsIG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCkpOwogICAgIH0K
IH0KIApAQCAtNjExLDkgKzYwNCw2IEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLS8vIEF0IGNv
cHkgdGltZSwgV2ViS2l0IHdyYXBzIGNvcGllZCBjb250ZW50IGluIGEgc3BhbiB0aGF0IGNvbnRh
aW5zIHRoZSBzb3VyY2UgZG9jdW1lbnQncyAKLS8vIGRlZmF1bHQgc3R5bGVzLiAgSWYgdGhlIGNv
cGllZCBSYW5nZSBpbmhlcml0cyBhbnkgb3RoZXIgc3R5bGVzIGZyb20gaXRzIGFuY2VzdG9ycywg
d2UgcHV0IAotLy8gdGhvc2Ugc3R5bGVzIG9uIGEgc2Vjb25kIHNwYW4uCiAvLyBUaGlzIGZ1bmN0
aW9uIHJlbW92ZXMgcmVkdW5kYW50IHN0eWxlcyBmcm9tIHRob3NlIHNwYW5zLCBhbmQgcmVtb3Zl
cyB0aGUgc3BhbnMgaWYgYWxsIHRoZWlyIAogLy8gc3R5bGVzIGFyZSByZWR1bmRhbnQuIAogLy8g
V2Ugc2hvdWxkIHJlbW92ZSB0aGUgQXBwbGUtc3R5bGUtc3BhbiBjbGFzcyB3aGVuIHdlJ3JlIGRv
bmUsIHNlZSA8cmRhcjovL3Byb2JsZW0vNTY4NTYwMD4uCkBAIC02NjIsNDEgKzY1Miw2IEBACiAg
ICAgICAgIHNldE5vZGVBdHRyaWJ1dGUod3JhcHBpbmdTdHlsZVNwYW4sIHN0eWxlQXR0ciwgc3R5
bGUtPnN0eWxlKCktPmNzc1RleHQoKSk7CiB9CiAKLS8vIFRha2UgdGhlIHN0eWxlIGF0dHJpYnV0
ZSBvZiBhIHNwYW4gYW5kIGFwcGx5IGl0IHRvIGl0J3MgY2hpbGRyZW4gaW5zdGVhZC4gIFRoaXMg
YWxsb3dzIHVzIHRvCi0vLyBjb252ZXJ0IGludmFsaWQgSFRNTCB3aGVyZSBhIHNwYW4gY29udGFp
bnMgYmxvY2sgZWxlbWVudHMgaW50byB2YWxpZCBIVE1MIHdoaWxlIHByZXNlcnZpbmcKLS8vIHN0
eWxlcy4KLXZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNvcHlTdHlsZVRvQ2hpbGRyZW4o
Tm9kZSogcGFyZW50Tm9kZSwgY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHBhcmVu
dFN0eWxlKQotewotICAgIEFTU0VSVChwYXJlbnROb2RlLT5oYXNUYWdOYW1lKHNwYW5UYWcpKTsK
LSAgICBOb2RlVmVjdG9yIGNoaWxkTm9kZXM7Ci0gICAgZm9yIChSZWZQdHI8Tm9kZT4gY2hpbGRO
b2RlID0gcGFyZW50Tm9kZS0+Zmlyc3RDaGlsZCgpOyBjaGlsZE5vZGU7IGNoaWxkTm9kZSA9IGNo
aWxkTm9kZS0+bmV4dFNpYmxpbmcoKSkKLSAgICAgICAgY2hpbGROb2Rlcy5hcHBlbmQoY2hpbGRO
b2RlKTsKLSAgICAgICAgCi0gICAgZm9yIChOb2RlVmVjdG9yOjpjb25zdF9pdGVyYXRvciBpdCA9
IGNoaWxkTm9kZXMuYmVnaW4oKTsgaXQgIT0gY2hpbGROb2Rlcy5lbmQoKTsgaXQrKykgewotICAg
ICAgICBOb2RlKiBjaGlsZE5vZGUgPSBpdC0+Z2V0KCk7Ci0gICAgICAgIGlmIChjaGlsZE5vZGUt
PmlzVGV4dE5vZGUoKSB8fCAhaXNCbG9jayhjaGlsZE5vZGUpIHx8IGNoaWxkTm9kZS0+aGFzVGFn
TmFtZShwcmVUYWcpKSB7Ci0gICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UsIHB1dCBhIHNwYW4g
dGFnIGFyb3VuZCB0aGUgY2hpbGQgbm9kZS4KLSAgICAgICAgICAgIFJlZlB0cjxOb2RlPiBuZXdO
b2RlID0gcGFyZW50Tm9kZS0+Y2xvbmVOb2RlKGZhbHNlKTsKLSAgICAgICAgICAgIEFTU0VSVChu
ZXdOb2RlLT5oYXNUYWdOYW1lKHNwYW5UYWcpKTsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50KiBu
ZXdTcGFuID0gdG9IVE1MRWxlbWVudChuZXdOb2RlLmdldCgpKTsKLSAgICAgICAgICAgIHNldE5v
ZGVBdHRyaWJ1dGUobmV3U3Bhbiwgc3R5bGVBdHRyLCBwYXJlbnRTdHlsZS0+Y3NzVGV4dCgpKTsK
LSAgICAgICAgICAgIGluc2VydE5vZGVBZnRlcihuZXdTcGFuLCBjaGlsZE5vZGUpOwotICAgICAg
ICAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgICAgICAgICBuZXdTcGFuLT5hcHBlbmRD
aGlsZChjaGlsZE5vZGUsIGVjKTsKLSAgICAgICAgICAgIEFTU0VSVCghZWMpOwotICAgICAgICAg
ICAgY2hpbGROb2RlID0gbmV3U3BhbjsKLSAgICAgICAgfSBlbHNlIGlmIChjaGlsZE5vZGUtPmlz
SFRNTEVsZW1lbnQoKSkgewotICAgICAgICAgICAgLy8gQ29weSB0aGUgc3R5bGUgYXR0cmlidXRl
IGFuZCBtZXJnZSB0aGVtIGludG8gdGhlIGNoaWxkIG5vZGUuICBXZSBkb24ndCB3YW50IHRvIG92
ZXJyaWRlCi0gICAgICAgICAgICAvLyBleGlzdGluZyBzdHlsZXMsIHNvIGRvbid0IGNsb2JiZXIg
b24gbWVyZ2UuCi0gICAgICAgICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+
IG5ld1N0eWxlID0gcGFyZW50U3R5bGUtPmNvcHkoKTsKLSAgICAgICAgICAgIEhUTUxFbGVtZW50
KiBjaGlsZEVsZW1lbnQgPSB0b0hUTUxFbGVtZW50KGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICBS
ZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGV4aXN0aW5nU3R5bGVzID0gY2hpbGRF
bGVtZW50LT5nZXRJbmxpbmVTdHlsZURlY2woKS0+Y29weSgpOwotICAgICAgICAgICAgZXhpc3Rp
bmdTdHlsZXMtPm1lcmdlKG5ld1N0eWxlLmdldCgpLCBmYWxzZSk7Ci0gICAgICAgICAgICBzZXRO
b2RlQXR0cmlidXRlKGNoaWxkRWxlbWVudCwgc3R5bGVBdHRyLCBleGlzdGluZ1N0eWxlcy0+Y3Nz
VGV4dCgpKTsKLSAgICAgICAgfQotICAgIH0KLX0KLQogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZDo6bWVyZ2VFbmRJZk5lZWRlZCgpCiB7CiAgICAgaWYgKCFtX3Nob3VsZE1lcmdlRW5kKQpA
QCAtOTQzLDggKzg5OCw3IEBACiAgICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBmaXJzdFBvc2l0
aW9uSW5Ob2RlKGluc2VydGlvblBvcy5jb250YWluZXJOb2RlKCkpOwogICAgICAgICB9CiAKLSAg
ICAgICAgLy8gRklYTUU6IGlzSW5saW5lTm9kZVdpdGhTdHlsZSBkb2VzIG5vdCBjaGVjayBlZGl0
YWJpbGl0eS4KLSAgICAgICAgaWYgKFJlZlB0cjxOb2RlPiBub2RlVG9TcGxpdFRvID0gaGlnaGVz
dEVuY2xvc2luZ05vZGVPZlR5cGUoaW5zZXJ0aW9uUG9zLCBpc0lubGluZU5vZGVXaXRoU3R5bGUp
KSB7CisgICAgICAgIGlmIChSZWZQdHI8Tm9kZT4gbm9kZVRvU3BsaXRUbyA9IGhpZ2hlc3RFbmNs
b3NpbmdOb2RlT2ZUeXBlKGluc2VydGlvblBvcywgaXNJbmxpbmVOb2RlV2l0aFN0eWxlLCBDYW5u
b3RDcm9zc0VkaXRpbmdCb3VuZGFyeSwgZW5jbG9zaW5nQmxvY2soaW5zZXJ0aW9uUG9zLmNvbnRh
aW5lck5vZGUoKSkpKSB7CiAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5v
ZGUoKSAhPSBub2RlVG9TcGxpdFRvKSB7CiAgICAgICAgICAgICAgICAgbm9kZVRvU3BsaXRUbyA9
IHNwbGl0VHJlZVRvTm9kZShpbnNlcnRpb25Qb3MuYW5jaG9yTm9kZSgpLCBub2RlVG9TcGxpdFRv
LmdldCgpLCB0cnVlKS5nZXQoKTsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBwb3Np
dGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlVG9TcGxpdFRvLmdldCgpKTsKQEAgLTEwNjIsNiAr
MTAxNiwxMyBAQAogICAgICAgICAvLyBGSVhNRTogTWFpbnRhaW4gcG9zaXRpb25zIGZvciB0aGUg
c3RhcnQgYW5kIGVuZCBvZiBpbnNlcnRlZCBjb250ZW50IGluc3RlYWQgb2Yga2VlcGluZyBub2Rl
cy4gIFRoZSBub2RlcyBhcmUKICAgICAgICAgLy8gb25seSBldmVyIHVzZWQgdG8gY3JlYXRlIHBv
c2l0aW9ucyB3aGVyZSBpbnNlcnRlZCBjb250ZW50IHN0YXJ0cy9lbmRzLgogICAgICAgICBtb3Zl
UGFyYWdyYXBoKHN0YXJ0T2ZQYXJhZ3JhcGhUb01vdmUsIGVuZE9mUGFyYWdyYXBoKHN0YXJ0T2ZQ
YXJhZ3JhcGhUb01vdmUpLCBkZXN0aW5hdGlvbik7CisgICAgICAgIFBvc2l0aW9uIHBvc2l0aW9u
QXRGaXJzdE5vZGUgPSBlbmRpbmdTZWxlY3Rpb24oKS52aXNpYmxlU3RhcnQoKS5kZWVwRXF1aXZh
bGVudCgpLmRvd25zdHJlYW0oKTsKKworICAgICAgICBtX2ZpcnN0Tm9kZUluc2VydGVkID0gcG9z
aXRpb25BdEZpcnN0Tm9kZS5kZXByZWNhdGVkTm9kZSgpOworICAgICAgICAvLyBGSVhNRTogd2Ug
c2hvdWxkIHJlcGxhY2UgbV9maXJzdE5vZGVJbnNlcnRlZCBieSBhIHBvc2l0aW9uIHJhdGhlciB0
aGFuIGhhdmluZyB0aGlzIHdvcmstYXJvdW5kLgorICAgICAgICBpZiAobV9maXJzdE5vZGVJbnNl
cnRlZC0+aXNUZXh0Tm9kZSgpICYmIHBvc2l0aW9uQXRGaXJzdE5vZGUub2Zmc2V0SW5Db250YWlu
ZXJOb2RlKCkpCisgICAgICAgICAgICBzcGxpdFRleHROb2RlKHN0YXRpY19jYXN0PFRleHQqPiht
X2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpKSwgcG9zaXRpb25BdEZpcnN0Tm9kZS5vZmZzZXRJbkNv
bnRhaW5lck5vZGUoKSk7CisKICAgICAgICAgbV9maXJzdE5vZGVJbnNlcnRlZCA9IGVuZGluZ1Nl
bGVjdGlvbigpLnZpc2libGVTdGFydCgpLmRlZXBFcXVpdmFsZW50KCkuZG93bnN0cmVhbSgpLmRl
cHJlY2F0ZWROb2RlKCk7CiAgICAgICAgIGlmICghbV9sYXN0TGVhZkluc2VydGVkLT5pbkRvY3Vt
ZW50KCkpCiAgICAgICAgICAgICBtX2xhc3RMZWFmSW5zZXJ0ZWQgPSBlbmRpbmdTZWxlY3Rpb24o
KS52aXNpYmxlRW5kKCkuZGVlcEVxdWl2YWxlbnQoKS51cHN0cmVhbSgpLmRlcHJlY2F0ZWROb2Rl
KCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZpc2lvbiA4Nzk4NykKKysr
IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIw
LDEyICsxMjAsNyBAQAogcHVibGljOgogICAgIGVudW0gUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHsg
RG9lc0Z1bGx5U2VsZWN0Tm9kZSwgRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSB9OwogCi0gICAgU3R5
bGVkTWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMg
c2hvdWxkUmVzb2x2ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlIHNob3VsZEFubm90YXRl
LCBjb25zdCBSYW5nZSogcmFuZ2UpCi0gICAgOiBNYXJrdXBBY2N1bXVsYXRvcihub2Rlcywgc2hv
dWxkUmVzb2x2ZVVSTHMsIHJhbmdlKQotICAgICwgbV9zaG91bGRBbm5vdGF0ZShzaG91bGRBbm5v
dGF0ZSkKLSAgICB7Ci0gICAgfQotCisgICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IoVmVjdG9y
PE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBj
b25zdCBSYW5nZSosIE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSAwKTsKICAgICBO
b2RlKiBzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQpOwogICAg
IHZpcnR1YWwgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RyaW5nKHMpOyB9CiAgICAgdm9pZCB3cmFwV2l0aE5vZGUo
Tm9kZSosIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBSYW5nZUZ1bGx5U2Vs
ZWN0c05vZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKTsKQEAgLTEzMywxOCArMTI4LDM3IEBACiAg
ICAgU3RyaW5nIHRha2VSZXN1bHRzKCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCBhcHBlbmRTdHls
ZU5vZGVPcGVuVGFnKFZlY3RvcjxVQ2hhcj4mLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgRG9jdW1l
bnQqLCBib29sIGlzQmxvY2sgPSBmYWxzZSk7CisgICAgY29uc3QgU3RyaW5nIHN0eWxlTm9kZUNs
b3NlVGFnKGJvb2wgaXNCbG9jayA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kVGV4
dChWZWN0b3I8VUNoYXI+JiBvdXQsIFRleHQqKTsKICAgICBTdHJpbmcgcmVuZGVyZWRUZXh0KGNv
bnN0IE5vZGUqLCBjb25zdCBSYW5nZSopOwogICAgIFN0cmluZyBzdHJpbmdWYWx1ZUZvclJhbmdl
KGNvbnN0IE5vZGUqLCBjb25zdCBSYW5nZSopOwogICAgIHZvaWQgYXBwZW5kRWxlbWVudChWZWN0
b3I8VUNoYXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgYWRkRGlzcGxheUlubGluZSwg
UmFuZ2VGdWxseVNlbGVjdHNOb2RlKTsKICAgICB2b2lkIGFwcGVuZEVsZW1lbnQoVmVjdG9yPFVD
aGFyPiYgb3V0LCBFbGVtZW50KiBlbGVtZW50LCBOYW1lc3BhY2VzKikgeyBhcHBlbmRFbGVtZW50
KG91dCwgZWxlbWVudCwgZmFsc2UsIERvZXNGdWxseVNlbGVjdE5vZGUpOyB9CiAKKyAgICBOb2Rl
KiB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBh
c3RFbmQsIGJvb2wgc2hvdWxkRW1pdCk7CisKICAgICBib29sIHNob3VsZEFubm90YXRlKCkgeyBy
ZXR1cm4gbV9zaG91bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlOyB9CisgICAg
Ym9vbCBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoTm9kZSogbm9kZSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgJiYgbV9oaWdoZXN0Tm9k
ZVRvQmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgPT0gbm9kZS0+cGFyZW50Tm9kZSgpCisgICAg
ICAgICAgICAmJiBtX3dyYXBwaW5nU3R5bGUgJiYgbV93cmFwcGluZ1N0eWxlLT5zdHlsZSgpOwor
ICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXA7CiAg
ICAgY29uc3QgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgbV9zaG91bGRBbm5vdGF0ZTsKKyAgICBO
b2RlKiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQ7CisgICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gbV93cmFwcGluZ1N0eWxlOwogfTsKIAoraW5saW5lIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9y
OjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRl
VVJMcyBzaG91bGRSZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5u
b3RhdGUsCisgICAgY29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBoaWdoZXN0Tm9kZVRvQmVTZXJp
YWxpemVkKQorICAgIDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxz
LCByYW5nZSkKKyAgICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5ub3RhdGUpCisgICAgLCBt
X2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQoaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCkKK3sK
K30KKwogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhOb2RlKE5vZGUqIG5v
ZGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHJh
bmdlRnVsbHlTZWxlY3RzTm9kZSkKIHsKICAgICBWZWN0b3I8VUNoYXI+IG1hcmt1cDsKQEAgLTE2
MCwyMCArMTc0LDMwIEBACiAKIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OndyYXBXaXRo
U3R5bGVOb2RlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgaXNCbG9jaykKIHsKKyAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7CisgICAgYXBwZW5k
U3R5bGVOb2RlT3BlblRhZyhvcGVuVGFnLCBzdHlsZSwgZG9jdW1lbnQsIGlzQmxvY2spOworICAg
IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5kKFN0cmluZzo6YWRvcHQob3BlblRhZykp
OworICAgIGFwcGVuZFN0cmluZyhzdHlsZU5vZGVDbG9zZVRhZyhpc0Jsb2NrKSk7Cit9CisKK3Zv
aWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0eWxlTm9kZU9wZW5UYWcoVmVjdG9y
PFVDaGFyPiYgb3V0LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRG9jdW1lbnQqIGRvY3Vt
ZW50LCBib29sIGlzQmxvY2spCit7CiAgICAgLy8gQWxsIHRleHQtZGVjb3JhdGlvbi1yZWxhdGVk
IGVsZW1lbnRzIHNob3VsZCBoYXZlIGJlZW4gdHJlYXRlZCBhcyBzcGVjaWFsIGFuY2VzdG9ycwog
ICAgIC8vIElmIHdlIGV2ZXIgaGl0IHRoaXMgQVNTRVJULCB3ZSBzaG91bGQgZXhwb3J0IFN0eWxl
Q2hhbmdlIGluIEFwcGx5U3R5bGVDb21tYW5kIGFuZCB1c2UgaXQgaGVyZQogICAgIEFTU0VSVChw
cm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKHN0eWxlLCBDU1NQcm9wZXJ0eVRleHREZWNvcmF0
aW9uKSAmJiBwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKHN0eWxlLCBDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChj
b25zdCBTdHJpbmcsIGRpdlN0eWxlLCAoIjxkaXYgc3R5bGU9XCIiKSk7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0eWxlU3Bhbk9wZW4sICgiPHNwYW4gY2xhc3M9XCIi
IEFwcGxlU3R5bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIikpOworICAgIGFwcGVuZChvdXQsIGlz
QmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOworICAgIGFwcGVuZEF0dHJpYnV0ZVZh
bHVlKG91dCwgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOwor
ICAgIG91dC5hcHBlbmQoJ1wiJyk7CisgICAgb3V0LmFwcGVuZCgnPicpOworfQorCitjb25zdCBT
dHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNsb3NlVGFnKGJvb2wgaXNC
bG9jaykKK3sKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2Us
ICgiPC9kaXY+IikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHls
ZVNwYW5PcGVuLCAoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJcIiBzdHls
ZT1cIiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5bGVTcGFu
Q2xvc2UsICgiPC9zcGFuPiIpKTsKLSAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7Ci0gICAgYXBw
ZW5kKG9wZW5UYWcsIGlzQmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOwotICAgIGFw
cGVuZEF0dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50LT5p
c0hUTUxEb2N1bWVudCgpKTsKLSAgICBvcGVuVGFnLmFwcGVuZCgnXCInKTsKLSAgICBvcGVuVGFn
LmFwcGVuZCgnPicpOwotICAgIG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5kKFN0cmlu
Zzo6YWRvcHQob3BlblRhZykpOwotICAgIGFwcGVuZFN0cmluZyhpc0Jsb2NrID8gZGl2Q2xvc2Ug
OiBzdHlsZVNwYW5DbG9zZSk7CisgICAgcmV0dXJuIGlzQmxvY2sgPyBkaXZDbG9zZSA6IHN0eWxl
U3BhbkNsb3NlOwogfQogCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRha2VSZXN1
bHRzKCkKQEAgLTE5MSwxNyArMjE1LDQyIEBACiB9CiAKIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11
bGF0b3I6OmFwcGVuZFRleHQoVmVjdG9yPFVDaGFyPiYgb3V0LCBUZXh0KiB0ZXh0KQotewotICAg
IGlmICghc2hvdWxkQW5ub3RhdGUoKSB8fCAodGV4dC0+cGFyZW50RWxlbWVudCgpICYmIHRleHQt
PnBhcmVudEVsZW1lbnQoKS0+dGFnUU5hbWUoKSA9PSB0ZXh0YXJlYVRhZykpIHsKK3sgICAgCisg
ICAgYm9vbCBwYXJlbnRJc1RleHRhcmVhID0gdGV4dC0+cGFyZW50RWxlbWVudCgpICYmIHRleHQt
PnBhcmVudEVsZW1lbnQoKS0+dGFnUU5hbWUoKSA9PSB0ZXh0YXJlYVRhZzsKKyAgICBib29sIHdy
YXBwaW5nU3BhbiA9IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSh0ZXh0KSAmJiAhcGFyZW50SXNU
ZXh0YXJlYTsKKyAgICBpZiAod3JhcHBpbmdTcGFuKSB7CisgICAgICAgIG1fd3JhcHBpbmdTdHls
ZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHRleHQsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0luaGVy
aXRhYmxlUHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAgICAv
LyBTdHlsZXMgdGhhdCBNYWlsIGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUg
cGxhY2VkIG9uIHRoZSBNYWlsIGJsb2NrcXVvdGUsCisgICAgICAgIC8vIHRvIGhlbHAgdXMgZGlm
ZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxp
ZWQuCisgICAgICAgIC8vIFRoaXMgaGVscHMgdXMgZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBh
c3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJpZ2h0LgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPnJl
bW92ZVN0eWxlQWRkZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShwb3NpdGlvbkJlZm9yZU5v
ZGUodGV4dCksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7CisK
KyAgICAgICAgLy8gRG9uJ3QgcHV0IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3Qg
aW4gc2VyaWFsaXplZCBtYXJrdXAKKyAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRl
eHREZWNvcmF0aW9uUHJvcGVydGllcygpOworCisgICAgICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81
MzcxNTM2PgorICAgICAgICAvLyBNYWtlIHN1cmUgc3BhbnMgYXJlIGlubGluZSBzdHlsZSBpbiBw
YXN0ZSBzaWRlIGUuZy4gc3BhbiB7IGRpc3BsYXk6IGJsb2NrIH0KKyAgICAgICAgbV93cmFwcGlu
Z1N0eWxlLT5zdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVl
SW5saW5lKTsKKyAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5zdHlsZSgpLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eUZsb2F0LCBDU1NWYWx1ZU5vbmUpOworCisgICAgICAgIFZlY3RvcjxVQ2hhcj4g
b3BlblRhZzsKKyAgICAgICAgYXBwZW5kU3R5bGVOb2RlT3BlblRhZyhvcGVuVGFnLCBtX3dyYXBw
aW5nU3R5bGUtPnN0eWxlKCksIHRleHQtPmRvY3VtZW50KCkpOworICAgICAgICBhcHBlbmQob3V0
LCBTdHJpbmc6OmFkb3B0KG9wZW5UYWcpKTsKKyAgICB9CisKKyAgICBpZiAoIXNob3VsZEFubm90
YXRlKCkgfHwgcGFyZW50SXNUZXh0YXJlYSkKICAgICAgICAgTWFya3VwQWNjdW11bGF0b3I6OmFw
cGVuZFRleHQob3V0LCB0ZXh0KTsKLSAgICAgICAgcmV0dXJuOworICAgIGVsc2UgeworICAgICAg
ICBib29sIHVzZVJlbmRlcmVkVGV4dCA9ICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0
aW9uSW5Ob2RlKHRleHQpLCBzZWxlY3RUYWcpOworICAgICAgICBTdHJpbmcgY29udGVudCA9IHVz
ZVJlbmRlcmVkVGV4dCA/IHJlbmRlcmVkVGV4dCh0ZXh0LCBtX3JhbmdlKSA6IHN0cmluZ1ZhbHVl
Rm9yUmFuZ2UodGV4dCwgbV9yYW5nZSk7CisgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOwor
ICAgICAgICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoYnVmZmVyLCBjb250ZW50
LmNoYXJhY3RlcnMoKSwgY29udGVudC5sZW5ndGgoKSwgRW50aXR5TWFza0luUENEQVRBKTsKKyAg
ICAgICAgYXBwZW5kKG91dCwgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChTdHJp
bmc6OmFkb3B0KGJ1ZmZlciksIHRleHQpKTsKICAgICB9CiAKLSAgICBib29sIHVzZVJlbmRlcmVk
VGV4dCA9ICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKHRleHQpLCBz
ZWxlY3RUYWcpOwotICAgIFN0cmluZyBjb250ZW50ID0gdXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVy
ZWRUZXh0KHRleHQsIG1fcmFuZ2UpIDogc3RyaW5nVmFsdWVGb3JSYW5nZSh0ZXh0LCBtX3Jhbmdl
KTsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcjsKLSAgICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFj
aW5nRW50aXRpZXMoYnVmZmVyLCBjb250ZW50LmNoYXJhY3RlcnMoKSwgY29udGVudC5sZW5ndGgo
KSwgRW50aXR5TWFza0luUENEQVRBKTsKLSAgICBhcHBlbmQob3V0LCBjb252ZXJ0SFRNTFRleHRU
b0ludGVyY2hhbmdlRm9ybWF0KFN0cmluZzo6YWRvcHQoYnVmZmVyKSwgdGV4dCkpOworICAgIGlm
ICh3cmFwcGluZ1NwYW4pCisgICAgICAgIGFwcGVuZChvdXQsIHN0eWxlTm9kZUNsb3NlVGFnKCkp
OwogfQogICAgIAogU3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpyZW5kZXJlZFRleHQo
Y29uc3QgTm9kZSogbm9kZSwgY29uc3QgUmFuZ2UqIHJhbmdlKQpAQCAtMjQ4LDE1ICsyOTcsMzQg
QEAKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAg
ICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsK
ICAgICAgICAgLy8gV2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgc2VwYXJhdGVseSwg
YmVsb3cuCi0gICAgICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSA9PSBzdHlsZUF0dHIgJiYgZWxl
bWVudC0+aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8IGFkZERpc3BsYXlJ
bmxpbmUpKQorICAgICAgICBpZiAoYXR0cmlidXRlLT5uYW1lKCkgPT0gc3R5bGVBdHRyICYmIGVs
ZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5
SW5saW5lIHx8IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KSkpCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgYXBwZW5kQXR0cmlidXRlKG91dCwgZWxlbWVudCwgKmF0dHJp
YnV0ZSwgMCk7CiAgICAgfQogCiAgICAgaWYgKGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAo
c2hvdWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5SW5saW5lKSkgewogICAgICAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHRvSFRNTEVsZW1lbnQo
ZWxlbWVudCktPmdldElubGluZVN0eWxlRGVjbCgpKTsKLSAgICAgICAgaWYgKHNob3VsZEFubm90
YXRlKCkpCisgICAgICAgIGlmIChzaG91bGRBbm5vdGF0ZSgpKSB7CiAgICAgICAgICAgICBzdHls
ZS0+bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24odG9IVE1MRWxlbWVudChlbGVt
ZW50KSk7CisKKyAgICAgICAgICAgIGlmIChzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxlbWVu
dCkpIHsKKyAgICAgICAgICAgICAgICBtX3dyYXBwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNy
ZWF0ZShlbGVtZW50LT5wYXJlbnROb2RlKCksIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0luaGVyaXRh
YmxlUHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAgICAgICAg
ICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJpYnV0ZSBzaG91bGQgb25s
eSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwKKyAgICAgICAgICAgICAgICAvLyB0
byBoZWxwIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1
c2VyIGhhcyBhcHBsaWVkLgorICAgICAgICAgICAgICAgIC8vIFRoaXMgaGVscHMgdXMgZ2V0IHRo
ZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJpZ2h0LgorICAgICAg
ICAgICAgICAgIG1fd3JhcHBpbmdTdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3Np
bmdOb2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk9yQmVmb3JlTm9kZShlbGVtZW50KSwgaXNNYWls
QmxvY2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKKworICAgICAgICAgICAgICAg
IC8vIENhbGwgY29sbGFwc2VUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMgZmlyc3Qgb3Igb3RoZXJ3
aXNlIGl0J2xsIGNvcHkgdGhlIHZhbHVlIG92ZXIgZnJvbSBpbi1lZmZlY3QgdG8gdGV4dC1kZWNv
cmF0aW9ucy4KKyAgICAgICAgICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPmNvbGxhcHNlVGV4dERl
Y29yYXRpb25Qcm9wZXJ0aWVzKCk7CisgICAgICAgICAgICAgICAgLy8gSnVzdCByZW1vdmluZyBj
b25mbGljdGluZyBzdHlsZSBpc24ndCBlbm91Z2ggYmVjYXVzZSBydWxlcyBzdWNoIGFzIGNvbG9y
OiBidXR0b250ZXh0IHdvbid0IGJlIHJlbW92ZWQKKyAgICAgICAgICAgICAgICBtX3dyYXBwaW5n
U3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoZWxlbWVudCk7Cisg
ICAgICAgICAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5yZW1vdmVTdHlsZUNvbmZsaWN0aW5nV2l0
aFN0eWxlT2ZOb2RlKGVsZW1lbnQpOworCisgICAgICAgICAgICAgICAgYm9vbCBhcmVPdmVycmlk
ZXNPbkNvbmZsaWN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgc3R5bGUtPnN0eWxlKCktPm1l
cmdlKG1fd3JhcHBpbmdTdHlsZS0+c3R5bGUoKSwgYXJlT3ZlcnJpZGVzT25Db25mbGljdCk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgaWYgKGFkZERpc3BsYXlJbmxpbmUpCiAg
ICAgICAgICAgICBzdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5
LCBDU1NWYWx1ZUlubGluZSwgdHJ1ZSk7CiAKQEAgLTI3MSw2ICszMzksMzQgQEAKICAgICAgICAg
ICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgc3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSwg
ZG9jdW1lbnRJc0hUTUwpOwogICAgICAgICAgICAgb3V0LmFwcGVuZCgnXCInKTsKICAgICAgICAg
fQorICAgIH0gZWxzZSBpZiAoc2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxlKGVsZW1lbnQpICYmIHNo
b3VsZEFwcGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KSkgeworICAgICAgICBtX3dyYXBwaW5nU3R5
bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShlbGVtZW50LCBFZGl0aW5nU3R5bGU6OkVkaXRpbmdJ
bmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk7CisKKyAgICAg
ICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRlIHNob3VsZCBvbmx5
IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLAorICAgICAgICAvLyB0byBoZWxwIHVz
IGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1c2VyIGhhcyBh
cHBsaWVkLgorICAgICAgICAvLyBUaGlzIGhlbHBzIHVzIGdldCB0aGUgY29sb3Igb2YgY29udGVu
dCBwYXN0ZWQgaW50byBibG9ja3F1b3RlcyByaWdodC4KKyAgICAgICAgbV93cmFwcGluZ1N0eWxl
LT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlv
bkluT3JCZWZvcmVOb2RlKGVsZW1lbnQpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0VkaXRp
bmdCb3VuZGFyeSkpOworCisgICAgICAgIC8vIENhbGwgY29sbGFwc2VUZXh0RGVjb3JhdGlvblBy
b3BlcnRpZXMgZmlyc3Qgb3Igb3RoZXJ3aXNlIGl0J2xsIGNvcHkgdGhlIHZhbHVlIG92ZXIgZnJv
bSBpbi1lZmZlY3QgdG8gdGV4dC1kZWNvcmF0aW9ucy4KKyAgICAgICAgbV93cmFwcGluZ1N0eWxl
LT5jb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcygpOworICAgICAgICAvLyBKdXN0IHJl
bW92aW5nIGNvbmZsaWN0aW5nIHN0eWxlIGlzbid0IGVub3VnaCBiZWNhdXNlIHJ1bGVzIHN1Y2gg
YXMgY29sb3I6IGJ1dHRvbnRleHQgd29uJ3QgYmUgcmVtb3ZlZAorICAgICAgICBtX3dyYXBwaW5n
U3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoZWxlbWVudCk7Cisg
ICAgICAgIG1fd3JhcHBpbmdTdHlsZS0+cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9m
Tm9kZShlbGVtZW50KTsKKworICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZTsKKyAg
ICAgICAgaWYgKGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpICYmIHN0YXRpY19jYXN0PFN0eWxl
ZEVsZW1lbnQqPihlbGVtZW50KS0+aW5saW5lU3R5bGVEZWNsKCkpIHsKKyAgICAgICAgICAgIHN0
eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVs
ZW1lbnQpLT5pbmxpbmVTdHlsZURlY2woKSk7CisgICAgICAgICAgICBib29sIGFyZU92ZXJyaWRl
c09uQ29uZmxpY3QgPSBmYWxzZTsKKyAgICAgICAgICAgIHN0eWxlLT5zdHlsZSgpLT5tZXJnZSht
X3dyYXBwaW5nU3R5bGUtPnN0eWxlKCksIGFyZU92ZXJyaWRlc09uQ29uZmxpY3QpOworICAgICAg
ICB9IGVsc2UKKyAgICAgICAgICAgIHN0eWxlID0gbV93cmFwcGluZ1N0eWxlOworCisgICAgICAg
IGlmICghc3R5bGUtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChjb25zdCBTdHJpbmcsIHN0eWxlUHJlZml4LCAoIiBzdHlsZT1cIiIpKTsKKyAgICAgICAgICAg
IGFwcGVuZChvdXQsIHN0eWxlUHJlZml4KTsKKyAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZh
bHVlKG91dCwgc3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSwgZG9jdW1lbnRJc0hUTUwpOworICAg
ICAgICAgICAgb3V0LmFwcGVuZCgnXCInKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGFwcGVu
ZENsb3NlVGFnKG91dCwgZWxlbWVudCk7CkBAIC0yNzgsNiArMzc0LDI2IEBACiAKIE5vZGUqIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5v
ZGUqIHBhc3RFbmQpCiB7CisgICAgaWYgKCFtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpIHsK
KyAgICAgICAgTm9kZSogbGFzdENsb3NlZCA9IHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9u
KHN0YXJ0Tm9kZSwgcGFzdEVuZCwgZmFsc2UpOworICAgICAgICBtX2hpZ2hlc3ROb2RlVG9CZVNl
cmlhbGl6ZWQgPSBsYXN0Q2xvc2VkOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBwYXJlbnRPZkhp
Z2hlc3ROb2RlID0gbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID8gbV9oaWdoZXN0Tm9kZVRv
QmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgOiAwOworICAgIGlmIChwYXJlbnRPZkhpZ2hlc3RO
b2RlKSB7CisgICAgICAgIG1fd3JhcHBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBh
cmVudE9mSGlnaGVzdE5vZGUsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0luaGVyaXRhYmxlUHJvcGVy
dGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAgICAvLyBTdHlsZXMgdGhh
dCBNYWlsIGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcGxhY2VkIG9uIHRo
ZSBNYWlsIGJsb2NrcXVvdGUsCisgICAgICAgIC8vIHRvIGhlbHAgdXMgZGlmZmVyZW50aWF0ZSB0
aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxpZWQuCisgICAgICAg
IC8vIFRoaXMgaGVscHMgdXMgZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJs
b2NrcXVvdGVzIHJpZ2h0LgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPnJlbW92ZVN0eWxlQWRk
ZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShmaXJzdFBvc2l0aW9uSW5Ob2RlKHBhcmVudE9m
SGlnaGVzdE5vZGUpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkp
OworICAgIH0KKworICAgIHJldHVybiB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihzdGFy
dE5vZGUsIHBhc3RFbmQsIHRydWUpOworfQorCitOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oTm9kZSogc3RhcnROb2RlLCBOb2RlKiBw
YXN0RW5kLCBib29sIHNob3VsZEVtaXQpCit7CiAgICAgVmVjdG9yPE5vZGUqPiBhbmNlc3RvcnNU
b0Nsb3NlOwogICAgIE5vZGUqIG5leHQ7CiAgICAgTm9kZSogbGFzdENsb3NlZCA9IDA7CkBAIC0z
MDQsMTEgKzQyMCwxMyBAQAogICAgICAgICAgICAgICAgIG5leHQgPSBwYXN0RW5kOwogICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQWRkIHRoZSBub2RlIHRvIHRoZSBtYXJrdXAgaWYg
d2UncmUgbm90IHNraXBwaW5nIHRoZSBkZXNjZW5kYW50cwotICAgICAgICAgICAgYXBwZW5kU3Rh
cnRUYWcobik7CisgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAgICAgICBh
cHBlbmRTdGFydFRhZyhuKTsKIAogICAgICAgICAgICAgLy8gSWYgbm9kZSBoYXMgbm8gY2hpbGRy
ZW4sIGNsb3NlIHRoZSB0YWcgbm93LgogICAgICAgICAgICAgaWYgKCFuLT5jaGlsZE5vZGVDb3Vu
dCgpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kRW5kVGFnKG4pOworICAgICAgICAgICAgICAg
IGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWcobik7CiAg
ICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9IG47CiAgICAgICAgICAgICB9IGVsc2UgewogICAg
ICAgICAgICAgICAgIG9wZW5lZFRhZyA9IHRydWU7CkBAIC0zMjUsNyArNDQzLDggQEAKICAgICAg
ICAgICAgICAgICBpZiAobmV4dCAhPSBwYXN0RW5kICYmIG5leHQtPmlzRGVzY2VuZGFudE9mKGFu
Y2VzdG9yKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgLy8g
Tm90IGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLCBjbG9zZSBhbmNlc3RvcnMgdXAgdG8gc2libGlu
ZyBvZiBuZXh0IG5vZGUuCi0gICAgICAgICAgICAgICAgYXBwZW5kRW5kVGFnKGFuY2VzdG9yKTsK
KyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kRW5kVGFnKGFuY2VzdG9yKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0gYW5jZXN0
b3I7CiAgICAgICAgICAgICAgICAgYW5jZXN0b3JzVG9DbG9zZS5yZW1vdmVMYXN0KCk7CiAgICAg
ICAgICAgICB9CkBAIC0zNDAsNyArNDU5LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAvLyBvciBiKSBhbmNlc3RvcnMgdGhhdCB3ZSBu
ZXZlciBlbmNvdW50ZXJlZCBkdXJpbmcgYSBwcmUtb3JkZXIgdHJhdmVyc2FsIHN0YXJ0aW5nIGF0
IHN0YXJ0Tm9kZToKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNEZXNj
ZW5kYW50T2YocGFyZW50KSk7Ci0gICAgICAgICAgICAgICAgICAgIHdyYXBXaXRoTm9kZShwYXJl
bnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAgICAg
ICAgICAgICAgIHdyYXBXaXRoTm9kZShwYXJlbnQpOwogICAgICAgICAgICAgICAgICAgICBsYXN0
Q2xvc2VkID0gcGFyZW50OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTUx
Myw3ICs2MzMsMTMgQEAKIAogICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKIAotICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yIGFjY3VtdWxhdG9y
KG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgc2hvdWxkQW5ub3RhdGUsIHVwZGF0ZWRSYW5nZS5n
ZXQoKSk7CisgICAgTm9kZSogYm9keSA9IGVuY2xvc2luZ05vZGVXaXRoVGFnKGZpcnN0UG9zaXRp
b25Jbk5vZGUoY29tbW9uQW5jZXN0b3IpLCBib2R5VGFnKTsKKyAgICBOb2RlKiBmdWxseVNlbGVj
dGVkUm9vdCA9IDA7CisgICAgLy8gRklYTUU6IERvIHRoaXMgZm9yIGFsbCBmdWxseSBzZWxlY3Rl
ZCBibG9ja3MsIG5vdCBqdXN0IHRoZSBib2R5LgorICAgIGlmIChib2R5ICYmIGFyZVJhbmdlc0Vx
dWFsKFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShib2R5KS50
b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCByYW5nZSkpCisgICAgICAgIGZ1bGx5U2VsZWN0ZWRS
b290ID0gYm9keTsKKyAgICBOb2RlKiBzcGVjaWFsQ29tbW9uQW5jZXN0b3IgPSBoaWdoZXN0QW5j
ZXN0b3JUb1dyYXBNYXJrdXAodXBkYXRlZFJhbmdlLmdldCgpLCBmdWxseVNlbGVjdGVkUm9vdCwg
c2hvdWxkQW5ub3RhdGUpOworICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yIGFjY3VtdWxhdG9y
KG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgc2hvdWxkQW5ub3RhdGUsIHVwZGF0ZWRSYW5nZS5n
ZXQoKSwgc3BlY2lhbENvbW1vbkFuY2VzdG9yKTsKICAgICBOb2RlKiBwYXN0RW5kID0gdXBkYXRl
ZFJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKIAogICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IHVwZGF0ZWRS
YW5nZS0+Zmlyc3ROb2RlKCk7CkBAIC01MzksMTQgKzY2NSw2IEBACiAgICAgICAgIEFTU0VSVCgh
ZWMpOwogICAgIH0KIAotICAgIE5vZGUqIGJvZHkgPSBlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJz
dFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2VzdG9yKSwgYm9keVRhZyk7Ci0gICAgTm9kZSogZnVs
bHlTZWxlY3RlZFJvb3QgPSAwOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIGZvciBhbGwgZnVsbHkg
c2VsZWN0ZWQgYmxvY2tzLCBub3QganVzdCB0aGUgYm9keS4KLSAgICBpZiAoYm9keSAmJiBhcmVS
YW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUo
Ym9keSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgcmFuZ2UpKQotICAgICAgICBmdWxseVNl
bGVjdGVkUm9vdCA9IGJvZHk7Ci0KLSAgICBOb2RlKiBzcGVjaWFsQ29tbW9uQW5jZXN0b3IgPSBo
aWdoZXN0QW5jZXN0b3JUb1dyYXBNYXJrdXAodXBkYXRlZFJhbmdlLmdldCgpLCBmdWxseVNlbGVj
dGVkUm9vdCwgc2hvdWxkQW5ub3RhdGUpOwotCiAgICAgTm9kZSogbGFzdENsb3NlZCA9IGFjY3Vt
dWxhdG9yLnNlcmlhbGl6ZU5vZGVzKHN0YXJ0Tm9kZSwgcGFzdEVuZCk7CiAKICAgICBpZiAoc3Bl
Y2lhbENvbW1vbkFuY2VzdG9yICYmIGxhc3RDbG9zZWQpIHsKQEAgLTU4NiwyMCArNzA0LDYgQEAK
ICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIEFkZCBhIHdyYXBwZXIgc3BhbiB3aXRoIHRoZSBz
dHlsZXMgdGhhdCBhbGwgb2YgdGhlIG5vZGVzIGluIHRoZSBtYXJrdXAgaW5oZXJpdC4KLSAgICBD
b250YWluZXJOb2RlKiBwYXJlbnRPZkxhc3RDbG9zZWQgPSBsYXN0Q2xvc2VkID8gbGFzdENsb3Nl
ZC0+cGFyZW50Tm9kZSgpIDogMDsKLSAgICBpZiAocGFyZW50T2ZMYXN0Q2xvc2VkICYmIHBhcmVu
dE9mTGFzdENsb3NlZC0+cmVuZGVyZXIoKSkgewotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxl
PiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBhcmVudE9mTGFzdENsb3NlZCwgRWRpdGlu
Z1N0eWxlOjpFZGl0aW5nSW5oZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dyb3VuZENvbG9ySW5F
ZmZlY3QpOwotCi0gICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJp
YnV0ZSBzaG91bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwgdG8gaGVs
cAotICAgICAgICAvLyB1cyBkaWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBmcm9tIG9uZXMgdGhh
dCB0aGUgdXNlciBoYXMgYXBwbGllZC4gIFRoaXMgaGVscHMgdXMKLSAgICAgICAgLy8gZ2V0IHRo
ZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJpZ2h0LgotICAgICAg
ICBzdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdOb2RlT2ZUeXBlKGZpcnN0
UG9zaXRpb25Jbk5vZGUocGFyZW50T2ZMYXN0Q2xvc2VkKSwgaXNNYWlsQmxvY2txdW90ZSwgQ2Fu
Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKLQotICAgICAgICBpZiAoIXN0eWxlLT5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICBhY2N1bXVsYXRvci53cmFwV2l0aFN0eWxlTm9kZShzdHlsZS0+c3R5bGUo
KSwgZG9jdW1lbnQpOwotICAgIH0KLQogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJjaGFuZ2UgbmV3
bGluZSBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBibG9jayB0aGF0IGl0J3MgaW4sIG5vdCBhZnRl
ciBhbGwgb2YgdGhlIGNvbnRlbnQsIHVuY29uZGl0aW9uYWxseS4KICAgICBpZiAoc2hvdWxkQW5u
b3RhdGUgPT0gQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSAmJiBuZWVkSW50ZXJjaGFuZ2VOZXdsaW5l
QWZ0ZXIodmlzaWJsZUVuZC5wcmV2aW91cygpKSkKICAgICAgICAgYWNjdW11bGF0b3IuYXBwZW5k
U3RyaW5nKGludGVyY2hhbmdlTmV3bGluZVN0cmluZyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nU3R5bGUuY3BwCShyZXZpc2lvbiA4Nzk4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtODYsNyArODYsNyBA
QAogICAgIHJldHVybiBjb3B5RWRpdGluZ1Byb3BlcnRpZXMoc3R5bGUuZ2V0KCkpOwogfQogCi1z
dGF0aWMgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBnZXRQcm9wZXJ0aWVzTm90
SW4oQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywgQ1NT
U3R5bGVEZWNsYXJhdGlvbiogYmFzZVN0eWxlKTsKK3N0YXRpYyBSZWZQdHI8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24+IGdldFByb3BlcnRpZXNOb3RJbihEb2N1bWVudCosIENTU1N0eWxlRGVj
bGFyYXRpb24qIHN0eWxlV2l0aFJlZHVuZGFudFByb3BlcnRpZXMsIENTU1N0eWxlRGVjbGFyYXRp
b24qIGJhc2VTdHlsZSk7CiAKIGNsYXNzIEhUTUxFbGVtZW50RXF1aXZhbGVudCB7CiBwdWJsaWM6
CkBAIC0zMDgsMjggKzMwOCwzMSBAQAogewogfQogCi1zdGF0aWMgUkdCQTMyIGNzc1ZhbHVlVG9S
R0JBKENTU1ZhbHVlKiBjb2xvclZhbHVlKQorc3RhdGljIFJHQkEzMiBjc3NWYWx1ZVRvUkdCQShE
b2N1bWVudCogZG9jdW1lbnQsIENTU1ZhbHVlKiBjb2xvclZhbHVlKQogewogICAgIGlmICghY29s
b3JWYWx1ZSB8fCAhY29sb3JWYWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpKQogICAgICAgICByZXR1
cm4gQ29sb3I6OnRyYW5zcGFyZW50OwotICAgIAorCiAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHBy
aW1pdGl2ZUNvbG9yID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihjb2xvclZhbHVl
KTsKICAgICBpZiAocHJpbWl0aXZlQ29sb3ItPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1JHQkNPTE9SKQogICAgICAgICByZXR1cm4gcHJpbWl0aXZlQ29sb3ItPmdl
dFJHQkEzMlZhbHVlKCk7Ci0gICAgCisKKyAgICBpZiAoZG9jdW1lbnQgJiYgcHJpbWl0aXZlQ29s
b3ItPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0lERU5UICYmIHBy
aW1pdGl2ZUNvbG9yLT5nZXRJZGVudCgpID09IENTU1ZhbHVlV2Via2l0TGluaykKKyAgICAgICAg
cmV0dXJuIGRvY3VtZW50LT5saW5rQ29sb3IoKS5yZ2IoKTsKKwogICAgIFJHQkEzMiByZ2JhID0g
MDsKICAgICBDU1NQYXJzZXI6OnBhcnNlQ29sb3IocmdiYSwgY29sb3JWYWx1ZS0+Y3NzVGV4dCgp
KTsKICAgICByZXR1cm4gcmdiYTsKIH0KIAotc3RhdGljIGlubGluZSBSR0JBMzIgZ2V0UkdCQUZv
bnRDb2xvcihDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKK3N0YXRpYyBpbmxpbmUgUkdCQTMy
IGdldFJHQkFGb250Q29sb3IoRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NTdHlsZURlY2xhcmF0aW9u
KiBzdHlsZSkKIHsKLSAgICByZXR1cm4gY3NzVmFsdWVUb1JHQkEoc3R5bGUtPmdldFByb3BlcnR5
Q1NTVmFsdWUoQ1NTUHJvcGVydHlDb2xvcikuZ2V0KCkpOworICAgIHJldHVybiBjc3NWYWx1ZVRv
UkdCQShkb2N1bWVudCwgc3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlDb2xv
cikuZ2V0KCkpOwogfQogCi1zdGF0aWMgaW5saW5lIFJHQkEzMiByZ2JhQmFja2dyb3VuZENvbG9y
SW5FZmZlY3QoTm9kZSogbm9kZSkKK3N0YXRpYyBpbmxpbmUgUkdCQTMyIHJnYmFCYWNrZ3JvdW5k
Q29sb3JJbkVmZmVjdChEb2N1bWVudCogZG9jdW1lbnQsIE5vZGUqIG5vZGUpCiB7Ci0gICAgcmV0
dXJuIGNzc1ZhbHVlVG9SR0JBKGJhY2tncm91bmRDb2xvckluRWZmZWN0KG5vZGUpLmdldCgpKTsK
KyAgICByZXR1cm4gY3NzVmFsdWVUb1JHQkEoZG9jdW1lbnQsIGJhY2tncm91bmRDb2xvckluRWZm
ZWN0KG5vZGUpLmdldCgpKTsKIH0KIAogdm9pZCBFZGl0aW5nU3R5bGU6OmluaXQoTm9kZSogbm9k
ZSwgUHJvcGVydGllc1RvSW5jbHVkZSBwcm9wZXJ0aWVzVG9JbmNsdWRlKQpAQCAtNTU0LDcgKzU1
NywxMCBAQAogICAgIGlmICghdGV4dERlY29yYXRpb25zSW5FZmZlY3QpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNv
cmF0aW9uLCB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdC0+Y3NzVGV4dCgpLCBtX211dGFibGVTdHls
ZS0+Z2V0UHJvcGVydHlQcmlvcml0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSk7CisgICAg
aWYgKHRleHREZWNvcmF0aW9uc0luRWZmZWN0LT5pc1ZhbHVlTGlzdCgpKQorICAgICAgICBtX211
dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgdGV4dERl
Y29yYXRpb25zSW5FZmZlY3QtPmNzc1RleHQoKSwgbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5
UHJpb3JpdHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikpOworICAgIGVsc2UKKyAgICAgICAg
bV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24p
OwogICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVdlYmtpdFRl
eHREZWNvcmF0aW9uc0luRWZmZWN0KTsKIH0KIApAQCAtNTcwLDcgKzU3Niw4IEBACiBUcmlTdGF0
ZSBFZGl0aW5nU3R5bGU6OnRyaVN0YXRlT2ZTdHlsZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHls
ZVRvQ29tcGFyZSwgU2hvdWxkSWdub3JlVGV4dE9ubHlQcm9wZXJ0aWVzIHNob3VsZElnbm9yZVRl
eHRPbmx5UHJvcGVydGllcykgY29uc3QKIHsKICAgICAvLyBGSVhNRTogdGFrZSBjYXJlIG9mIGJh
Y2tncm91bmQtY29sb3IgaW4gZWZmZWN0Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBkaWZmZXJlbmNlID0gZ2V0UHJvcGVydGllc05vdEluKG1fbXV0YWJsZVN0eWxlLmdl
dCgpLCBzdHlsZVRvQ29tcGFyZSk7CisgICAgLy8gRklYTUU6IGdldFByb3BlcnRpZXNOb3RJbiBu
ZWVkcyBkb2N1bWVudAorICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGlm
ZmVyZW5jZSA9IGdldFByb3BlcnRpZXNOb3RJbigwLCBtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5
bGVUb0NvbXBhcmUpOwogCiAgICAgaWYgKHNob3VsZElnbm9yZVRleHRPbmx5UHJvcGVydGllcyA9
PSBJZ25vcmVUZXh0T25seVByb3BlcnRpZXMpCiAgICAgICAgIGRpZmZlcmVuY2UtPnJlbW92ZVBy
b3BlcnRpZXNJblNldCh0ZXh0T25seVByb3BlcnRpZXMsIFdURl9BUlJBWV9MRU5HVEgodGV4dE9u
bHlQcm9wZXJ0aWVzKSk7CkBAIC03MjcsNyArNzM0LDggQEAKIAogYm9vbCBFZGl0aW5nU3R5bGU6
OnN0eWxlSXNQcmVzZW50SW5Db21wdXRlZFN0eWxlT2ZOb2RlKE5vZGUqIG5vZGUpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICFtX211dGFibGVTdHlsZSB8fCAhZ2V0UHJvcGVydGllc05vdEluKG1fbXV0
YWJsZVN0eWxlLmdldCgpLCBjb21wdXRlZFN0eWxlKG5vZGUpLmdldCgpKS0+bGVuZ3RoKCk7Cisg
ICAgQVNTRVJUKG5vZGUpOworICAgIHJldHVybiAhbV9tdXRhYmxlU3R5bGUgfHwgIWdldFByb3Bl
cnRpZXNOb3RJbihub2RlLT5kb2N1bWVudCgpLCBtX211dGFibGVTdHlsZS5nZXQoKSwgY29tcHV0
ZWRTdHlsZShub2RlKS5nZXQoKSktPmxlbmd0aCgpOwogfQogCiB2b2lkIEVkaXRpbmdTdHlsZTo6
cHJlcGFyZVRvQXBwbHlBdChjb25zdCBQb3NpdGlvbiYgcG9zaXRpb24sIFNob3VsZFByZXNlcnZl
V3JpdGluZ0RpcmVjdGlvbiBzaG91bGRQcmVzZXJ2ZVdyaXRpbmdEaXJlY3Rpb24pCkBAIC03NDcs
MTIgKzc1NSwxNCBAQAogICAgICAgICBkaXJlY3Rpb24gPSBtX211dGFibGVTdHlsZS0+Z2V0UHJv
cGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpcmVjdGlvbik7CiAgICAgfQogCisgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gcG9zaXRpb24uYW5jaG9yTm9kZSgpID8gcG9zaXRpb24uYW5jaG9yTm9k
ZSgpLT5kb2N1bWVudCgpIDogMDsKKwogICAgIHN0eWxlLT5tX211dGFibGVTdHlsZS0+ZGlmZiht
X211dGFibGVTdHlsZS5nZXQoKSk7Ci0gICAgaWYgKGdldFJHQkFGb250Q29sb3IobV9tdXRhYmxl
U3R5bGUuZ2V0KCkpID09IGdldFJHQkFGb250Q29sb3Ioc3R5bGUtPm1fbXV0YWJsZVN0eWxlLmdl
dCgpKSkKKyAgICBpZiAoZ2V0UkdCQUZvbnRDb2xvcihkb2N1bWVudCwgbV9tdXRhYmxlU3R5bGUu
Z2V0KCkpID09IGdldFJHQkFGb250Q29sb3IoZG9jdW1lbnQsIHN0eWxlLT5tX211dGFibGVTdHls
ZS5nZXQoKSkpCiAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUNvbG9yKTsKIAogICAgIGlmIChoYXNUcmFuc3BhcmVudEJhY2tncm91bmRDb2xvcihtX211
dGFibGVTdHlsZS5nZXQoKSkKLSAgICAgICAgfHwgY3NzVmFsdWVUb1JHQkEobV9tdXRhYmxlU3R5
bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlCYWNrZ3JvdW5kQ29sb3IpLmdldCgp
KSA9PSByZ2JhQmFja2dyb3VuZENvbG9ySW5FZmZlY3QocG9zaXRpb24uY29udGFpbmVyTm9kZSgp
KSkKKyAgICAgICAgfHwgY3NzVmFsdWVUb1JHQkEoZG9jdW1lbnQsIG1fbXV0YWJsZVN0eWxlLT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKS5nZXQoKSkgPT0g
cmdiYUJhY2tncm91bmRDb2xvckluRWZmZWN0KGRvY3VtZW50LCBwb3NpdGlvbi5jb250YWluZXJO
b2RlKCkpKQogICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVy
dHlCYWNrZ3JvdW5kQ29sb3IpOwogCiAgICAgaWYgKHVuaWNvZGVCaWRpICYmIHVuaWNvZGVCaWRp
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKQEAgLTgxOCwxMSArODI4LDEwIEBACiAgICAgfQogfQog
Ci1zdGF0aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9t
TWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIFBhc3NSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVs
ZW1lbnQoRWxlbWVudCogZWxlbWVudCwgdW5zaWduZWQgZmlsdGVyKQogewogICAgIFJlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJh
dGlvbjo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBl
bGVtZW50LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlUnVsZXNGb3JFbGVtZW50
KGVsZW1lbnQsCi0gICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OkF1dGhvckNTU1J1bGVzIHwgQ1NT
U3R5bGVTZWxlY3Rvcjo6Q3Jvc3NPcmlnaW5DU1NSdWxlcyk7CisgICAgUmVmUHRyPENTU1J1bGVM
aXN0PiBtYXRjaGVkUnVsZXMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCkt
PnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIGZpbHRlcik7CiAgICAgaWYgKG1hdGNoZWRS
dWxlcykgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbWF0Y2hlZFJ1bGVzLT5s
ZW5ndGgoKTsgaSsrKSB7CiAgICAgICAgICAgICBpZiAobWF0Y2hlZFJ1bGVzLT5pdGVtKGkpLT50
eXBlKCkgPT0gQ1NTUnVsZTo6U1RZTEVfUlVMRSkgewpAQCAtODM3LDcgKzg0Niw4IEBACiAKIHZv
aWQgRWRpdGluZ1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzKFN0eWxlZEVsZW1lbnQqIGVsZW1l
bnQpCiB7Ci0gICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUZyb21N
YXRjaGVkUnVsZXMgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQpOwor
ICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1
bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LAorICAgICAgICBD
U1NTdHlsZVNlbGVjdG9yOjpBdXRob3JDU1NSdWxlcyB8IENTU1N0eWxlU2VsZWN0b3I6OkNyb3Nz
T3JpZ2luQ1NTUnVsZXMpOwogICAgIC8vIFN0eWxlcyBmcm9tIHRoZSBpbmxpbmUgc3R5bGUgZGVj
bGFyYXRpb24sIGhlbGQgaW4gdGhlIHZhcmlhYmxlICJzdHlsZSIsIHRha2UgcHJlY2VkZW5jZSAK
ICAgICAvLyBvdmVyIHRob3NlIGZyb20gbWF0Y2hlZCBydWxlcy4KICAgICBpZiAobV9tdXRhYmxl
U3R5bGUpCkBAIC04NzAsMTYgKzg4MCw0OCBAQAogICAgIG1fbXV0YWJsZVN0eWxlLT5tZXJnZShm
cm9tQ29tcHV0ZWRTdHlsZS5nZXQoKSk7CiB9CiAKK3ZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVQ
cm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKEVsZW1lbnQqIGVsZW1lbnQpCit7CisgICAg
aWYgKCFtX211dGFibGVTdHlsZSB8fCAhbV9tdXRhYmxlU3R5bGUtPmxlbmd0aCgpKQorICAgICAg
ICByZXR1cm47CisKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRlZmF1
bHRTdHlsZSA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5
bGVTZWxlY3Rvcjo6VUFBbmRVc2VyQ1NTUnVsZXMpOworCisgICAgVmVjdG9yPGludD4gcHJvcGVy
dGllc1RvUmVtb3ZlKGRlZmF1bHRTdHlsZS0+bGVuZ3RoKCkpOworICAgIHNpemVfdCBpID0gMDsK
KyAgICBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZGVm
YXVsdFN0eWxlLT5lbmQoKTsKKyAgICBmb3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpj
b25zdF9pdGVyYXRvciBpdCA9IGRlZmF1bHRTdHlsZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0
LCArK2kpCisgICAgICAgIHByb3BlcnRpZXNUb1JlbW92ZVtpXSA9IGl0LT5pZCgpOworCisgICAg
bV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzVG9SZW1vdmUu
ZGF0YSgpLCBwcm9wZXJ0aWVzVG9SZW1vdmUuc2l6ZSgpKTsKK30KKwogdm9pZCBFZGl0aW5nU3R5
bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiB7CisgICAg
QVNTRVJUKGVsZW1lbnQpOwogICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50KTsKLSAg
ICBpZiAoIXN0eWxlRnJvbU1hdGNoZWRSdWxlcykKLSAgICAgICAgcmV0dXJuOworICAgIC8vIDEu
IFJlbW92ZSBzdHlsZSBmcm9tIG1hdGNoZWQgcnVsZXMgYmVjYXVzZSBzdHlsZSByZW1haW4gd2l0
aG91dCByZXBlYXRpbmcgaXQgaW4gaW5saW5lIHN0eWxlIGRlY2xhcmF0aW9uCisgICAgUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUZyb21NYXRjaGVkUnVsZXMgPSBzdHls
ZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIENTU1N0eWxlU2VsZWN0b3I6OkFs
bEJ1dEVtcHR5Q1NTUnVsZXMpOworICAgIGlmIChzdHlsZUZyb21NYXRjaGVkUnVsZXMgJiYgc3R5
bGVGcm9tTWF0Y2hlZFJ1bGVzLT5sZW5ndGgoKSkKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBn
ZXRQcm9wZXJ0aWVzTm90SW4oZWxlbWVudC0+ZG9jdW1lbnQoKSwgbV9tdXRhYmxlU3R5bGUuZ2V0
KCksIHN0eWxlRnJvbU1hdGNoZWRSdWxlcy5nZXQoKSk7CiAKLSAgICBtX211dGFibGVTdHlsZSA9
IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5bGVGcm9tTWF0Y2hl
ZFJ1bGVzLmdldCgpKTsKKyAgICAvLyAyLiBSZW1vdmUgc3R5bGUgcHJlc2VudCBpbiBwYXJlbnQg
YW5kIG5vdCBvdmVycmlkZW4gYnkgbWF0Y2hlZCBydWxlcy4KKyAgICBSZWZQdHI8RWRpdGluZ1N0
eWxlPiBjb21wdXRlZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoZWxlbWVudC0+cGFyZW50
Tm9kZSgpLCBFZGl0aW5nSW5oZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dyb3VuZENvbG9ySW5F
ZmZlY3QpOworICAgIGlmIChjb21wdXRlZFN0eWxlLT5tX211dGFibGVTdHlsZSkgeworICAgICAg
ICBjb21wdXRlZFN0eWxlLT5yZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKGVs
ZW1lbnQpOworICAgICAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbihlbGVt
ZW50LT5kb2N1bWVudCgpLCBtX211dGFibGVTdHlsZS5nZXQoKSwgY29tcHV0ZWRTdHlsZS0+bV9t
dXRhYmxlU3R5bGUuZ2V0KCkpOworICAgIH0KKyAgICAKKyAgICAvLyAzLiBJZiB0aGlzIGVsZW1l
bnQgaXMgYSBzcGFuIGFuZCBoYXMgZGlzcGxheTogaW5saW5lIG9yIGZsb2F0OiBub25lLCByZW1v
dmUgdGhlbSB1bmxlc3MgdGhleSBhcmUgb3ZlcnJpZGVuIGJ5IHJ1bGVzCisgICAgLy8gVGhlc2Ug
cnVsZXMgYXJlIGFkZGVkIGJ5IHNlcmlhbGl6YXRpb24gY29kZSB0byB3cmFwIHRleHQgbm9kZXMu
CisgICAgaWYgKGlzU3R5bGVTcGFuKGVsZW1lbnQpKSB7CisgICAgICAgIGlmICghc3R5bGVGcm9t
TWF0Y2hlZFJ1bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlzcGxheSkgJiYg
Z2V0SWRlbnRpZmllclZhbHVlKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eURpc3Bs
YXkpID09IENTU1ZhbHVlSW5saW5lKQorICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92
ZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSk7CisgICAgICAgIGlmICghc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RmxvYXQpICYmIGdldElk
ZW50aWZpZXJWYWx1ZShtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlGbG9hdCkgPT0g
Q1NTVmFsdWVOb25lKQorICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5
KENTU1Byb3BlcnR5RmxvYXQpOworICAgIH0KIH0KIAogc3RhdGljIHZvaWQgcmVjb25jaWxlVGV4
dERlY29yYXRpb25Qcm9wZXJ0aWVzKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkK
QEAgLTkxMyw3ICs5NTUsNyBAQAogCiAgICAgUmVmUHRyPENTU0NvbXB1dGVkU3R5bGVEZWNsYXJh
dGlvbj4gY29tcHV0ZWRTdHlsZSA9IHBvc2l0aW9uLmNvbXB1dGVkU3R5bGUoKTsKICAgICAvLyBG
SVhNRTogdGFrZSBjYXJlIG9mIGJhY2tncm91bmQtY29sb3IgaW4gZWZmZWN0Ci0gICAgUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBtdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVz
Tm90SW4oc3R5bGUtPnN0eWxlKCksIGNvbXB1dGVkU3R5bGUuZ2V0KCkpOworICAgIFJlZlB0cjxD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVydGllc05v
dEluKGRvY3VtZW50LCBzdHlsZS0+c3R5bGUoKSwgY29tcHV0ZWRTdHlsZS5nZXQoKSk7CiAKICAg
ICByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMobXV0YWJsZVN0eWxlLmdldCgpKTsK
ICAgICBpZiAoIWRvY3VtZW50LT5mcmFtZSgpLT5lZGl0b3IoKS0+c2hvdWxkU3R5bGVXaXRoQ1NT
KCkpCkBAIC05ODgsNyArMTAzMCw3IEBACiAgICAgfQogCiAgICAgaWYgKHN0eWxlLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Q29sb3IpKSB7Ci0gICAgICAgIG1fYXBwbHlGb250Q29s
b3IgPSBDb2xvcihnZXRSR0JBRm9udENvbG9yKHN0eWxlKSkuc2VyaWFsaXplZCgpOworICAgICAg
ICBtX2FwcGx5Rm9udENvbG9yID0gQ29sb3IoZ2V0UkdCQUZvbnRDb2xvcihkb2N1bWVudCwgc3R5
bGUpKS5zZXJpYWxpemVkKCk7CiAgICAgICAgIHN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUNvbG9yKTsKICAgICB9CiAKQEAgLTEwMzMsNiArMTA3NSw3IEBACiAKICAgICAvLyBCZWNh
dXNlIGIgdGFnIGNhbiBvbmx5IGJvbGQgdGV4dCwgdGhlcmUgYXJlIG9ubHkgdHdvIHN0YXRlcyBp
biBwbGFpbiBodG1sOiBib2xkIGFuZCBub3QgYm9sZC4KICAgICAvLyBDb2xsYXBzZSBhbGwgb3Ro
ZXIgdmFsdWVzIHRvIGVpdGhlciBvbmUgb2YgdGhlc2UgdHdvIHN0YXRlcyBmb3IgZWRpdGluZyBw
dXJwb3Nlcy4KKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkbid0IHRyZWF0IGJvbGRlciBhbmQgbGln
aHRlciBsaWtlIG5vcm1hbCBhbmQgYm9sZC4KICAgICBzd2l0Y2ggKHN0YXRpY19jYXN0PENTU1By
aW1pdGl2ZVZhbHVlKj4oZm9udFdlaWdodC5nZXQoKSktPmdldElkZW50KCkpIHsKICAgICAgICAg
Y2FzZSBDU1NWYWx1ZTEwMDoKICAgICAgICAgY2FzZSBDU1NWYWx1ZTIwMDoKQEAgLTEwNDAsOCAr
MTA4MywxMCBAQAogICAgICAgICBjYXNlIENTU1ZhbHVlNDAwOgogICAgICAgICBjYXNlIENTU1Zh
bHVlNTAwOgogICAgICAgICBjYXNlIENTU1ZhbHVlTm9ybWFsOgorICAgICAgICBjYXNlIENTU1Zh
bHVlTGlnaHRlcjoKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgY2FzZSBDU1NW
YWx1ZUJvbGQ6CisgICAgICAgIGNhc2UgQ1NTVmFsdWVCb2xkZXI6CiAgICAgICAgIGNhc2UgQ1NT
VmFsdWU2MDA6CiAgICAgICAgIGNhc2UgQ1NTVmFsdWU3MDA6CiAgICAgICAgIGNhc2UgQ1NTVmFs
dWU4MDA6CkBAIC0xMDQ5LDcgKzEwOTQsNiBAQAogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAg
ICAgfQogCi0gICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7IC8vIEZvciBDU1NWYWx1ZUJvbGRlciBh
bmQgQ1NTVmFsdWVMaWdodGVyCiAgICAgcmV0dXJuIGZhbHNlOyAvLyBNYWtlIGNvbXBpbGVyIGhh
cHB5CiB9CiAKQEAgLTEwNzIsNyArMTExNiw3IEBACiAgICAgcmV0dXJuIENTU1ZhbHVlSW52YWxp
ZDsKIH0KIAotUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBnZXRQcm9wZXJ0aWVz
Tm90SW4oQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGVXaXRoUmVkdW5kYW50UHJvcGVydGllcywg
Q1NTU3R5bGVEZWNsYXJhdGlvbiogYmFzZVN0eWxlKQorUmVmUHRyPENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uPiBnZXRQcm9wZXJ0aWVzTm90SW4oRG9jdW1lbnQqIGRvY3VtZW50LCBDU1NTdHls
ZURlY2xhcmF0aW9uKiBzdHlsZVdpdGhSZWR1bmRhbnRQcm9wZXJ0aWVzLCBDU1NTdHlsZURlY2xh
cmF0aW9uKiBiYXNlU3R5bGUpCiB7CiAgICAgQVNTRVJUKHN0eWxlV2l0aFJlZHVuZGFudFByb3Bl
cnRpZXMpOwogICAgIEFTU0VSVChiYXNlU3R5bGUpOwpAQCAtMTA4NCwxMyArMTEyOCwxMyBAQAog
ICAgIGRpZmZUZXh0RGVjb3JhdGlvbnMocmVzdWx0LmdldCgpLCBDU1NQcm9wZXJ0eVRleHREZWNv
cmF0aW9uLCBiYXNlVGV4dERlY29yYXRpb25zSW5FZmZlY3QuZ2V0KCkpOwogICAgIGRpZmZUZXh0
RGVjb3JhdGlvbnMocmVzdWx0LmdldCgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9u
c0luRWZmZWN0LCBiYXNlVGV4dERlY29yYXRpb25zSW5FZmZlY3QuZ2V0KCkpOwogCi0gICAgaWYg
KGZvbnRXZWlnaHRJc0JvbGQocmVzdWx0LmdldCgpKSA9PSBmb250V2VpZ2h0SXNCb2xkKGJhc2VT
dHlsZSkpCisgICAgaWYgKGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eUZvbnRTaXplKSAmJiBmb250V2VpZ2h0SXNCb2xkKHJlc3VsdC5nZXQoKSkgPT0gZm9udFdlaWdo
dElzQm9sZChiYXNlU3R5bGUpKQogICAgICAgICByZXN1bHQtPnJlbW92ZVByb3BlcnR5KENTU1By
b3BlcnR5Rm9udFdlaWdodCk7CiAKLSAgICBpZiAoZ2V0UkdCQUZvbnRDb2xvcihyZXN1bHQuZ2V0
KCkpID09IGdldFJHQkFGb250Q29sb3IoYmFzZVN0eWxlKSkKKyAgICBpZiAoYmFzZVN0eWxlLT5n
ZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5QmFja2dyb3VuZENvbG9yKSAmJiBnZXRSR0JB
Rm9udENvbG9yKGRvY3VtZW50LCByZXN1bHQuZ2V0KCkpID09IGdldFJHQkFGb250Q29sb3IoZG9j
dW1lbnQsIGJhc2VTdHlsZSkpCiAgICAgICAgIHJlc3VsdC0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJv
cGVydHlDb2xvcik7CiAKLSAgICBpZiAoZ2V0VGV4dEFsaWdubWVudChyZXN1bHQuZ2V0KCkpID09
IGdldFRleHRBbGlnbm1lbnQoYmFzZVN0eWxlKSkKKyAgICBpZiAoYmFzZVN0eWxlLT5nZXRQcm9w
ZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VGV4dEFsaWduKSAmJiBnZXRUZXh0QWxpZ25tZW50KHJl
c3VsdC5nZXQoKSkgPT0gZ2V0VGV4dEFsaWdubWVudChiYXNlU3R5bGUpKQogICAgICAgICByZXN1
bHQtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduKTsKIAogICAgIHJldHVybiBy
ZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkocmV2aXNp
b24gODc5ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNjA4LDExICs2MDgsMTEgQEAKICAgICByZXR1cm4gMDsKIH0KIAotTm9k
ZSogaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUoY29uc3QgUG9zaXRpb24mIHAsIGJvb2wgKCpu
b2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUqKSwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1
bGUpCitOb2RlKiBoaWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlvbiYgcCwg
Ym9vbCAoKm5vZGVJc09mVHlwZSkoY29uc3QgTm9kZSopLCBFZGl0aW5nQm91bmRhcnlDcm9zc2lu
Z1J1bGUgcnVsZSwgTm9kZSogc3RheVdpdGhpbikKIHsKICAgICBOb2RlKiBoaWdoZXN0ID0gMDsK
ICAgICBOb2RlKiByb290ID0gcnVsZSA9PSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSA/IGhp
Z2hlc3RFZGl0YWJsZVJvb3QocCkgOiAwOwotICAgIGZvciAoTm9kZSogbiA9IHAuY29udGFpbmVy
Tm9kZSgpOyBuOyBuID0gbi0+cGFyZW50Tm9kZSgpKSB7CisgICAgZm9yIChOb2RlKiBuID0gcC5j
b250YWluZXJOb2RlKCk7IG4gJiYgbiAhPSBzdGF5V2l0aGluOyBuID0gbi0+cGFyZW50Tm9kZSgp
KSB7CiAgICAgICAgIGlmIChyb290ICYmICFuLT5yZW5kZXJlcklzRWRpdGFibGUoKSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBpZiAobm9kZUlzT2ZUeXBlKG4pKQpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAkocmV2
aXNpb24gODc5ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25D
b21tYW5kLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDYgQEAKICAgICAKICAgICB2b2lk
IHJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5JbmxpbmUoKTsKICAgICB2b2lk
IGhhbmRsZVN0eWxlU3BhbnMoKTsKLSAgICB2b2lkIGNvcHlTdHlsZVRvQ2hpbGRyZW4oTm9kZSog
cGFyZW50Tm9kZSwgY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24qIHBhcmVudFN0eWxl
KTsKICAgICB2b2lkIGhhbmRsZVBhc3RlQXNRdW90YXRpb25Ob2RlKCk7CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4oTm9kZSopOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCShyZXZpc2lvbiA4Nzk4NykKKysrIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYg
KzQ3LDcgQEAKIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwogY2xhc3MgQ1NTVmFsdWU7CiBjbGFz
cyBEb2N1bWVudDsKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MRWxlbWVudDsKIGNsYXNzIE5v
ZGU7CiBjbGFzcyBQb3NpdGlvbjsKQEAgLTEyMiw2ICsxMjMsNyBAQAogICAgIHZvaWQgbWVyZ2VJ
bmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50Kik7CiAgICAgdm9pZCBtZXJnZVN0eWxl
RnJvbVJ1bGVzKFN0eWxlZEVsZW1lbnQqKTsKICAgICB2b2lkIG1lcmdlU3R5bGVGcm9tUnVsZXNG
b3JTZXJpYWxpemF0aW9uKFN0eWxlZEVsZW1lbnQqKTsKKyAgICB2b2lkIHJlbW92ZVByb3BlcnRp
ZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoRWxlbWVudCogZWxlbWVudCk7CiAgICAgdm9pZCByZW1v
dmVTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50Kik7CiAKICAgICBmbG9hdCBmb250U2l6ZURl
bHRhKCkgY29uc3QgeyByZXR1cm4gbV9mb250U2l6ZURlbHRhOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5oCShyZXZpc2lvbiA4Nzk4NykKKysrIFNvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkod29ya2luZyBjb3B5KQpAQCAtNTQsNyArNTQsNyBAQAog
CiBOb2RlKiBoaWdoZXN0QW5jZXN0b3IoTm9kZSopOwogTm9kZSogaGlnaGVzdEVkaXRhYmxlUm9v
dChjb25zdCBQb3NpdGlvbiYpOwotTm9kZSogaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUoY29u
c3QgUG9zaXRpb24mLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25zdCBOb2RlKiksIEVkaXRpbmdC
b3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKK05vZGUq
IGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uJiwgYm9vbCAoKm5vZGVJ
c09mVHlwZSkoY29uc3QgTm9kZSopLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5u
b3RDcm9zc0VkaXRpbmdCb3VuZGFyeSwgTm9kZSogc3RheVdpdGhpbiA9IDApOwogTm9kZSogbG93
ZXN0RWRpdGFibGVBbmNlc3RvcihOb2RlKik7ICAgCiAKIE5vZGUqIGVuY2xvc2luZ0Jsb2NrKE5v
ZGUqLCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRpbmdCb3Vu
ZGFyeSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZp
c2lvbiA4Nzk4NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjAyMSw3ICsyMDIxLDcgQEAKICAgICAgICAgfQogICAgIH0KIAot
ICAgIGlmIChtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykgeworICAgIGlmIChtX21hdGNoQXV0
aG9yQW5kVXNlclN0eWxlcyAmJiBydWxlc1RvSW5jbHVkZSAmIEF1dGhvckNTU1J1bGVzKSB7CiAg
ICAgICAgIG1fY2hlY2tlci5tX3NhbWVPcmlnaW5Pbmx5ID0gIShydWxlc1RvSW5jbHVkZSAmIENy
b3NzT3JpZ2luQ1NTUnVsZXMpOwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBydWxlcyBpbiBhdXRo
b3Igc2hlZXRzLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96010</attachid>
            <date>2011-06-03 23:06:27 -0700</date>
            <delta_ts>2011-06-04 00:01:22 -0700</delta_ts>
            <desc>beta version</desc>
            <filename>wip34564g</filename>
            <type>text/plain</type>
            <size>52290</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1u
b25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVu
dC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3OTg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9l
eGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQAogfCAgICAgIkVkaXRhYmw8I3NlbGVj
dGlvbi1hbmNob3I+ZSBwYXJhZ3JhcGggY29udGFpbmluZyBhICIKIHwgICAgIDxzcGFuPgogfCAg
ICAgICBjb250ZW50ZWRpdGFibGU9ImZhbHNlIgotfCAgICAgICBzdHlsZT0iYmFja2dyb3VuZC1j
b2xvcjogTGlnaHRHcmF5OyIKK3wgICAgICAgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigy
MTEsIDIxMSwgMjExKTsgIgogfCAgICAgICAibm9uLWVkaXRhYmxlIgogfCAgICAgIiBpbiB0aGUg
bWlkZGxlIgogfCAgICAgPGJyPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtNDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA4Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5
Nzc3LWZpeC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMCBAQAog
IgogfCA8dWw+CiB8ICAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7IgotfCAgIDx1bD4KLXwgICAg
IHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgIgotfCAgICAgPGxpPgotfCAgICAgICAiQSIKK3wg
ICA8bGk+Cit8ICAgICAiQSIKIHwgICA8ZGl2PgorfCAgICAgc3R5bGU9InRleHQtYWxpZ246IC13
ZWJraXQtYXV0bzsgIgogfCAgICAgPHVsPgogfCAgICAgICA8bGk+CiB8ICAgICAgICAgPGE+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3OTg3KQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtNiw0ICs2LDQgQEAKIGZvbwogCiBleGVjQ29weUNvbW1hbmQ6IDxkaXYgaWQ9InRl
c3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90ZT48L2Rp
dj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8
ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2Nr
cXVvdGU+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9ImVkaXRpbmciPjxzcGFuIGNsYXNzPSJBcHBs
ZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXplOiBtZWRpdW07ICI+PGRpdiBpZD0idGVzdCIg
Y2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2Pjxk
aXY+PGJyPjwvZGl2PjwvZGl2Pjwvc3Bhbj48L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYg
aWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90
ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PGRpdiBpZD0idGVzdCIgY2xhc3M9
ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+PGJy
PjwvZGl2PjwvZGl2PjwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4
Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyArNiw3IEBACiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJ
TkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2lu
Z0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
MCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2Vy
dEFjdGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRF
OiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZy
b20gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IFNQQU4gPiBCID4gRk9OVCA+IFAgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gU1BBTiA+
IEIgPiBGT05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0
aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVH
QVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IEIgPiBGT05UID4gUCA+IEJPRFkgPiBI
VE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBCID4gRk9OVCA+IFAgPiBCID4gRk9OVCA+
IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5
RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3Rp
ZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtMzAsMTkgKzMwLDE4IEBACiB8
ICAgPGZvbnQ+CiB8ICAgICBmYWNlPSJNb25hY28iCiB8ICAgICA8Yj4KLXwgICAgICAgPHNwYW4+
Ci18ICAgICAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCit8ICAgICAgIDxwPgogfCAgICAg
ICAgIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IGZvbnQtd2VpZ2h0OiBub3JtYWw7ICIKLXwg
ICAgICAgICA8cD4KLXwgICAgICAgICAgIDxmb250PgotfCAgICAgICAgICAgICBmYWNlPSJNb25h
Y28iCi18ICAgICAgICAgICAgIDxiPgotfCAgICAgICAgICAgICAgICJoZWxsbyIKLXwgICAgICAg
ICA8cD4KLXwgICAgICAgICAgIDxmb250PgotfCAgICAgICAgICAgICBmYWNlPSJNb25hY28iCi18
ICAgICAgICAgICAgIDxiPgotfCAgICAgICAgICAgICAgICJ0aGVyZTwjc2VsZWN0aW9uLWNhcmV0
PiIKK3wgICAgICAgICA8Zm9udD4KK3wgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKK3wgICAgICAg
ICAgIDxiPgorfCAgICAgICAgICAgICAiaGVsbG8iCit8ICAgICAgIDxwPgorfCAgICAgICAgIHN0
eWxlPSJmb250LWZhbWlseTogVGltZXM7IGZvbnQtd2VpZ2h0OiBub3JtYWw7ICIKK3wgICAgICAg
ICA8Zm9udD4KK3wgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKK3wgICAgICAgICAgIDxiPgorfCAg
ICAgICAgICAgICAidGhlcmU8I3NlbGVjdGlvbi1jYXJldD4iCiB8ICIKIAogCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
dGV4dC13aXRoLXN0eWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQg
cmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mICN0ZXh0ID4gSSA+IEIgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25Q
YXN0ZWQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxk
Q2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDkgb2Yg
I3RleHQgPiBGT05UID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gOSBv
ZiAjdGV4dCA+IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQor
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDkgb2YgI3RleHQgPiBGT05UID4gRElWID4gSSA+IEIgPiBESVYg
PiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+IEkg
PiBCID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25B
ZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hh
bmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KQEAgLTMwLDEzICszMCwx
OCBAQAogTWFya3VwIGFmdGVyOgogfCA8Yj4KIHwgICA8aT4KLXwgICAgICJoZWxsbyBib2xkIGFu
ZCBpdGFsaWMiCi18IDxkaXY+Ci18ICAgPGk+Ci18ICAgICAiaGVsbG8gaXRhbGljIgotfCA8ZGl2
PgotfCAgIDxmb250PgotfCAgICAgY29sb3I9IiNmZjAwMDAiCi18ICAgICAiaGVsbG8gcmVkPCNz
ZWxlY3Rpb24tY2FyZXQ+IgorfCAgICAgPGI+Cit8ICAgICAgIHN0eWxlPSJmb250LXN0eWxlOiBu
b3JtYWw7ICIKK3wgICAgICAgPGk+Cit8ICAgICAgICAgImhlbGxvIGJvbGQgYW5kIGl0YWxpYyIK
K3wgICAgIDxkaXY+Cit8ICAgICAgIHN0eWxlPSJmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2Vp
Z2h0OiBub3JtYWw7ICIKK3wgICAgICAgPGk+Cit8ICAgICAgICAgImhlbGxvIGl0YWxpYyIKK3wg
ICAgIDxkaXY+Cit8ICAgICAgIHN0eWxlPSJmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtd2VpZ2h0
OiBub3JtYWw7ICIKK3wgICAgICAgPGZvbnQ+Cit8ICAgICAgICAgY29sb3I9IiNmZjAwMDAiCit8
ICAgICAgICAgImhlbGxvIHJlZDwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgIgogIgpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Rpc3BsYXktYmxvY2stb24tc3BhbnMtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kaXNw
bGF5LWJsb2NrLW9uLXNwYW5zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGlzcGxheS1ibG9jay1vbi1zcGFucy1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTI5LDggKzI5LDggQEAKIHwgPHNwYW4+CiB8ICAgc3R5
bGU9ImRpc3BsYXk6YmxvY2siCiB8ICAgPGI+Ci18ICAgICAiVGhpczwjc2VsZWN0aW9uLWNhcmV0
PiIKLXwgICA8Yj4KK3wgICAgIDxiPgorfCAgICAgICAiVGhpczwjc2VsZWN0aW9uLWNhcmV0PiIK
IHwgICAgICLCoGlzIGFub3RoZXIgcGFyYWdyYXBoLiIKIHwgICA8YnI+CiB8ICIKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAwMS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQt
MDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC05LDcgKzksNyBAQAogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1l
bnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSA3IG9mICN0ZXh0ID4gU1BB
TiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDcgb2YgI3RleHQgPiBTUEFOID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFj
dGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFu
Z2UgZnJvbSAwIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDEgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgdG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBh
ZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxT
RQogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgpAQCAtMjEsNyArMjEsOCBAQAogfCA8c3Bhbj4KIHwgICBpZD0idGVzdCIKIHwgICAiZm9v
IGJhciIKLXwgICAiYmFyPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAiYmFyPCNzZWxlY3Rpb24tY2Fy
ZXQ+IgorfCA8c3Bhbj4KIHwgICAiwqBiYXoiCiB8ICIKICIKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDg3OTg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLXByZS0wMDItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDQgKzIsNCBAQAog
Zm9vCiBiYXIKIGV4ZWNDb3B5Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmci
PiA8cHJlPmZvbyBiYXI8L3ByZT4gPC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0
ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4i
IHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNwYWNlOiBub3JtYWw7ICI+PHByZT5m
b28gYmFyPC9wcmU+PC9zcGFuPjwvcHJlPiA8L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYg
aWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48cHJlPmZvbyBiYXI8L3ByZT48L3ByZT4g
PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1p
bi1wcmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3OTg3KQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMywxMCArMyw3IEBACiB8IDxwcmU+CiB8ICAgY29u
dGVudGVkaXRhYmxlPSJ0cnVlIgogfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFz
cz0iQXBwbGUtc3R5bGUtc3BhbiIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdo
aXRlLXNwYWNlOiBub3JtYWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRlZGl0YWJs
ZT0idHJ1ZSIKLXwgICAgICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24n
PmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgIDxwcmU+Cit8ICAg
ICBjb250ZW50ZWRpdGFibGU9InRydWUiCit8ICAgICBpZD0icHJlIgorfCAgICAgIjxpbnB1dCB0
eXBlPSdidXR0b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1w
cmUtMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTcsNCArNyw0IEBACiBmb28KIGJhcgogZXhlY0N1dENvbW1hbmQ6IDxkaXYgaWQ9InRlc3Qi
IGNsYXNzPSJlZGl0aW5nIj4gPHByZT48YnI+PC9wcmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFu
ZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBs
ZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1zcGFjZTogbm9y
bWFsOyAiPjxwcmU+Zm9vIGJhcjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CitleGVjUGFzdGVD
b21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHByZT5mb28gYmFy
PC9wcmU+PC9wcmU+IDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
LzUwNjU2MDUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC81MDY1NjA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTA2NTYwNS1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTIxLDcgKzIxLDcgQEAKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxk
SW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJv
bSAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDAgb2YgRElWID4g
RElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFj
dGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpX
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBz
aG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20g
MjQgb2YgI3RleHQgPiBGT05UID4gRElWID4gU1BBTiA+IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAyNCBvZiAjdGV4dCA+IEZPTlQgPiBESVYgPiBTUEFOID4g
Rk9OVCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2Vs
ZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERF
TEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJh
bmdlIGZyb20gMjQgb2YgI3RleHQgPiBGT05UID4gRElWID4gRk9OVCA+IERJViA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDI0IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+IEZPTlQg
PiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlv
bkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRD
aGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtNDAsMTUgKzQw
LDEzIEBACiB8ICAgPGZvbnQ+CiB8ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKIHwgICAg
IGNvbG9yPSIjZmYwMDAwIgotfCAgICAgPHNwYW4+Cit8ICAgICA8Zm9udD4KIHwgICAgICAgY2xh
c3M9IkFwcGxlLXN0eWxlLXNwYW4iCit8ICAgICAgIGNvbG9yPSIjZmYwMDAwIgorfCAgICAgICAi
VGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuIgorfCAgICAgPGRpdj4KIHwgICAgICAgc3R5bGU9ImNv
bG9yOiByZ2IoMCwgMCwgMCk7ICIKIHwgICAgICAgPGZvbnQ+CiB8ICAgICAgICAgY2xhc3M9IkFw
cGxlLXN0eWxlLXNwYW4iCiB8ICAgICAgICAgY29sb3I9IiNmZjAwMDAiCi18ICAgICAgICAgIlRo
aXMgdGV4dCBzaG91bGQgYmUgcmVkLiIKLXwgICAgICAgPGRpdj4KLXwgICAgICAgICA8Zm9udD4K
LXwgICAgICAgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgotfCAgICAgICAgICAgY29sb3I9
IiNmZjAwMDAiCi18ICAgICAgICAgICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuPCNzZWxlY3Rp
b24tY2FyZXQ+IgorfCAgICAgICAgICJUaGlzIHRleHQgc2hvdWxkIGJlIHJlZC48I3NlbGVjdGlv
bi1jYXJldD4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0aW5nLWxp
bmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1jb2xvci1leHBlY3RlZC50eHQKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFrLXBy
ZXNlcnZlcy11bmRlcmxpbmUtY29sb3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4Nzk4NykKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRpbmctbGluZS1icmVhay1wcmVzZXJ2
ZXMtdW5kZXJsaW5lLWNvbG9yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNyAr
MTMsNyBAQAogfCA8ZGl2PgogfCAgICJUaGlzIHNob3VsZCBub3QgYmUgdW5kZXJsaW5lZC48I3Nl
bGVjdGlvbi1jYXJldD4iCiB8ICAgPHNwYW4+Ci18ICAgICBzdHlsZT0idGV4dC1kZWNvcmF0aW9u
OiB1bmRlcmxpbmU7IGNvbG9yOiBibHVlOyIKK3wgICAgIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246
IHVuZGVybGluZTsgY29sb3I6IGJsdWU7ICIKIHwgICAgIDxzcGFuPgogfCAgICAgICBzdHlsZT0i
Y29sb3I6cmVkOyIKIHwgICAgICAgIlRoaXMgc2hvdWxkIGJlIHVuZGVybGluZWQuIgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcGFnZS16b29tLWZvbnQtc2l6ZS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcGFnZS16
b29tLWZvbnQtc2l6ZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3OTg3KQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9pbnNlcnRpbmcvcGFnZS16b29tLWZvbnQtc2l6ZS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTEsNyArMSw3IEBACiBUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IHBhc3Rp
bmcgdGV4dCB3aXRoIGEgZm9udCBzaXplIGludG8gYSBxdWlya3MgbW9kZSBkb2N1bWVudCB0aGF0
IGlzIHpvb21lZCBkb2VzIG5vdCBhbHRlciB0aGUgZm9udCBzaXplLgogCiBQYXN0ZSBIZXJlOlRo
aXMgZm9udCBpcyBzaXplIDE2cHguCi1QYXN0ZSBIZXJlOjxzcGFuIHN0eWxlPSJmb250LXNpemU6
IDE2cHg7ICIgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iPlRoaXMgZm9udCBpcyBzaXplIDE2cHgu
PC9zcGFuPgorUGFzdGUgSGVyZTo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNnB4IiBjbGFzcz0i
QXBwbGUtc3R5bGUtc3BhbiI+VGhpcyBmb250IGlzIHNpemUgMTZweC48L3NwYW4+CiBkb2N1bWVu
dC5jb21wYXRNb2RlOiBCYWNrQ29tcGF0CiBQQVNTCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiA4Nzk4
NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC00NzgsMzQgKzQ3OCwzOSBAQAogLy8gYSBkaXYgaW5zZXJ0ZWQg
aW50byBhIGRvY3VtZW50IHdpdGggZGl2IHsgZGlzcGxheTppbmxpbmU7IH0uCiB2b2lkIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFu
SW5saW5lKCkKIHsKLSAgICBmb3IgKFJlZlB0cjxOb2RlPiBub2RlID0gbV9maXJzdE5vZGVJbnNl
cnRlZC5nZXQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewotICAg
ICAgICAvLyBGSVhNRTogPHJkYXI6Ly9wcm9ibGVtLzUzNzE1MzY+IFN0eWxlIHJ1bGVzIHRoYXQg
bWF0Y2ggcGFzdGVkIGNvbnRlbnQgY2FuIGNoYW5nZSBpdCdzIGFwcGVhcmFuY2UKLSAgICAgICAg
aWYgKGlzU3R5bGVTcGFuKG5vZGUuZ2V0KCkpKSB7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCog
ZSA9IHRvSFRNTEVsZW1lbnQobm9kZS5nZXQoKSk7Ci0gICAgICAgICAgICAvLyBUaGVyZSBhcmUg
b3RoZXIgc3R5bGVzIHRoYXQgc3R5bGUgcnVsZXMgY2FuIGdpdmUgdG8gc3R5bGUgc3BhbnMsCi0g
ICAgICAgICAgICAvLyBidXQgdGhlc2UgYXJlIHRoZSB0d28gaW1wb3J0YW50IG9uZXMgYmVjYXVz
ZSB0aGV5J2xsIHByZXZlbnQKLSAgICAgICAgICAgIC8vIGluc2VydGVkIGNvbnRlbnQgZnJvbSBh
cHBlYXJpbmcgaW4gdGhlIHJpZ2h0IHBhcmFncmFwaC4KLSAgICAgICAgICAgIC8vIEZJWE1FOiBI
eWF0dCBpcyBjb25jZXJuZWQgdGhhdCBzZWxlY3RpdmVseSB1c2luZyBkaXNwbGF5OmlubGluZSB3
aWxsIGdpdmUgaW5jb25zaXN0ZW50Ci0gICAgICAgICAgICAvLyByZXN1bHRzLiBXZSBhbHJlYWR5
IGtub3cgb25lIGlzc3VlIGJlY2F1c2UgdGQgZWxlbWVudHMgaWdub3JlIHRoZWlyIGRpc3BsYXkg
cHJvcGVydHkKLSAgICAgICAgICAgIC8vIGluIHF1aXJrcyBtb2RlICh3aGljaCBNYWlsLmFwcCBp
cyBhbHdheXMgaW4pLiBXZSBzaG91bGQgbG9vayBmb3IgYW4gYWx0ZXJuYXRpdmUuCi0gICAgICAg
ICAgICBpZiAoaXNCbG9jayhlKSkKLSAgICAgICAgICAgICAgICBlLT5nZXRJbmxpbmVTdHlsZURl
Y2woKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSk7Ci0g
ICAgICAgICAgICBpZiAoZS0+cmVuZGVyZXIoKSAmJiBlLT5yZW5kZXJlcigpLT5zdHlsZSgpLT5m
bG9hdGluZygpICE9IEZOT05FKQotICAgICAgICAgICAgICAgIGUtPmdldElubGluZVN0eWxlRGVj
bCgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBDU1NWYWx1ZU5vbmUpOwotICAgICAg
ICB9IGVsc2UgaWYgKG5vZGUtPmlzU3R5bGVkRWxlbWVudCgpKSB7Ci0gICAgICAgICAgICBTdHls
ZWRFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUuZ2V0
KCkpOwotICAgICAgICAgICAgaWYgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVT
dHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpKSB7Ci0gICAgICAgICAgICAgICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gbmV3SW5saW5lU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShp
bmxpbmVTdHlsZSk7Ci0gICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVN0eWxl
RnJvbVJ1bGVzKGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGlmICghbmV3SW5saW5lU3R5bGUt
PnN0eWxlKCkgfHwgIW5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5sZW5ndGgoKSkKLSAgICAgICAg
ICAgICAgICAgICAgcmVtb3ZlTm9kZUF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZUF0dHIpOwotICAg
ICAgICAgICAgICAgIGVsc2UgaWYgKG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5sZW5ndGgoKSA8
IGlubGluZVN0eWxlLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgc2V0Tm9kZUF0dHJp
YnV0ZShlbGVtZW50LCBzdHlsZUF0dHIsIG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0
KCkpOyAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9CisgICAgUmVmUHRyPE5vZGU+
IHBhc3RFbmROb2RlID0gbV9sYXN0TGVhZkluc2VydGVkID8gbV9sYXN0TGVhZkluc2VydGVkLT50
cmF2ZXJzZU5leHROb2RlKCkgOiAwOworICAgIFJlZlB0cjxOb2RlPiBuZXh0OworICAgIGZvciAo
UmVmUHRyPE5vZGU+IG5vZGUgPSBtX2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpOyBub2RlICYmIG5v
ZGUgIT0gcGFzdEVuZE5vZGU7IG5vZGUgPSBuZXh0KSB7CisgICAgICAgIG5leHQgPSBub2RlLT50
cmF2ZXJzZU5leHROb2RlKCk7CisgICAgICAgIGlmICghbm9kZS0+aXNTdHlsZWRFbGVtZW50KCkp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50
ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUuZ2V0KCkpOworCisgICAgICAgIENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0
eWxlRGVjbCgpOworICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBuZXdJbmxpbmVTdHlsZSA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAgICAgaWYgKGlubGluZVN0
eWxlKSB7CisgICAgICAgICAgICBDb250YWluZXJOb2RlKiBjb250ZXh0ID0gZWxlbWVudC0+cGFy
ZW50Tm9kZSgpOworCisgICAgICAgICAgICAvLyBJZiBNYWlsIHdyYXBzIHRoZSBmcmFnbWVudCB3
aXRoIGEgUGFzdGUgYXMgUXVvdGF0aW9uIGJsb2NrcXVvdGUsIG9yIGlmIHlvdSdyZSBwYXN0aW5n
IGludG8gYSBxdW90ZWQgcmVnaW9uLAorICAgICAgICAgICAgLy8gc3R5bGVzIGZyb20gYmxvY2tx
dW90ZU5vZGUgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgdGhvc2UgZnJvbSB0aGUgc291cmNlIGRv
Y3VtZW50LCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5MzA5ODY+IGFuZCA8cmRhcjovL3Byb2JsZW0v
NTA4OTMyNz4uCisgICAgICAgICAgICBOb2RlKiBibG9ja3F1b3RlTm9kZSA9IGlzTWFpbFBhc3Rl
QXNRdW90YXRpb25Ob2RlKGNvbnRleHQpID8gY29udGV4dCA6IGVuY2xvc2luZ05vZGVPZlR5cGUo
Zmlyc3RQb3NpdGlvbkluTm9kZShjb250ZXh0KSwgaXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jvc3NF
ZGl0aW5nQm91bmRhcnkpOworICAgICAgICAgICAgaWYgKGJsb2NrcXVvdGVOb2RlKQorICAgICAg
ICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQo
ZWxlbWVudCwgZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpOworCisgICAgICAgICAgICBu
ZXdJbmxpbmVTdHlsZS0+cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRDb250ZXh0KGVsZW1lbnQsIGNv
bnRleHQpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUgPT0gbV9sYXN0TGVhZkluc2Vy
dGVkKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICghaW5saW5lU3R5bGUgfHwgbmV3
SW5saW5lU3R5bGUtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAgaWYgKGlzU3R5bGVTcGFuKG5v
ZGUuZ2V0KCkpKSAvLyBGSVhNRTogc2hvdWxkIGNhbGwgaXNTcGFuV2l0aG91dEF0dHJpYnV0ZXNP
clVuc3R5bGVTdHlsZVNwYW4gaW5zdGVhZAorICAgICAgICAgICAgICAgIHJlbW92ZU5vZGVQcmVz
ZXJ2aW5nQ2hpbGRyZW4obm9kZS5nZXQoKSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAg
ICAgICAgcmVtb3ZlTm9kZUF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZUF0dHIpOworICAgICAgICB9
IGVsc2UgaWYgKG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5sZW5ndGgoKSAhPSBpbmxpbmVTdHls
ZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzZXROb2RlQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxl
QXR0ciwgbmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSk7CisKKyAgICAgICAgaWYg
KGlzU3R5bGVTcGFuKG5vZGUuZ2V0KCkpICYmICFub2RlLT5maXJzdENoaWxkKCkpCisgICAgICAg
ICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKG5vZGUuZ2V0KCkpOwogICAgIH0KIH0K
IApAQCAtNTgyLDEyMSArNTg3LDYgQEAKICAgICB9CiB9CiAKLS8vIFJlbW92ZSBzdHlsZSBzcGFu
cyBiZWZvcmUgaW5zZXJ0aW9uIGlmIHRoZXkgYXJlIHVubmVjZXNzYXJ5LiAgSXQncyBmYXN0ZXIg
YmVjYXVzZSB3ZSdsbCAKLS8vIGF2b2lkIGRvaW5nIGEgbGF5b3V0Lgotc3RhdGljIGJvb2wgaGFu
ZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbihSZXBsYWNlbWVudEZyYWdtZW50JiBmcmFnbWVu
dCwgY29uc3QgUG9zaXRpb24mIGluc2VydGlvblBvcykKLXsKLSAgICBOb2RlKiB0b3BOb2RlID0g
ZnJhZ21lbnQuZmlyc3RDaGlsZCgpOwotCi0gICAgLy8gSGFuZGxpbmcgdGhlIGNhc2Ugd2hlcmUg
d2UgYXJlIGRvaW5nIFBhc3RlIGFzIFF1b3RhdGlvbiBvciBwYXN0aW5nIGludG8gcXVvdGVkIGNv
bnRlbnQgaXMgbW9yZSBjb21wbGljYXRlZCAoc2VlIGhhbmRsZVN0eWxlU3BhbnMpCi0gICAgLy8g
YW5kIGRvZXNuJ3QgcmVjZWl2ZSB0aGUgb3B0aW1pemF0aW9uLgotICAgIGlmIChpc01haWxQYXN0
ZUFzUXVvdGF0aW9uTm9kZSh0b3BOb2RlKSB8fCBlbmNsb3NpbmdOb2RlT2ZUeXBlKGZpcnN0UG9z
aXRpb25Jbk9yQmVmb3JlTm9kZSh0b3BOb2RlKSwgaXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jvc3NF
ZGl0aW5nQm91bmRhcnkpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAvLyBFaXRoZXIg
dGhlcmUgYXJlIG5vIHN0eWxlIHNwYW5zIGluIHRoZSBmcmFnbWVudCBvciBhIFdlYktpdCBjbGll
bnQgaGFzIGFkZGVkIGNvbnRlbnQgdG8gdGhlIGZyYWdtZW50Ci0gICAgLy8gYmVmb3JlIGluc2Vy
dGluZyBpdC4gIExvb2sgZm9yIGFuZCBoYW5kbGUgc3R5bGUgc3BhbnMgYWZ0ZXIgaW5zZXJ0aW9u
LgotICAgIGlmICghaXNTdHlsZVNwYW4odG9wTm9kZSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsK
LQotICAgIE5vZGUqIHdyYXBwaW5nU3R5bGVTcGFuID0gdG9wTm9kZTsKLSAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiBzdHlsZUF0SW5zZXJ0aW9uUG9zID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5z
ZXJ0aW9uUG9zLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpKTsKLSAgICBTdHJpbmcgc3R5bGVU
ZXh0ID0gc3R5bGVBdEluc2VydGlvblBvcy0+c3R5bGUoKS0+Y3NzVGV4dCgpOwotCi0gICAgLy8g
RklYTUU6IFRoaXMgc3RyaW5nIGNvbXBhcmlzb24gaXMgYSBuYWl2ZSB3YXkgb2YgY29tcGFyaW5n
IHR3byBzdHlsZXMuCi0gICAgLy8gV2Ugc2hvdWxkIGJlIHRha2luZyB0aGUgZGlmZiBhbmQgY2hl
Y2sgdGhhdCB0aGUgZGlmZiBpcyBlbXB0eS4KLSAgICBpZiAoc3R5bGVUZXh0ICE9IHN0YXRpY19j
YXN0PEVsZW1lbnQqPih3cmFwcGluZ1N0eWxlU3BhbiktPmdldEF0dHJpYnV0ZShzdHlsZUF0dHIp
KQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBmcmFnbWVudC5yZW1vdmVOb2RlUHJlc2Vy
dmluZ0NoaWxkcmVuKHdyYXBwaW5nU3R5bGVTcGFuKTsKLSAgICByZXR1cm4gdHJ1ZTsKLX0KLQot
Ly8gQXQgY29weSB0aW1lLCBXZWJLaXQgd3JhcHMgY29waWVkIGNvbnRlbnQgaW4gYSBzcGFuIHRo
YXQgY29udGFpbnMgdGhlIHNvdXJjZSBkb2N1bWVudCdzIAotLy8gZGVmYXVsdCBzdHlsZXMuICBJ
ZiB0aGUgY29waWVkIFJhbmdlIGluaGVyaXRzIGFueSBvdGhlciBzdHlsZXMgZnJvbSBpdHMgYW5j
ZXN0b3JzLCB3ZSBwdXQgCi0vLyB0aG9zZSBzdHlsZXMgb24gYSBzZWNvbmQgc3Bhbi4KLS8vIFRo
aXMgZnVuY3Rpb24gcmVtb3ZlcyByZWR1bmRhbnQgc3R5bGVzIGZyb20gdGhvc2Ugc3BhbnMsIGFu
ZCByZW1vdmVzIHRoZSBzcGFucyBpZiBhbGwgdGhlaXIgCi0vLyBzdHlsZXMgYXJlIHJlZHVuZGFu
dC4gCi0vLyBXZSBzaG91bGQgcmVtb3ZlIHRoZSBBcHBsZS1zdHlsZS1zcGFuIGNsYXNzIHdoZW4g
d2UncmUgZG9uZSwgc2VlIDxyZGFyOi8vcHJvYmxlbS81Njg1NjAwPi4KLS8vIFdlIHNob3VsZCBy
ZW1vdmUgc3R5bGVzIGZyb20gc3BhbnMgdGhhdCBhcmUgb3ZlcnJpZGRlbiBieSBhbGwgb2YgdGhl
aXIgY2hpbGRyZW4sIGVpdGhlciBoZXJlCi0vLyBvciBhdCBjb3B5IHRpbWUuCi12b2lkIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpoYW5kbGVTdHlsZVNwYW5zKCkKLXsKLSAgICBIVE1MRWxlbWVu
dCogd3JhcHBpbmdTdHlsZVNwYW4gPSAwOwotICAgIC8vIFRoZSBzdHlsZSBzcGFuIHRoYXQgY29u
dGFpbnMgdGhlIHNvdXJjZSBkb2N1bWVudCdzIGRlZmF1bHQgc3R5bGUgc2hvdWxkIGJlIGF0Ci0g
ICAgLy8gdGhlIHRvcCBvZiB0aGUgZnJhZ21lbnQsIGJ1dCBNYWlsIHNvbWV0aW1lcyBhZGRzIGEg
d3JhcHBlciAoZm9yIFBhc3RlIEFzIFF1b3RhdGlvbiksCi0gICAgLy8gc28gc2VhcmNoIGZvciB0
aGUgdG9wIGxldmVsIHN0eWxlIHNwYW4gaW5zdGVhZCBvZiBhc3N1bWluZyBpdCdzIGF0IHRoZSB0
b3AuCi0gICAgZm9yIChOb2RlKiBub2RlID0gbV9maXJzdE5vZGVJbnNlcnRlZC5nZXQoKTsgbm9k
ZTsgbm9kZSA9IG5vZGUtPnRyYXZlcnNlTmV4dE5vZGUoKSkgewotICAgICAgICBpZiAoaXNTdHls
ZVNwYW4obm9kZSkpIHsKLSAgICAgICAgICAgIHdyYXBwaW5nU3R5bGVTcGFuID0gdG9IVE1MRWxl
bWVudChub2RlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgfQotICAgIAot
ICAgIC8vIFRoZXJlIG1pZ2h0IG5vdCBiZSBhbnkgc3R5bGUgc3BhbnMgaWYgd2UncmUgcGFzdGlu
ZyBmcm9tIGFub3RoZXIgYXBwbGljYXRpb24gb3IgaWYgCi0gICAgLy8gd2UgYXJlIGhlcmUgYmVj
YXVzZSBvZiBhIGRvY3VtZW50LmV4ZWNDb21tYW5kKCJJbnNlcnRIVE1MIiwgLi4uKSBjYWxsLgot
ICAgIGlmICghd3JhcHBpbmdTdHlsZVNwYW4pCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUod3JhcHBpbmdTdHls
ZVNwYW4tPmdldElubGluZVN0eWxlRGVjbCgpKTsKLSAgICBDb250YWluZXJOb2RlKiBjb250ZXh0
ID0gd3JhcHBpbmdTdHlsZVNwYW4tPnBhcmVudE5vZGUoKTsKLQotICAgIC8vIElmIE1haWwgd3Jh
cHMgdGhlIGZyYWdtZW50IHdpdGggYSBQYXN0ZSBhcyBRdW90YXRpb24gYmxvY2txdW90ZSwgb3Ig
aWYgeW91J3JlIHBhc3RpbmcgaW50byBhIHF1b3RlZCByZWdpb24sCi0gICAgLy8gc3R5bGVzIGZy
b20gYmxvY2txdW90ZU5vZGUgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgdGhvc2UgZnJvbSB0aGUg
c291cmNlIGRvY3VtZW50LCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5MzA5ODY+IGFuZCA8cmRhcjov
L3Byb2JsZW0vNTA4OTMyNz4uCi0gICAgTm9kZSogYmxvY2txdW90ZU5vZGUgPSBpc01haWxQYXN0
ZUFzUXVvdGF0aW9uTm9kZShjb250ZXh0KSA/IGNvbnRleHQgOiBlbmNsb3NpbmdOb2RlT2ZUeXBl
KGZpcnN0UG9zaXRpb25Jbk5vZGUoY29udGV4dCksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3Nz
RWRpdGluZ0JvdW5kYXJ5KTsKLSAgICBpZiAoYmxvY2txdW90ZU5vZGUpCi0gICAgICAgIGNvbnRl
eHQgPSBkb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKLQotICAgIC8vIFRoaXMgb3BlcmF0
aW9uIHJlcXVpcmVzIHRoYXQgb25seSBlZGl0aW5nIHN0eWxlcyB0byBiZSByZW1vdmVkIGZyb20g
c291cmNlRG9jdW1lbnRTdHlsZS4KLSAgICBzdHlsZS0+cHJlcGFyZVRvQXBwbHlBdChmaXJzdFBv
c2l0aW9uSW5Ob2RlKGNvbnRleHQpKTsKLQotICAgIC8vIFJlbW92ZSBibG9jayBwcm9wZXJ0aWVz
IGluIHRoZSBzcGFuJ3Mgc3R5bGUuIFRoaXMgcHJldmVudHMgcHJvcGVydGllcyB0aGF0IHByb2Jh
Ymx5IGhhdmUgbm8gZWZmZWN0IAotICAgIC8vIGN1cnJlbnRseSBmcm9tIGFmZmVjdGluZyBibG9j
a3MgbGF0ZXIgaWYgdGhlIHN0eWxlIGlzIGNsb25lZCBmb3IgYSBuZXcgYmxvY2sgZWxlbWVudCBk
dXJpbmcgYSBmdXR1cmUgCi0gICAgLy8gZWRpdGluZyBvcGVyYXRpb24uCi0gICAgLy8gRklYTUU6
IFRoZXkgKmNhbiogaGF2ZSBhbiBlZmZlY3QgY3VycmVudGx5IGlmIGJsb2NrcyBiZW5lYXRoIHRo
ZSBzdHlsZSBzcGFuIGFyZW4ndCBpbmRpdmlkdWFsbHkgbWFya2VkCi0gICAgLy8gd2l0aCBibG9j
ayBzdHlsZXMgYnkgdGhlIGVkaXRpbmcgZW5naW5lIHVzZWQgdG8gc3R5bGUgdGhlbS4gIFdlYktp
dCBkb2Vzbid0IGRvIHRoaXMsIGJ1dCBvdGhlcnMgbWlnaHQuCi0gICAgc3R5bGUtPnJlbW92ZUJs
b2NrUHJvcGVydGllcygpOwotCi0gICAgaWYgKHN0eWxlLT5pc0VtcHR5KCkgfHwgIXdyYXBwaW5n
U3R5bGVTcGFuLT5maXJzdENoaWxkKCkpCi0gICAgICAgIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hp
bGRyZW4od3JhcHBpbmdTdHlsZVNwYW4pOwotICAgIGVsc2UKLSAgICAgICAgc2V0Tm9kZUF0dHJp
YnV0ZSh3cmFwcGluZ1N0eWxlU3Bhbiwgc3R5bGVBdHRyLCBzdHlsZS0+c3R5bGUoKS0+Y3NzVGV4
dCgpKTsKLX0KLQotLy8gVGFrZSB0aGUgc3R5bGUgYXR0cmlidXRlIG9mIGEgc3BhbiBhbmQgYXBw
bHkgaXQgdG8gaXQncyBjaGlsZHJlbiBpbnN0ZWFkLiAgVGhpcyBhbGxvd3MgdXMgdG8KLS8vIGNv
bnZlcnQgaW52YWxpZCBIVE1MIHdoZXJlIGEgc3BhbiBjb250YWlucyBibG9jayBlbGVtZW50cyBp
bnRvIHZhbGlkIEhUTUwgd2hpbGUgcHJlc2VydmluZwotLy8gc3R5bGVzLgotdm9pZCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6Y29weVN0eWxlVG9DaGlsZHJlbihOb2RlKiBwYXJlbnROb2RlLCBj
b25zdCBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogcGFyZW50U3R5bGUpCi17Ci0gICAgQVNT
RVJUKHBhcmVudE5vZGUtPmhhc1RhZ05hbWUoc3BhblRhZykpOwotICAgIE5vZGVWZWN0b3IgY2hp
bGROb2RlczsKLSAgICBmb3IgKFJlZlB0cjxOb2RlPiBjaGlsZE5vZGUgPSBwYXJlbnROb2RlLT5m
aXJzdENoaWxkKCk7IGNoaWxkTm9kZTsgY2hpbGROb2RlID0gY2hpbGROb2RlLT5uZXh0U2libGlu
ZygpKQotICAgICAgICBjaGlsZE5vZGVzLmFwcGVuZChjaGlsZE5vZGUpOwotICAgICAgICAKLSAg
ICBmb3IgKE5vZGVWZWN0b3I6OmNvbnN0X2l0ZXJhdG9yIGl0ID0gY2hpbGROb2Rlcy5iZWdpbigp
OyBpdCAhPSBjaGlsZE5vZGVzLmVuZCgpOyBpdCsrKSB7Ci0gICAgICAgIE5vZGUqIGNoaWxkTm9k
ZSA9IGl0LT5nZXQoKTsKLSAgICAgICAgaWYgKGNoaWxkTm9kZS0+aXNUZXh0Tm9kZSgpIHx8ICFp
c0Jsb2NrKGNoaWxkTm9kZSkgfHwgY2hpbGROb2RlLT5oYXNUYWdOYW1lKHByZVRhZykpIHsKLSAg
ICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSwgcHV0IGEgc3BhbiB0YWcgYXJvdW5kIHRoZSBjaGls
ZCBub2RlLgotICAgICAgICAgICAgUmVmUHRyPE5vZGU+IG5ld05vZGUgPSBwYXJlbnROb2RlLT5j
bG9uZU5vZGUoZmFsc2UpOwotICAgICAgICAgICAgQVNTRVJUKG5ld05vZGUtPmhhc1RhZ05hbWUo
c3BhblRhZykpOwotICAgICAgICAgICAgSFRNTEVsZW1lbnQqIG5ld1NwYW4gPSB0b0hUTUxFbGVt
ZW50KG5ld05vZGUuZ2V0KCkpOwotICAgICAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShuZXdTcGFu
LCBzdHlsZUF0dHIsIHBhcmVudFN0eWxlLT5jc3NUZXh0KCkpOwotICAgICAgICAgICAgaW5zZXJ0
Tm9kZUFmdGVyKG5ld1NwYW4sIGNoaWxkTm9kZSk7Ci0gICAgICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjID0gMDsKLSAgICAgICAgICAgIG5ld1NwYW4tPmFwcGVuZENoaWxkKGNoaWxkTm9kZSwgZWMp
OwotICAgICAgICAgICAgQVNTRVJUKCFlYyk7Ci0gICAgICAgICAgICBjaGlsZE5vZGUgPSBuZXdT
cGFuOwotICAgICAgICB9IGVsc2UgaWYgKGNoaWxkTm9kZS0+aXNIVE1MRWxlbWVudCgpKSB7Ci0g
ICAgICAgICAgICAvLyBDb3B5IHRoZSBzdHlsZSBhdHRyaWJ1dGUgYW5kIG1lcmdlIHRoZW0gaW50
byB0aGUgY2hpbGQgbm9kZS4gIFdlIGRvbid0IHdhbnQgdG8gb3ZlcnJpZGUKLSAgICAgICAgICAg
IC8vIGV4aXN0aW5nIHN0eWxlcywgc28gZG9uJ3QgY2xvYmJlciBvbiBtZXJnZS4KLSAgICAgICAg
ICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbmV3U3R5bGUgPSBwYXJlbnRT
dHlsZS0+Y29weSgpOwotICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGNoaWxkRWxlbWVudCA9IHRv
SFRNTEVsZW1lbnQoY2hpbGROb2RlKTsKLSAgICAgICAgICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbj4gZXhpc3RpbmdTdHlsZXMgPSBjaGlsZEVsZW1lbnQtPmdldElubGluZVN0
eWxlRGVjbCgpLT5jb3B5KCk7Ci0gICAgICAgICAgICBleGlzdGluZ1N0eWxlcy0+bWVyZ2UobmV3
U3R5bGUuZ2V0KCksIGZhbHNlKTsKLSAgICAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUoY2hpbGRF
bGVtZW50LCBzdHlsZUF0dHIsIGV4aXN0aW5nU3R5bGVzLT5jc3NUZXh0KCkpOwotICAgICAgICB9
Ci0gICAgfQotfQotCiB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjptZXJnZUVuZElmTmVl
ZGVkKCkKIHsKICAgICBpZiAoIW1fc2hvdWxkTWVyZ2VFbmQpCkBAIC05MjksOCArODE5LDYgQEAK
ICAgICAvLyBQYXN0ZSBpbnRvIHJ1biBvZiB0YWJzIHNwbGl0cyB0aGUgdGFiIHNwYW4uCiAgICAg
aW5zZXJ0aW9uUG9zID0gcG9zaXRpb25PdXRzaWRlVGFiU3BhbihpbnNlcnRpb25Qb3MpOwogCi0g
ICAgYm9vbCBoYW5kbGVkU3R5bGVTcGFucyA9IGhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJbnNlcnRp
b24oZnJhZ21lbnQsIGluc2VydGlvblBvcyk7Ci0KICAgICAvLyBJZiB3ZSBhcmUgbm90IHRyeWlu
ZyB0byBtYXRjaCB0aGUgZGVzdGluYXRpb24gc3R5bGUgd2UgcHJlZmVyIGEgcG9zaXRpb24KICAg
ICAvLyB0aGF0IGlzIG91dHNpZGUgaW5saW5lIGVsZW1lbnRzIHRoYXQgcHJvdmlkZSBzdHlsZS4K
ICAgICAvLyBUaGlzIHdheSB3ZSBjYW4gcHJvZHVjZSBhIGxlc3MgdmVyYm9zZSBtYXJrdXAuCkBA
IC05NDMsOCArODMxLDcgQEAKICAgICAgICAgICAgIGluc2VydGlvblBvcyA9IGZpcnN0UG9zaXRp
b25Jbk5vZGUoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIH0KIAotICAg
ICAgICAvLyBGSVhNRTogaXNJbmxpbmVOb2RlV2l0aFN0eWxlIGRvZXMgbm90IGNoZWNrIGVkaXRh
YmlsaXR5LgotICAgICAgICBpZiAoUmVmUHRyPE5vZGU+IG5vZGVUb1NwbGl0VG8gPSBoaWdoZXN0
RW5jbG9zaW5nTm9kZU9mVHlwZShpbnNlcnRpb25Qb3MsIGlzSW5saW5lTm9kZVdpdGhTdHlsZSkp
IHsKKyAgICAgICAgaWYgKFJlZlB0cjxOb2RlPiBub2RlVG9TcGxpdFRvID0gaGlnaGVzdEVuY2xv
c2luZ05vZGVPZlR5cGUoaW5zZXJ0aW9uUG9zLCBpc0lubGluZU5vZGVXaXRoU3R5bGUsIENhbm5v
dENyb3NzRWRpdGluZ0JvdW5kYXJ5LCBlbmNsb3NpbmdCbG9jayhpbnNlcnRpb25Qb3MuY29udGFp
bmVyTm9kZSgpKSkpIHsKICAgICAgICAgICAgIGlmIChpbnNlcnRpb25Qb3MuY29udGFpbmVyTm9k
ZSgpICE9IG5vZGVUb1NwbGl0VG8pIHsKICAgICAgICAgICAgICAgICBub2RlVG9TcGxpdFRvID0g
c3BsaXRUcmVlVG9Ob2RlKGluc2VydGlvblBvcy5hbmNob3JOb2RlKCksIG5vZGVUb1NwbGl0VG8u
Z2V0KCksIHRydWUpLmdldCgpOwogICAgICAgICAgICAgICAgIGluc2VydGlvblBvcyA9IHBvc2l0
aW9uSW5QYXJlbnRCZWZvcmVOb2RlKG5vZGVUb1NwbGl0VG8uZ2V0KCkpOwpAQCAtMTAwOCw5ICs4
OTUsNiBAQAogICAgIAogICAgIHJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5J
bmxpbmUoKTsKICAgICAKLSAgICBpZiAoIWhhbmRsZWRTdHlsZVNwYW5zKQotICAgICAgICBoYW5k
bGVTdHlsZVNwYW5zKCk7Ci0gICAgCiAgICAgLy8gTXV0YXRpb24gZXZlbnRzIChidWcgMjAxNjEp
IG1heSBoYXZlIGFscmVhZHkgcmVtb3ZlZCB0aGUgaW5zZXJ0ZWQgY29udGVudAogICAgIGlmICgh
bV9maXJzdE5vZGVJbnNlcnRlZCB8fCAhbV9maXJzdE5vZGVJbnNlcnRlZC0+aW5Eb2N1bWVudCgp
KQogICAgICAgICByZXR1cm47CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCShyZXZp
c2lvbiA4Nzk4NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTIwLDEyICsxMjAsNyBAQAogcHVibGljOgogICAgIGVudW0gUmFuZ2VGdWxs
eVNlbGVjdHNOb2RlIHsgRG9lc0Z1bGx5U2VsZWN0Tm9kZSwgRG9lc05vdEZ1bGx5U2VsZWN0Tm9k
ZSB9OwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMs
IEVBYnNvbHV0ZVVSTHMgc2hvdWxkUmVzb2x2ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdl
IHNob3VsZEFubm90YXRlLCBjb25zdCBSYW5nZSogcmFuZ2UpCi0gICAgOiBNYXJrdXBBY2N1bXVs
YXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHJhbmdlKQotICAgICwgbV9zaG91bGRBbm5v
dGF0ZShzaG91bGRBbm5vdGF0ZSkKLSAgICB7Ci0gICAgfQotCisgICAgU3R5bGVkTWFya3VwQWNj
dW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMsIEVBbm5vdGF0ZUZv
ckludGVyY2hhbmdlLCBjb25zdCBSYW5nZSosIE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6
ZWQgPSAwKTsKICAgICBOb2RlKiBzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5vZGUq
IHBhc3RFbmQpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgU3RyaW5nJiBz
KSB7IHJldHVybiBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RyaW5nKHMpOyB9CiAgICAgdm9p
ZCB3cmFwV2l0aE5vZGUoTm9kZSosIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZhbHNl
LCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKTsKQEAgLTEzMywx
OCArMTI4LDM3IEBACiAgICAgU3RyaW5nIHRha2VSZXN1bHRzKCk7CiAKIHByaXZhdGU6CisgICAg
dm9pZCBhcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFZlY3RvcjxVQ2hhcj4mLCBDU1NTdHlsZURlY2xh
cmF0aW9uKiwgRG9jdW1lbnQqLCBib29sIGlzQmxvY2sgPSBmYWxzZSk7CisgICAgY29uc3QgU3Ry
aW5nIHN0eWxlTm9kZUNsb3NlVGFnKGJvb2wgaXNCbG9jayA9IGZhbHNlKTsKICAgICB2aXJ0dWFs
IHZvaWQgYXBwZW5kVGV4dChWZWN0b3I8VUNoYXI+JiBvdXQsIFRleHQqKTsKICAgICBTdHJpbmcg
cmVuZGVyZWRUZXh0KGNvbnN0IE5vZGUqLCBjb25zdCBSYW5nZSopOwogICAgIFN0cmluZyBzdHJp
bmdWYWx1ZUZvclJhbmdlKGNvbnN0IE5vZGUqLCBjb25zdCBSYW5nZSopOwogICAgIHZvaWQgYXBw
ZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgYWRk
RGlzcGxheUlubGluZSwgUmFuZ2VGdWxseVNlbGVjdHNOb2RlKTsKICAgICB2b2lkIGFwcGVuZEVs
ZW1lbnQoVmVjdG9yPFVDaGFyPiYgb3V0LCBFbGVtZW50KiBlbGVtZW50LCBOYW1lc3BhY2VzKikg
eyBhcHBlbmRFbGVtZW50KG91dCwgZWxlbWVudCwgZmFsc2UsIERvZXNGdWxseVNlbGVjdE5vZGUp
OyB9CiAKKyAgICBOb2RlKiB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBzdGFy
dE5vZGUsIE5vZGUqIHBhc3RFbmQsIGJvb2wgc2hvdWxkRW1pdCk7CisKICAgICBib29sIHNob3Vs
ZEFubm90YXRlKCkgeyByZXR1cm4gbV9zaG91bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVy
Y2hhbmdlOyB9CisgICAgYm9vbCBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoTm9kZSogbm9kZSkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQg
JiYgbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgPT0gbm9kZS0+cGFy
ZW50Tm9kZSgpCisgICAgICAgICAgICAmJiBtX3dyYXBwaW5nU3R5bGUgJiYgbV93cmFwcGluZ1N0
eWxlLT5zdHlsZSgpOworICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmV2ZXJzZWRQcmVj
ZWRpbmdNYXJrdXA7CiAgICAgY29uc3QgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgbV9zaG91bGRB
bm5vdGF0ZTsKKyAgICBOb2RlKiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQ7CisgICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gbV93cmFwcGluZ1N0eWxlOwogfTsKIAoraW5saW5lIFN0eWxlZE1h
cmt1cEFjY3VtdWxhdG9yOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBu
b2RlcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50ZXJj
aGFuZ2Ugc2hvdWxkQW5ub3RhdGUsCisgICAgY29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBoaWdo
ZXN0Tm9kZVRvQmVTZXJpYWxpemVkKQorICAgIDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNo
b3VsZFJlc29sdmVVUkxzLCByYW5nZSkKKyAgICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5u
b3RhdGUpCisgICAgLCBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQoaGlnaGVzdE5vZGVUb0Jl
U2VyaWFsaXplZCkKK3sKK30KKwogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdp
dGhOb2RlKE5vZGUqIG5vZGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgUmFuZ2VGdWxs
eVNlbGVjdHNOb2RlIHJhbmdlRnVsbHlTZWxlY3RzTm9kZSkKIHsKICAgICBWZWN0b3I8VUNoYXI+
IG1hcmt1cDsKQEAgLTE2MCwyMCArMTc0LDMwIEBACiAKIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11
bGF0b3I6OndyYXBXaXRoU3R5bGVOb2RlKENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBEb2N1
bWVudCogZG9jdW1lbnQsIGJvb2wgaXNCbG9jaykKIHsKKyAgICBWZWN0b3I8VUNoYXI+IG9wZW5U
YWc7CisgICAgYXBwZW5kU3R5bGVOb2RlT3BlblRhZyhvcGVuVGFnLCBzdHlsZSwgZG9jdW1lbnQs
IGlzQmxvY2spOworICAgIG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5kKFN0cmluZzo6
YWRvcHQob3BlblRhZykpOworICAgIGFwcGVuZFN0cmluZyhzdHlsZU5vZGVDbG9zZVRhZyhpc0Js
b2NrKSk7Cit9CisKK3ZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0eWxlTm9k
ZU9wZW5UYWcoVmVjdG9yPFVDaGFyPiYgb3V0LCBDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwg
RG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGlzQmxvY2spCit7CiAgICAgLy8gQWxsIHRleHQtZGVj
b3JhdGlvbi1yZWxhdGVkIGVsZW1lbnRzIHNob3VsZCBoYXZlIGJlZW4gdHJlYXRlZCBhcyBzcGVj
aWFsIGFuY2VzdG9ycwogICAgIC8vIElmIHdlIGV2ZXIgaGl0IHRoaXMgQVNTRVJULCB3ZSBzaG91
bGQgZXhwb3J0IFN0eWxlQ2hhbmdlIGluIEFwcGx5U3R5bGVDb21tYW5kIGFuZCB1c2UgaXQgaGVy
ZQogICAgIEFTU0VSVChwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKHN0eWxlLCBDU1NQcm9w
ZXJ0eVRleHREZWNvcmF0aW9uKSAmJiBwcm9wZXJ0eU1pc3NpbmdPckVxdWFsVG9Ob25lKHN0eWxl
LCBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KSk7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGRpdlN0eWxlLCAoIjxkaXYgc3R5bGU9XCIiKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0eWxlU3Bhbk9wZW4sICgi
PHNwYW4gY2xhc3M9XCIiIEFwcGxlU3R5bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIikpOworICAg
IGFwcGVuZChvdXQsIGlzQmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOworICAgIGFw
cGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnQtPmlzSFRN
TERvY3VtZW50KCkpOworICAgIG91dC5hcHBlbmQoJ1wiJyk7CisgICAgb3V0LmFwcGVuZCgnPicp
OworfQorCitjb25zdCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNs
b3NlVGFnKGJvb2wgaXNCbG9jaykKK3sKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgZGl2Q2xvc2UsICgiPC9kaXY+IikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCBzdHlsZVNwYW5PcGVuLCAoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3Bh
bkNsYXNzICJcIiBzdHlsZT1cIiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgc3R5bGVTcGFuQ2xvc2UsICgiPC9zcGFuPiIpKTsKLSAgICBWZWN0b3I8VUNoYXI+IG9w
ZW5UYWc7Ci0gICAgYXBwZW5kKG9wZW5UYWcsIGlzQmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bh
bk9wZW4pOwotICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0
KCksIGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKLSAgICBvcGVuVGFnLmFwcGVuZCgnXCIn
KTsKLSAgICBvcGVuVGFnLmFwcGVuZCgnPicpOwotICAgIG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJr
dXAuYXBwZW5kKFN0cmluZzo6YWRvcHQob3BlblRhZykpOwotICAgIGFwcGVuZFN0cmluZyhpc0Js
b2NrID8gZGl2Q2xvc2UgOiBzdHlsZVNwYW5DbG9zZSk7CisgICAgcmV0dXJuIGlzQmxvY2sgPyBk
aXZDbG9zZSA6IHN0eWxlU3BhbkNsb3NlOwogfQogCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11
bGF0b3I6OnRha2VSZXN1bHRzKCkKQEAgLTE5MSwxNyArMjE1LDM0IEBACiB9CiAKIHZvaWQgU3R5
bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQoVmVjdG9yPFVDaGFyPiYgb3V0LCBUZXh0
KiB0ZXh0KQotewotICAgIGlmICghc2hvdWxkQW5ub3RhdGUoKSB8fCAodGV4dC0+cGFyZW50RWxl
bWVudCgpICYmIHRleHQtPnBhcmVudEVsZW1lbnQoKS0+dGFnUU5hbWUoKSA9PSB0ZXh0YXJlYVRh
ZykpIHsKK3sgICAgCisgICAgYm9vbCBwYXJlbnRJc1RleHRhcmVhID0gdGV4dC0+cGFyZW50RWxl
bWVudCgpICYmIHRleHQtPnBhcmVudEVsZW1lbnQoKS0+dGFnUU5hbWUoKSA9PSB0ZXh0YXJlYVRh
ZzsKKyAgICBib29sIHdyYXBwaW5nU3BhbiA9IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSh0ZXh0
KSAmJiAhcGFyZW50SXNUZXh0YXJlYTsKKyAgICBpZiAod3JhcHBpbmdTcGFuKSB7CisgICAgICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IHdyYXBwaW5nU3R5bGUgPSBtX3dyYXBwaW5nU3R5bGUtPmNv
cHkoKTsKKyAgICAgICAgLy8gPHJkYXI6Ly9wcm9ibGVtLzUzNzE1MzY+CisgICAgICAgIC8vIE1h
a2Ugc3VyZSBzcGFucyBhcmUgaW5saW5lIHN0eWxlIGluIHBhc3RlIHNpZGUgZS5nLiBzcGFuIHsg
ZGlzcGxheTogYmxvY2sgfQorICAgICAgICB3cmFwcGluZ1N0eWxlLT5mb3JjZUlubGluZSgpOwor
ICAgICAgICAvLyBGSVhNRTogc2hvdWxkIHRoaXMgYmUgaW5jbHVkZWQgaW4gZm9yY2VJbmxpbmU/
CisgICAgICAgIHdyYXBwaW5nU3R5bGUtPnN0eWxlKCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
RmxvYXQsIENTU1ZhbHVlTm9uZSk7CisKKyAgICAgICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOwor
ICAgICAgICBhcHBlbmRTdHlsZU5vZGVPcGVuVGFnKG9wZW5UYWcsIHdyYXBwaW5nU3R5bGUtPnN0
eWxlKCksIHRleHQtPmRvY3VtZW50KCkpOworICAgICAgICBhcHBlbmQob3V0LCBTdHJpbmc6OmFk
b3B0KG9wZW5UYWcpKTsKKyAgICB9CisKKyAgICBpZiAoIXNob3VsZEFubm90YXRlKCkgfHwgcGFy
ZW50SXNUZXh0YXJlYSkKICAgICAgICAgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQob3V0
LCB0ZXh0KTsKLSAgICAgICAgcmV0dXJuOworICAgIGVsc2UgeworICAgICAgICBib29sIHVzZVJl
bmRlcmVkVGV4dCA9ICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKHRl
eHQpLCBzZWxlY3RUYWcpOworICAgICAgICBTdHJpbmcgY29udGVudCA9IHVzZVJlbmRlcmVkVGV4
dCA/IHJlbmRlcmVkVGV4dCh0ZXh0LCBtX3JhbmdlKSA6IHN0cmluZ1ZhbHVlRm9yUmFuZ2UodGV4
dCwgbV9yYW5nZSk7CisgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOworICAgICAgICBhcHBl
bmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoYnVmZmVyLCBjb250ZW50LmNoYXJhY3RlcnMo
KSwgY29udGVudC5sZW5ndGgoKSwgRW50aXR5TWFza0luUENEQVRBKTsKKyAgICAgICAgYXBwZW5k
KG91dCwgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChTdHJpbmc6OmFkb3B0KGJ1
ZmZlciksIHRleHQpKTsKICAgICB9CiAKLSAgICBib29sIHVzZVJlbmRlcmVkVGV4dCA9ICFlbmNs
b3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKHRleHQpLCBzZWxlY3RUYWcpOwot
ICAgIFN0cmluZyBjb250ZW50ID0gdXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRleHQs
IG1fcmFuZ2UpIDogc3RyaW5nVmFsdWVGb3JSYW5nZSh0ZXh0LCBtX3JhbmdlKTsKLSAgICBWZWN0
b3I8VUNoYXI+IGJ1ZmZlcjsKLSAgICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMo
YnVmZmVyLCBjb250ZW50LmNoYXJhY3RlcnMoKSwgY29udGVudC5sZW5ndGgoKSwgRW50aXR5TWFz
a0luUENEQVRBKTsKLSAgICBhcHBlbmQob3V0LCBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdl
Rm9ybWF0KFN0cmluZzo6YWRvcHQoYnVmZmVyKSwgdGV4dCkpOworICAgIGlmICh3cmFwcGluZ1Nw
YW4pCisgICAgICAgIGFwcGVuZChvdXQsIHN0eWxlTm9kZUNsb3NlVGFnKCkpOwogfQogICAgIAog
U3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpyZW5kZXJlZFRleHQoY29uc3QgTm9kZSog
bm9kZSwgY29uc3QgUmFuZ2UqIHJhbmdlKQpAQCAtMjQ1LDMwICsyODYsNDcgQEAKIAogICAgIE5h
bWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGVsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAgICB1bnNp
Z25lZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsKKyAgICBib29sIHNob3VsZEFubm90
YXRlT3JGb3JjZUlubGluZSA9IGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5u
b3RhdGUoKSB8fCBhZGREaXNwbGF5SW5saW5lKTsKKyAgICBib29sIHNob3VsZE92ZXJyaWRlU3R5
bGVBdHRyID0gc2hvdWxkQW5ub3RhdGVPckZvcmNlSW5saW5lIHx8IHNob3VsZEFwcGx5V3JhcHBp
bmdTdHlsZShlbGVtZW50KTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxlbmd0
aDsgaSsrKSB7CiAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRlcy0+YXR0
cmlidXRlSXRlbShpKTsKICAgICAgICAgLy8gV2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBhdHRyaWJ1
dGUgc2VwYXJhdGVseSwgYmVsb3cuCi0gICAgICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSA9PSBz
dHlsZUF0dHIgJiYgZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgp
IHx8IGFkZERpc3BsYXlJbmxpbmUpKQorICAgICAgICBpZiAoYXR0cmlidXRlLT5uYW1lKCkgPT0g
c3R5bGVBdHRyICYmIHNob3VsZE92ZXJyaWRlU3R5bGVBdHRyKQogICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZShvdXQsIGVsZW1lbnQsICphdHRyaWJ1dGUsIDAp
OwogICAgIH0KIAotICAgIGlmIChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFu
bm90YXRlKCkgfHwgYWRkRGlzcGxheUlubGluZSkpIHsKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdT
dHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSh0b0hUTUxFbGVtZW50KGVsZW1lbnQp
LT5nZXRJbmxpbmVTdHlsZURlY2woKSk7Ci0gICAgICAgIGlmIChzaG91bGRBbm5vdGF0ZSgpKQot
ICAgICAgICAgICAgc3R5bGUtPm1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKHRv
SFRNTEVsZW1lbnQoZWxlbWVudCkpOwotICAgICAgICBpZiAoYWRkRGlzcGxheUlubGluZSkKLSAg
ICAgICAgICAgIHN0eWxlLT5zdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXks
IENTU1ZhbHVlSW5saW5lLCB0cnVlKTsKKyAgICBpZiAoc2hvdWxkT3ZlcnJpZGVTdHlsZUF0dHIp
IHsKKyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbmV3SW5saW5lU3R5bGU7CiAKLSAgICAg
ICAgLy8gSWYgdGhlIG5vZGUgaXMgbm90IGZ1bGx5IHNlbGVjdGVkIGJ5IHRoZSByYW5nZSwgdGhl
biB3ZSBkb24ndCB3YW50IHRvIGtlZXAgc3R5bGVzIHRoYXQgYWZmZWN0IGl0cyByZWxhdGlvbnNo
aXAgdG8gdGhlIG5vZGVzIGFyb3VuZCBpdAotICAgICAgICAvLyBvbmx5IHRoZSBvbmVzIHRoYXQg
YWZmZWN0IGl0IGFuZCB0aGUgbm9kZXMgd2l0aGluIGl0LgotICAgICAgICBpZiAocmFuZ2VGdWxs
eVNlbGVjdHNOb2RlID09IERvZXNOb3RGdWxseVNlbGVjdE5vZGUpCi0gICAgICAgICAgICBzdHls
ZS0+c3R5bGUoKS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCk7CisgICAgICAgIGlm
IChzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxlbWVudCkpIHsKKyAgICAgICAgICAgIG5ld0lu
bGluZVN0eWxlID0gbV93cmFwcGluZ1N0eWxlLT5jb3B5KCk7CisgICAgICAgICAgICAvLyBKdXN0
IHJlbW92aW5nIGNvbmZsaWN0aW5nIHN0eWxlIGlzbid0IGVub3VnaCBiZWNhdXNlIHJ1bGVzIHN1
Y2ggYXMgY29sb3I6IGJ1dHRvbnRleHQgd29uJ3QgYmUgcmVtb3ZlZAorICAgICAgICAgICAgbmV3
SW5saW5lU3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoZWxlbWVu
dCk7CisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dp
dGhTdHlsZU9mTm9kZShlbGVtZW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuZXdJ
bmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CiAKLSAgICAgICAgaWYgKCFzdHls
ZS0+aXNFbXB0eSgpKSB7CisgICAgICAgIGlmIChlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAm
JiBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCktPmlubGluZVN0eWxlRGVjbCgp
KQorICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPm92ZXJyaWRlV2l0aFN0eWxlKHN0YXRpY19j
YXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+aW5saW5lU3R5bGVEZWNsKCkpOworCisgICAg
ICAgIGlmIChzaG91bGRBbm5vdGF0ZU9yRm9yY2VJbmxpbmUpIHsKKyAgICAgICAgICAgIGlmIChz
aG91bGRBbm5vdGF0ZSgpKQorICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5tZXJnZVN0
eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbih0b0hUTUxFbGVtZW50KGVsZW1lbnQpKTsKKwor
ICAgICAgICAgICAgaWYgKGFkZERpc3BsYXlJbmxpbmUpCisgICAgICAgICAgICAgICAgbmV3SW5s
aW5lU3R5bGUtPmZvcmNlSW5saW5lKCk7CisKKyAgICAgICAgICAgIC8vIElmIHRoZSBub2RlIGlz
IG5vdCBmdWxseSBzZWxlY3RlZCBieSB0aGUgcmFuZ2UsIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBr
ZWVwIHN0eWxlcyB0aGF0IGFmZmVjdCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBub2RlcyBhcm91
bmQgaXQKKyAgICAgICAgICAgIC8vIG9ubHkgdGhlIG9uZXMgdGhhdCBhZmZlY3QgaXQgYW5kIHRo
ZSBub2RlcyB3aXRoaW4gaXQuCisgICAgICAgICAgICBpZiAocmFuZ2VGdWxseVNlbGVjdHNOb2Rl
ID09IERvZXNOb3RGdWxseVNlbGVjdE5vZGUgJiYgbmV3SW5saW5lU3R5bGUtPnN0eWxlKCkpCisg
ICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPnJlbW92ZVByb3BlcnR5KENT
U1Byb3BlcnR5RmxvYXQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFuZXdJbmxpbmVTdHls
ZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgc3R5bGVQcmVmaXgsICgiIHN0eWxlPVwiIikpOwogICAgICAgICAgICAgYXBwZW5kKG91
dCwgc3R5bGVQcmVmaXgpOwotICAgICAgICAgICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3V0LCBz
dHlsZS0+c3R5bGUoKS0+Y3NzVGV4dCgpLCBkb2N1bWVudElzSFRNTCk7CisgICAgICAgICAgICBh
cHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQsIG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0
KCksIGRvY3VtZW50SXNIVE1MKTsKICAgICAgICAgICAgIG91dC5hcHBlbmQoJ1wiJyk7CiAgICAg
ICAgIH0KICAgICB9CkBAIC0yNzgsNiArMzM2LDI5IEBACiAKIE5vZGUqIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjpzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQp
CiB7CisgICAgaWYgKCFtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpIHsKKyAgICAgICAgTm9k
ZSogbGFzdENsb3NlZCA9IHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKHN0YXJ0Tm9kZSwg
cGFzdEVuZCwgZmFsc2UpOworICAgICAgICBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSBs
YXN0Q2xvc2VkOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBwYXJlbnRPZkhpZ2hlc3ROb2RlID0g
bV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID8gbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVk
LT5wYXJlbnROb2RlKCkgOiAwOworICAgIGlmIChwYXJlbnRPZkhpZ2hlc3ROb2RlKSB7CisgICAg
ICAgIG1fd3JhcHBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBhcmVudE9mSGlnaGVz
dE5vZGUsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0luaGVyaXRhYmxlUHJvcGVydGllc0FuZEJhY2tn
cm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAgICAvLyBTdHlsZXMgdGhhdCBNYWlsIGJsb2Nr
cXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcGxhY2VkIG9uIHRoZSBNYWlsIGJsb2Nr
cXVvdGUsCisgICAgICAgIC8vIHRvIGhlbHAgdXMgZGlmZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMg
ZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxpZWQuCisgICAgICAgIC8vIFRoaXMgaGVs
cHMgdXMgZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJp
Z2h0LgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPnJlbW92ZVN0eWxlQWRkZWRCeU5vZGUoZW5j
bG9zaW5nTm9kZU9mVHlwZShmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50T2ZIaWdo
ZXN0Tm9kZSksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7CisK
KyAgICAgICAgLy8gQ2FsbCBjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyBmaXJzdCBv
ciBvdGhlcndpc2UgaXQnbGwgY29weSB0aGUgdmFsdWUgb3ZlciBmcm9tIGluLWVmZmVjdCB0byB0
ZXh0LWRlY29yYXRpb25zLgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPmNvbGxhcHNlVGV4dERl
Y29yYXRpb25Qcm9wZXJ0aWVzKCk7CisgICAgfQorCisgICAgcmV0dXJuIHRyYXZlcnNlTm9kZXNG
b3JTZXJpYWxpemF0aW9uKHN0YXJ0Tm9kZSwgcGFzdEVuZCwgdHJ1ZSk7Cit9CisKK05vZGUqIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihOb2Rl
KiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQsIGJvb2wgc2hvdWxkRW1pdCkKK3sKICAgICBWZWN0
b3I8Tm9kZSo+IGFuY2VzdG9yc1RvQ2xvc2U7CiAgICAgTm9kZSogbmV4dDsKICAgICBOb2RlKiBs
YXN0Q2xvc2VkID0gMDsKQEAgLTMwNCwxMSArMzg1LDEzIEBACiAgICAgICAgICAgICAgICAgbmV4
dCA9IHBhc3RFbmQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBBZGQgdGhlIG5v
ZGUgdG8gdGhlIG1hcmt1cCBpZiB3ZSdyZSBub3Qgc2tpcHBpbmcgdGhlIGRlc2NlbmRhbnRzCi0g
ICAgICAgICAgICBhcHBlbmRTdGFydFRhZyhuKTsKKyAgICAgICAgICAgIGlmIChzaG91bGRFbWl0
KQorICAgICAgICAgICAgICAgIGFwcGVuZFN0YXJ0VGFnKG4pOwogCiAgICAgICAgICAgICAvLyBJ
ZiBub2RlIGhhcyBubyBjaGlsZHJlbiwgY2xvc2UgdGhlIHRhZyBub3cuCiAgICAgICAgICAgICBp
ZiAoIW4tPmNoaWxkTm9kZUNvdW50KCkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWco
bik7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAgICAgICAgICAgICAg
IGFwcGVuZEVuZFRhZyhuKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0gbjsKICAgICAg
ICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgb3BlbmVkVGFnID0gdHJ1ZTsKQEAgLTMy
NSw3ICs0MDgsOCBAQAogICAgICAgICAgICAgICAgIGlmIChuZXh0ICE9IHBhc3RFbmQgJiYgbmV4
dC0+aXNEZXNjZW5kYW50T2YoYW5jZXN0b3IpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsK
ICAgICAgICAgICAgICAgICAvLyBOb3QgYXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIGNsb3NlIGFu
Y2VzdG9ycyB1cCB0byBzaWJsaW5nIG9mIG5leHQgbm9kZS4KLSAgICAgICAgICAgICAgICBhcHBl
bmRFbmRUYWcoYW5jZXN0b3IpOworICAgICAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAg
ICAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWcoYW5jZXN0b3IpOwogICAgICAgICAgICAgICAg
IGxhc3RDbG9zZWQgPSBhbmNlc3RvcjsKICAgICAgICAgICAgICAgICBhbmNlc3RvcnNUb0Nsb3Nl
LnJlbW92ZUxhc3QoKTsKICAgICAgICAgICAgIH0KQEAgLTM0MCw3ICs0MjQsOCBAQAogICAgICAg
ICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgICAgIC8vIG9yIGIp
IGFuY2VzdG9ycyB0aGF0IHdlIG5ldmVyIGVuY291bnRlcmVkIGR1cmluZyBhIHByZS1vcmRlciB0
cmF2ZXJzYWwgc3RhcnRpbmcgYXQgc3RhcnROb2RlOgogICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoc3RhcnROb2RlLT5pc0Rlc2NlbmRhbnRPZihwYXJlbnQpKTsKLSAgICAgICAgICAgICAgICAg
ICAgd3JhcFdpdGhOb2RlKHBhcmVudCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRF
bWl0KQorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFdpdGhOb2RlKHBhcmVudCk7CiAgICAg
ICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBwYXJlbnQ7CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQpAQCAtNTEzLDcgKzU5OCwxMyBAQAogCiAgICAgZG9jdW1lbnQtPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgU3R5bGVkTWFya3VwQWNj
dW11bGF0b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCBzaG91bGRBbm5v
dGF0ZSwgdXBkYXRlZFJhbmdlLmdldCgpKTsKKyAgICBOb2RlKiBib2R5ID0gZW5jbG9zaW5nTm9k
ZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNlc3RvciksIGJvZHlUYWcpOwor
ICAgIE5vZGUqIGZ1bGx5U2VsZWN0ZWRSb290ID0gMDsKKyAgICAvLyBGSVhNRTogRG8gdGhpcyBm
b3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90IGp1c3QgdGhlIGJvZHkuCisgICAgaWYg
KGJvZHkgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNv
bnRlbnRzT2ZOb2RlKGJvZHkpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHJhbmdlKSkKKyAg
ICAgICAgZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5OworICAgIE5vZGUqIHNwZWNpYWxDb21tb25B
bmNlc3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCks
IGZ1bGx5U2VsZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0ZSk7CisgICAgU3R5bGVkTWFya3VwQWNj
dW11bGF0b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCBzaG91bGRBbm5v
dGF0ZSwgdXBkYXRlZFJhbmdlLmdldCgpLCBzcGVjaWFsQ29tbW9uQW5jZXN0b3IpOwogICAgIE5v
ZGUqIHBhc3RFbmQgPSB1cGRhdGVkUmFuZ2UtPnBhc3RMYXN0Tm9kZSgpOwogCiAgICAgTm9kZSog
c3RhcnROb2RlID0gdXBkYXRlZFJhbmdlLT5maXJzdE5vZGUoKTsKQEAgLTUzOSwxNCArNjMwLDYg
QEAKICAgICAgICAgQVNTRVJUKCFlYyk7CiAgICAgfQogCi0gICAgTm9kZSogYm9keSA9IGVuY2xv
c2luZ05vZGVXaXRoVGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUoY29tbW9uQW5jZXN0b3IpLCBib2R5
VGFnKTsKLSAgICBOb2RlKiBmdWxseVNlbGVjdGVkUm9vdCA9IDA7Ci0gICAgLy8gRklYTUU6IERv
IHRoaXMgZm9yIGFsbCBmdWxseSBzZWxlY3RlZCBibG9ja3MsIG5vdCBqdXN0IHRoZSBib2R5Lgot
ICAgIGlmIChib2R5ICYmIGFyZVJhbmdlc0VxdWFsKFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlv
bkZyb21Db250ZW50c09mTm9kZShib2R5KS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCByYW5n
ZSkpCi0gICAgICAgIGZ1bGx5U2VsZWN0ZWRSb290ID0gYm9keTsKLQotICAgIE5vZGUqIHNwZWNp
YWxDb21tb25BbmNlc3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCh1cGRhdGVkUmFu
Z2UuZ2V0KCksIGZ1bGx5U2VsZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0ZSk7Ci0KICAgICBOb2Rl
KiBsYXN0Q2xvc2VkID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoc3RhcnROb2RlLCBwYXN0
RW5kKTsKIAogICAgIGlmIChzcGVjaWFsQ29tbW9uQW5jZXN0b3IgJiYgbGFzdENsb3NlZCkgewpA
QCAtNTg2LDIwICs2NjksNiBAQAogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gQWRkIGEgd3Jh
cHBlciBzcGFuIHdpdGggdGhlIHN0eWxlcyB0aGF0IGFsbCBvZiB0aGUgbm9kZXMgaW4gdGhlIG1h
cmt1cCBpbmhlcml0LgotICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9mTGFzdENsb3NlZCA9IGxh
c3RDbG9zZWQgPyBsYXN0Q2xvc2VkLT5wYXJlbnROb2RlKCkgOiAwOwotICAgIGlmIChwYXJlbnRP
Zkxhc3RDbG9zZWQgJiYgcGFyZW50T2ZMYXN0Q2xvc2VkLT5yZW5kZXJlcigpKSB7Ci0gICAgICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocGFyZW50
T2ZMYXN0Q2xvc2VkLCBFZGl0aW5nU3R5bGU6OkVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNB
bmRCYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk7Ci0KLSAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFp
bCBibG9ja3F1b3RlcyBjb250cmlidXRlIHNob3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFp
bCBibG9ja3F1b3RlLCB0byBoZWxwCi0gICAgICAgIC8vIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ug
c3R5bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1c2VyIGhhcyBhcHBsaWVkLiAgVGhpcyBoZWxwcyB1
cwotICAgICAgICAvLyBnZXQgdGhlIGNvbG9yIG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2tx
dW90ZXMgcmlnaHQuCi0gICAgICAgIHN0eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xv
c2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlvbkluTm9kZShwYXJlbnRPZkxhc3RDbG9zZWQpLCBp
c01haWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpOwotCi0gICAgICAgIGlm
ICghc3R5bGUtPmlzRW1wdHkoKSkKLSAgICAgICAgICAgIGFjY3VtdWxhdG9yLndyYXBXaXRoU3R5
bGVOb2RlKHN0eWxlLT5zdHlsZSgpLCBkb2N1bWVudCk7Ci0gICAgfQotCiAgICAgLy8gRklYTUU6
IFRoZSBpbnRlcmNoYW5nZSBuZXdsaW5lIHNob3VsZCBiZSBwbGFjZWQgaW4gdGhlIGJsb2NrIHRo
YXQgaXQncyBpbiwgbm90IGFmdGVyIGFsbCBvZiB0aGUgY29udGVudCwgdW5jb25kaXRpb25hbGx5
LgogICAgIGlmIChzaG91bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlICYmIG5l
ZWRJbnRlcmNoYW5nZU5ld2xpbmVBZnRlcih2aXNpYmxlRW5kLnByZXZpb3VzKCkpKQogICAgICAg
ICBhY2N1bXVsYXRvci5hcHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHJldmlzaW9uIDg3OTg3
KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC01NTQsNyArNTU0LDEwIEBACiAgICAgaWYgKCF0ZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0aW9uc0luRWZmZWN0LT5jc3NUZXh0
KCksIG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KENTU1Byb3BlcnR5VGV4dERl
Y29yYXRpb24pKTsKKyAgICBpZiAodGV4dERlY29yYXRpb25zSW5FZmZlY3QtPmlzVmFsdWVMaXN0
KCkpCisgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRE
ZWNvcmF0aW9uLCB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdC0+Y3NzVGV4dCgpLCBtX211dGFibGVT
dHlsZS0+Z2V0UHJvcGVydHlQcmlvcml0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSk7Cisg
ICAgZWxzZQorICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVy
dHlUZXh0RGVjb3JhdGlvbik7CiAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENT
U1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOwogfQogCkBAIC04MTgsMTEg
KzgyMSwxMCBAQAogICAgIH0KIH0KIAotc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxl
RGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZWxl
bWVudCkKK3N0YXRpYyBQYXNzUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHls
ZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIGZp
bHRlcikKIHsKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlID0g
Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOwotICAgIFJlZlB0cjxDU1NSdWxl
TGlzdD4gbWF0Y2hlZFJ1bGVzID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+c3R5bGVTZWxlY3Rvcigp
LT5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LAotICAgICAgICBDU1NTdHlsZVNlbGVjdG9y
OjpBdXRob3JDU1NSdWxlcyB8IENTU1N0eWxlU2VsZWN0b3I6OkNyb3NzT3JpZ2luQ1NTUnVsZXMp
OworICAgIFJlZlB0cjxDU1NSdWxlTGlzdD4gbWF0Y2hlZFJ1bGVzID0gZWxlbWVudC0+ZG9jdW1l
bnQoKS0+c3R5bGVTZWxlY3RvcigpLT5zdHlsZVJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBmaWx0
ZXIpOwogICAgIGlmIChtYXRjaGVkUnVsZXMpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IG1hdGNoZWRSdWxlcy0+bGVuZ3RoKCk7IGkrKykgewogICAgICAgICAgICAgaWYgKG1h
dGNoZWRSdWxlcy0+aXRlbShpKS0+dHlwZSgpID09IENTU1J1bGU6OlNUWUxFX1JVTEUpIHsKQEAg
LTgzNyw3ICs4MzksOCBAQAogCiB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxl
cyhTdHlsZWRFbGVtZW50KiBlbGVtZW50KQogewotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVz
Rm9yRWxlbWVudChlbGVtZW50KTsKKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1l
bnQoZWxlbWVudCwKKyAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6QXV0aG9yQ1NTUnVsZXMgfCBD
U1NTdHlsZVNlbGVjdG9yOjpDcm9zc09yaWdpbkNTU1J1bGVzKTsKICAgICAvLyBTdHlsZXMgZnJv
bSB0aGUgaW5saW5lIHN0eWxlIGRlY2xhcmF0aW9uLCBoZWxkIGluIHRoZSB2YXJpYWJsZSAic3R5
bGUiLCB0YWtlIHByZWNlZGVuY2UgCiAgICAgLy8gb3ZlciB0aG9zZSBmcm9tIG1hdGNoZWQgcnVs
ZXMuCiAgICAgaWYgKG1fbXV0YWJsZVN0eWxlKQpAQCAtODcwLDE4ICs4NzMsNTggQEAKICAgICBt
X211dGFibGVTdHlsZS0+bWVyZ2UoZnJvbUNvbXB1dGVkU3R5bGUuZ2V0KCkpOwogfQogCi12b2lk
IEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxlbWVudCogZWxlbWVu
dCkKK3ZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5
bGVkRWxlbWVudCogZWxlbWVudCwgTm9kZSogY29udGV4dCkKIHsKKyAgICBBU1NFUlQoZWxlbWVu
dCk7CiAgICAgaWYgKCFtX211dGFibGVTdHlsZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUZyb21NYXRjaGVkUnVsZXMgPSBz
dHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQpOwotICAgIGlmICghc3R5bGVG
cm9tTWF0Y2hlZFJ1bGVzKQorICAgIC8vIDEuIFJlbW92ZSBzdHlsZSBmcm9tIG1hdGNoZWQgcnVs
ZXMgYmVjYXVzZSBzdHlsZSByZW1haW4gd2l0aG91dCByZXBlYXRpbmcgaXQgaW4gaW5saW5lIHN0
eWxlIGRlY2xhcmF0aW9uCisgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBz
dHlsZUZyb21NYXRjaGVkUnVsZXMgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KGVs
ZW1lbnQsIENTU1N0eWxlU2VsZWN0b3I6OkFsbEJ1dEVtcHR5Q1NTUnVsZXMpOworICAgIGlmIChz
dHlsZUZyb21NYXRjaGVkUnVsZXMgJiYgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLT5sZW5ndGgoKSkK
KyAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4obV9tdXRhYmxlU3R5
bGUuZ2V0KCksIHN0eWxlRnJvbU1hdGNoZWRSdWxlcy5nZXQoKSk7CisKKyAgICAvLyAyLiBSZW1v
dmUgc3R5bGUgcHJlc2VudCBpbiBjb250ZXh0IGFuZCBub3Qgb3ZlcnJpZGVuIGJ5IG1hdGNoZWQg
cnVsZXMuCisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gY29tcHV0ZWRTdHlsZSA9IEVkaXRpbmdT
dHlsZTo6Y3JlYXRlKGNvbnRleHQsIEVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNr
Z3JvdW5kQ29sb3JJbkVmZmVjdCk7CisgICAgaWYgKGNvbXB1dGVkU3R5bGUtPm1fbXV0YWJsZVN0
eWxlKSB7CisgICAgICAgIGNvbXB1dGVkU3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnRE
ZWZhdWx0U3R5bGUoZWxlbWVudCk7CisgICAgICAgIG1fbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVy
dGllc05vdEluKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBjb21wdXRlZFN0eWxlLT5tX211dGFibGVT
dHlsZS5nZXQoKSk7CisgICAgfQorCisgICAgLy8gMy4gSWYgdGhpcyBlbGVtZW50IGlzIGEgc3Bh
biBhbmQgaGFzIGRpc3BsYXk6IGlubGluZSBvciBmbG9hdDogbm9uZSwgcmVtb3ZlIHRoZW0gdW5s
ZXNzIHRoZXkgYXJlIG92ZXJyaWRlbiBieSBydWxlcy4KKyAgICAvLyBUaGVzZSBydWxlcyBhcmUg
YWRkZWQgYnkgc2VyaWFsaXphdGlvbiBjb2RlIHRvIHdyYXAgdGV4dCBub2Rlcy4KKyAgICBpZiAo
aXNTdHlsZVNwYW4oZWxlbWVudCkpIHsKKyAgICAgICAgaWYgKCFzdHlsZUZyb21NYXRjaGVkUnVs
ZXMtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlEaXNwbGF5KSAmJiBnZXRJZGVudGlm
aWVyVmFsdWUobV9tdXRhYmxlU3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5RGlzcGxheSkgPT0gQ1NT
VmFsdWVJbmxpbmUpCisgICAgICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHko
Q1NTUHJvcGVydHlEaXNwbGF5KTsKKyAgICAgICAgaWYgKCFzdHlsZUZyb21NYXRjaGVkUnVsZXMt
PmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGbG9hdCkgJiYgZ2V0SWRlbnRpZmllclZh
bHVlKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eUZsb2F0KSA9PSBDU1NWYWx1ZU5v
bmUpCisgICAgICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVy
dHlGbG9hdCk7CisgICAgfQorfQorCit2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlUHJvcGVydGll
c0luRWxlbWVudERlZmF1bHRTdHlsZShFbGVtZW50KiBlbGVtZW50KQoreworICAgIGlmICghbV9t
dXRhYmxlU3R5bGUgfHwgIW1fbXV0YWJsZVN0eWxlLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgbV9tdXRhYmxlU3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4obV9tdXRhYmxlU3R5
bGUuZ2V0KCksIHN0eWxlRnJvbU1hdGNoZWRSdWxlcy5nZXQoKSk7CisgICAgUmVmUHRyPENTU011
dGFibGVTdHlsZURlY2xhcmF0aW9uPiBkZWZhdWx0U3R5bGUgPSBzdHlsZUZyb21NYXRjaGVkUnVs
ZXNGb3JFbGVtZW50KGVsZW1lbnQsIENTU1N0eWxlU2VsZWN0b3I6OlVBQW5kVXNlckNTU1J1bGVz
KTsKKworICAgIFZlY3RvcjxpbnQ+IHByb3BlcnRpZXNUb1JlbW92ZShkZWZhdWx0U3R5bGUtPmxl
bmd0aCgpKTsKKyAgICBzaXplX3QgaSA9IDA7CisgICAgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b246OmNvbnN0X2l0ZXJhdG9yIGVuZCA9IGRlZmF1bHRTdHlsZS0+ZW5kKCk7CisgICAgZm9yIChD
U1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBkZWZhdWx0U3R5
bGUtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCwgKytpKQorICAgICAgICBwcm9wZXJ0aWVzVG9S
ZW1vdmVbaV0gPSBpdC0+aWQoKTsKKworICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0
aWVzSW5TZXQocHJvcGVydGllc1RvUmVtb3ZlLmRhdGEoKSwgcHJvcGVydGllc1RvUmVtb3ZlLnNp
emUoKSk7CiB9CiAKK3ZvaWQgRWRpdGluZ1N0eWxlOjpmb3JjZUlubGluZSgpCit7CisgICAgaWYg
KCFtX211dGFibGVTdHlsZSkKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUgPSBDU1NNdXRhYmxlU3R5
bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uc3QgYm9vbCBwcm9wZXJ0eUlzSW1wb3J0
YW50ID0gdHJ1ZTsKKyAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlE
aXNwbGF5LCBDU1NWYWx1ZUlubGluZSwgcHJvcGVydHlJc0ltcG9ydGFudCk7Cit9CisKIHN0YXRp
YyB2b2lkIHJlY29uY2lsZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyhDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUpCiB7ICAgIAogICAgIFJlZlB0cjxDU1NWYWx1ZT4gdGV4dERlY29y
YXRpb25zSW5FZmZlY3QgPSBzdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVdl
YmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKQEAgLTEwODQsMTMgKzExMjcsMTMgQEAKICAg
ICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVydHlUZXh0RGVjb3Jh
dGlvbiwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsKICAgICBkaWZmVGV4dERl
Y29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJ
bkVmZmVjdCwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsKIAotICAgIGlmIChm
b250V2VpZ2h0SXNCb2xkKHJlc3VsdC5nZXQoKSkgPT0gZm9udFdlaWdodElzQm9sZChiYXNlU3R5
bGUpKQorICAgIGlmIChiYXNlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlG
b250U2l6ZSkgJiYgZm9udFdlaWdodElzQm9sZChyZXN1bHQuZ2V0KCkpID09IGZvbnRXZWlnaHRJ
c0JvbGQoYmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9w
ZXJ0eUZvbnRXZWlnaHQpOwogCi0gICAgaWYgKGdldFJHQkFGb250Q29sb3IocmVzdWx0LmdldCgp
KSA9PSBnZXRSR0JBRm9udENvbG9yKGJhc2VTdHlsZSkpCisgICAgaWYgKGJhc2VTdHlsZS0+Z2V0
UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSAmJiBnZXRSR0JBRm9udENvbG9yKHJl
c3VsdC5nZXQoKSkgPT0gZ2V0UkdCQUZvbnRDb2xvcihiYXNlU3R5bGUpKQogICAgICAgICByZXN1
bHQtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IpOwogCi0gICAgaWYgKGdldFRleHRB
bGlnbm1lbnQocmVzdWx0LmdldCgpKSA9PSBnZXRUZXh0QWxpZ25tZW50KGJhc2VTdHlsZSkpCisg
ICAgaWYgKGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVRleHRBbGln
bikgJiYgZ2V0VGV4dEFsaWdubWVudChyZXN1bHQuZ2V0KCkpID09IGdldFRleHRBbGlnbm1lbnQo
YmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRl
eHRBbGlnbik7CiAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9odG1sZWRpdGluZy5jcHAJKHJldmlzaW9uIDg3OTg3KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9odG1sZWRpdGluZy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwOCwxMSArNjA4LDExIEBA
CiAgICAgcmV0dXJuIDA7CiB9CiAKLU5vZGUqIGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGNv
bnN0IFBvc2l0aW9uJiBwLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25zdCBOb2RlKiksIEVkaXRp
bmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKQorTm9kZSogaGlnaGVzdEVuY2xvc2luZ05vZGVP
ZlR5cGUoY29uc3QgUG9zaXRpb24mIHAsIGJvb2wgKCpub2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUq
KSwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUsIE5vZGUqIHN0YXlXaXRoaW4pCiB7
CiAgICAgTm9kZSogaGlnaGVzdCA9IDA7CiAgICAgTm9kZSogcm9vdCA9IHJ1bGUgPT0gQ2Fubm90
Q3Jvc3NFZGl0aW5nQm91bmRhcnkgPyBoaWdoZXN0RWRpdGFibGVSb290KHApIDogMDsKLSAgICBm
b3IgKE5vZGUqIG4gPSBwLmNvbnRhaW5lck5vZGUoKTsgbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkg
eworICAgIGZvciAoTm9kZSogbiA9IHAuY29udGFpbmVyTm9kZSgpOyBuICYmIG4gIT0gc3RheVdp
dGhpbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAocm9vdCAmJiAhbi0+cmVu
ZGVyZXJJc0VkaXRhYmxlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKG5v
ZGVJc09mVHlwZShuKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlzaW9uIDg3OTg3KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw4
ICs3OCw2IEBACiAgICAgdm9pZCByZW1vdmVVbnJlbmRlcmVkVGV4dE5vZGVzQXRFbmRzKCk7CiAg
ICAgCiAgICAgdm9pZCByZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5l
KCk7Ci0gICAgdm9pZCBoYW5kbGVTdHlsZVNwYW5zKCk7Ci0gICAgdm9pZCBjb3B5U3R5bGVUb0No
aWxkcmVuKE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
KiBwYXJlbnRTdHlsZSk7CiAgICAgdm9pZCBoYW5kbGVQYXN0ZUFzUXVvdGF0aW9uTm9kZSgpOwog
ICAgIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKE5vZGUq
KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAkocmV2aXNpb24gODc5
ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC00Nyw2ICs0Nyw3IEBACiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIGNsYXNzIENT
U1ZhbHVlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTEVsZW1l
bnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgUG9zaXRpb247CkBAIC0xMjIsNyArMTIzLDkgQEAKICAg
ICB2b2lkIG1lcmdlSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCopOwogICAgIHZv
aWQgbWVyZ2VTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50Kik7CiAgICAgdm9pZCBtZXJnZVN0
eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50Kik7Ci0gICAgdm9pZCBy
ZW1vdmVTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVTdHls
ZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVudCosIE5vZGUqIGNvbnRleHQpOworICAg
IHZvaWQgcmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1bHRTdHlsZShFbGVtZW50Kik7Cisg
ICAgdm9pZCBmb3JjZUlubGluZSgpOwogCiAgICAgZmxvYXQgZm9udFNpemVEZWx0YSgpIGNvbnN0
IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YTsgfQogICAgIGJvb2wgaGFzRm9udFNpemVEZWx0YSgp
IGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YSAhPSBOb0ZvbnREZWx0YTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAkocmV2aXNpb24gODc5ODcpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDcg
KzU0LDcgQEAKIAogTm9kZSogaGlnaGVzdEFuY2VzdG9yKE5vZGUqKTsKIE5vZGUqIGhpZ2hlc3RF
ZGl0YWJsZVJvb3QoY29uc3QgUG9zaXRpb24mKTsKLU5vZGUqIGhpZ2hlc3RFbmNsb3NpbmdOb2Rl
T2ZUeXBlKGNvbnN0IFBvc2l0aW9uJiwgYm9vbCAoKm5vZGVJc09mVHlwZSkoY29uc3QgTm9kZSop
LCBFZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFy
eSk7CitOb2RlKiBoaWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlvbiYsIGJv
b2wgKCpub2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUqKSwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdS
dWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnksIE5vZGUqIHN0YXlXaXRoaW4gPSAwKTsK
IE5vZGUqIGxvd2VzdEVkaXRhYmxlQW5jZXN0b3IoTm9kZSopOyAgIAogCiBOb2RlKiBlbmNsb3Np
bmdCbG9jayhOb2RlKiwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NF
ZGl0aW5nQm91bmRhcnkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkocmV2aXNpb24gODc5ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMjEsNyArMjAyMSw3IEBACiAgICAgICAgIH0K
ICAgICB9CiAKLSAgICBpZiAobV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMpIHsKKyAgICBpZiAo
bV9tYXRjaEF1dGhvckFuZFVzZXJTdHlsZXMgJiYgcnVsZXNUb0luY2x1ZGUgJiBBdXRob3JDU1NS
dWxlcykgewogICAgICAgICBtX2NoZWNrZXIubV9zYW1lT3JpZ2luT25seSA9ICEocnVsZXNUb0lu
Y2x1ZGUgJiBDcm9zc09yaWdpbkNTU1J1bGVzKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgcnVs
ZXMgaW4gYXV0aG9yIHNoZWV0cy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96013</attachid>
            <date>2011-06-04 00:01:27 -0700</date>
            <delta_ts>2011-08-05 20:37:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-34564-20110604000125.patch</filename>
            <type>text/plain</type>
            <size>67056</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4MDkzKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMDYtMDMgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ29weWluZyBjYW4gcmVzdWx0IGluIDxzcGFuPiB0YWdzIGFyb3Vu
ZCBibG9jayBlbGVtZW50cyBvbiB0aGUgY2xpcGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDU2NAorCisgICAgICAgIENvbXBsZXRlbHkgb3Zl
cmhhdWxlZCB0aGUgd2F5IFdlYktpdCBwcmVzZXJ2ZXMgc3R5bGUgaW4gY29weSAmIHBhc3RlLgor
CisgICAgICAgIEluc3RlYWQgb2Ygd3JhcHBpbmcgdGhlIGVudGlyZSBzZXJpYWxpemVkIGNvbnRl
bnRzIGJ5IGEgQXBwbGUgc3R5bGUgc3Bhbiwgd2Ugbm93IGFkZCBpbmxpbmUgc3R5bGUKKyAgICAg
ICAgZGVjbGFyYXRpb24gdG8gdGhlIHRvcCBsZXZlbCBlbGVtZW50cywgd3JhcCB0b3AgbGV2ZWwg
dGV4dCBub2RlcyBieSBhIHN0eWxlIHNwYW4uCisKKyAgICAgICAgSW4gUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQsIHdlIGNsZWFudXAgdGhlc2UgaW5saW5lIHN0eWxlIGRlY2xhcmF0aW9ucyBmcm9t
IGVhY2ggbm9kZS4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50
KTogYXV0aG9yIGFuZCB1c2VyIHN0eWxlc2hlZXRzIG9ubHkgaWYKKyAgICAgICAgQXV0aG9yQ1NT
UnVsZXMgaXMgc2V0IGluIHJ1bGVzVG9JbmNsdWRlLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGlu
Z1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29sbGFwc2VUZXh0
RGVjb3JhdGlvblByb3BlcnRpZXMpOiBSZW1vdmUgdGV4dC1kZWNvcmF0aW9uIHByb3BlcnR5IHdo
ZW4KKyAgICAgICAgdGhlIHZhbHVlIG9mIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZl
Y3QgaXMgbm9uZS4KKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVs
ZW1lbnQpOiBUYWtlcyBydWxlc1RvSW5jbHVkZSBmb3Igc3R5bGVSdWxlc0ZvckVsZW1lbnQuCisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXMpOiBDYWxs
cyBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50IHdpdGgKKyAgICAgICAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6QXV0aG9yQ1NTUnVsZXMgfCBDU1NTdHlsZVNlbGVjdG9yOjpDcm9zc09yaWdpbkNT
U1J1bGVzIGFzIGl0IHVzZWQgdG8gZG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6
OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6IEFkZGVkOyByZW1vdmVzIHJlZHVuZGFu
dCBzdHlsZSBpbgorICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1bHRTdHls
ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpmb3JjZUlubGluZSk6
IEFkZGVkOyBhZGRzIGRpc3BsYXk6IGlubGluZTsKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb3Bl
cnRpZXNOb3RJbik6IE5vIGxvbmdlciByZW1vdmVzIHByb3BlcnRpZXMgYmFzZVN0eWxlIGRpZG4n
dCBoYXZlLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmg6CisgICAgICAgICogZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6IFJlbW92ZWQgaGFuZGxlU3R5bGVTcGFu
c0JlZm9yZUluc2VydGlvbiwgaGFuZGxlU3R5bGVTcGFucywKKyAgICAgICAgYW5kIGNvcHlTdHls
ZVRvQ2hpbGRyZW4uCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZSk6IFJld3JpdHRlbjsK
KyAgICAgICAgQmVjYXVzZSB3ZSBmb3JjZSBzcGFucyB0byBiZSBpbmxpbmUgaW4gc2VyaWFsaXph
dGlvbiBjb2RlIChTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dCksCisgICAgICAg
IHdlIG5vIGxvbmdlciBoYXZlIHRvIGFkZCBkaXNwbGF5OiBpbmxpbmUgYW5kIGZsb2F0OiBub25l
IGhlcmUuIE1vdmVkIGxvZ2ljIHRvIGRlYWwgd2l0aCBwYXN0ZQorICAgICAgICBhcyBxdW90YXRp
b24gZnJvbSBoYW5kbGVTdHlsZVNwYW5zLiBBbHNvIHJlbW92ZXMgZW1wdHkgc3R5bGUgc3BhbnMg
bGlrZSB3ZSB1c2VkIHRvIGRvIGluCisgICAgICAgIGhhbmRsZVN0eWxlU3BhbnMuCisgICAgICAg
IChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6IEluIHRoZSBsb2dp
YyB0byBhdm9pZCBzdHlsZSBlbGVtZW50cywgZG9uJ3QgbGV0CisgICAgICAgIGlzSW5saW5lTm9k
ZVdpdGhTdHlsZSBnbyBwYXNzIGVuY2xvc2luZyBibG9jayBlbGVtZW50czsgbm8gbG9uZ2VyIGNh
bGxzIGhhbmRsZVN0eWxlU3BhbnMgb3IKKyAgICAgICAgaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUlu
c2VydGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmg6Cisg
ICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoaWdo
ZXN0RW5jbG9zaW5nTm9kZU9mVHlwZSk6IFRha2VzIG5vZGUgdG8gc3RheSB3aXRoaW4gbGlrZSBu
b2RlIHRyYXZlcnNhbCBmdW5jdGlvbnMuCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5o
OgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjpzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvcik6IFRha2VzIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhTdHlsZU5vZGUpOiBDYWxscyBh
cHBlbmRTdHlsZU5vZGVPcGVuVGFnIGFuZCAKKyAgICAgICAgc3R5bGVOb2RlQ2xvc2VUYWcuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3R5bGVOb2Rl
T3BlblRhZyk6IEV4dHJhY3RlZCBmcm9tIHdyYXBXaXRoU3R5bGVOb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNsb3NlVGFnKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dCk6
IFdyYXBzIHRleHQgbm9kZSB3aXRoIGEgc3R5bGUgc3BhbiBpZiBuZWVkZWQuCisgICAgICAgIFNl
dCBkaXNwbGF5OiBpbmxpbmUgYW5kIGZsb2F0OiBub25lIHNvIHRoYXQgaXQgd29uJ3QgYmUgY29u
dmVydGVkIHRvIGEgYmxvY2sgb24gcGFzdGUgc2lkZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtZW50KTogQWRkIHdyYXBwaW5nIHN0eWxlIGlm
IGFwcHJvcHJpYXRlLgorICAgICAgICBXZSByZW1vdmUgYW55IHByb3BlcnRpZXMgdGhhdCBhcmUg
b3ZlcnJpZGRlbiBieSBkZWZhdWx0IHN0eWxlIGFuZCBhbnkgc3R5bGUgdGhhdCBtYXkgY29uZmxp
Y3QKKyAgICAgICAgd2l0aCB0aGUgY29tcHV0ZWQgc3R5bGUgb2Ygbm9kZSB0byBhdm9pZCBtb2Rp
ZnlpbmcgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VyaWFsaXplZCBub2Rlcy4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2Rlcyk6IENvbXB1dGUgd3Jh
cHBpbmcgc3R5bGU7IGNvcGllcyBvZiB0aGlzCisgICAgICAgIHN0eWxlIGFyZSBtb2RpZmllZCBh
cyBuZWVkZWQgd2hlbiBzZXJpYWxpemluZyB0b3AtbGV2ZWwgZWxlbWVudHMgb3IgdGV4dCBub2Rl
cy4gV2UgY2FsbAorICAgICAgICB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbiB3aXRoIHNo
b3VsZEVtaXQgc2V0IGZhbHNlIGZpcnN0IHRvIGNvbXB1dGUgdGhlIGhpZ2hlc3Qgbm9kZSB0bwor
ICAgICAgICBiZSBzZXJpYWxpemVkLiBUaGUgc2Vjb25kIGNhbGwgdG8gdHJhdmVyc2VOb2Rlc0Zv
clNlcmlhbGl6YXRpb24gd2lsbCBzZXJpYWxpemUgdGhlIG5vZGVzLgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9u
KTogRXh0cmFjdGVkIGZyb20KKyAgICAgICAgc2VyaWFsaXplTm9kZXM7IG91dHB1dHMgc3RyaW5n
IG9ubHkgaWYgc2hvdWxkRW1pdCBpcyB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFy
a3VwKTogTm8gbG9uZ2VyIGFkZHMgd3JhcHBpbmcgc3BhbnMuCisKIDIwMTEtMDYtMDMgIEFsZXhl
eSBQcm9za3VyeWFrb3YgIDxhcEBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGFy
aW4gQWRsZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShy
ZXZpc2lvbiA4Nzk4NykKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAyMSw3ICsyMDIxLDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxl
TGlzdD4gQ1NTU3R5bGVTZWxlY3RvcgogICAgICAgICB9CiAgICAgfQogCi0gICAgaWYgKG1fbWF0
Y2hBdXRob3JBbmRVc2VyU3R5bGVzKSB7CisgICAgaWYgKG1fbWF0Y2hBdXRob3JBbmRVc2VyU3R5
bGVzICYmIHJ1bGVzVG9JbmNsdWRlICYgQXV0aG9yQ1NTUnVsZXMpIHsKICAgICAgICAgbV9jaGVj
a2VyLm1fc2FtZU9yaWdpbk9ubHkgPSAhKHJ1bGVzVG9JbmNsdWRlICYgQ3Jvc3NPcmlnaW5DU1NS
dWxlcyk7CiAKICAgICAgICAgLy8gQ2hlY2sgdGhlIHJ1bGVzIGluIGF1dGhvciBzaGVldHMuCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCShyZXZpc2lvbiA4Nzk4
NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNTU0LDcgKzU1NCwxMCBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6Y29sbGFwc2VUZXh0
RGVjb3JhdGlvCiAgICAgaWYgKCF0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERl
Y29yYXRpb24sIHRleHREZWNvcmF0aW9uc0luRWZmZWN0LT5jc3NUZXh0KCksIG1fbXV0YWJsZVN0
eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pKTsKKyAg
ICBpZiAodGV4dERlY29yYXRpb25zSW5FZmZlY3QtPmlzVmFsdWVMaXN0KCkpCisgICAgICAgIG1f
bXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCB0ZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdC0+Y3NzVGV4dCgpLCBtX211dGFibGVTdHlsZS0+Z2V0UHJvcGVy
dHlQcmlvcml0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSk7CisgICAgZWxzZQorICAgICAg
ICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
bik7CiAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5V2Via2l0
VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOwogfQogCkBAIC04MTgsMTEgKzgyMSwxMCBAQCB2b2lk
IEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZShDU1NNdXRhYmxlCiAgICAgfQogfQogCi1zdGF0aWMg
UGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1
bGVzRm9yRWxlbWVudChFbGVtZW50KiBlbGVtZW50KQorc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoRWxl
bWVudCogZWxlbWVudCwgdW5zaWduZWQgcnVsZXNUb0luY2x1ZGUpCiB7CiAgICAgUmVmUHRyPENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0
aW9uOjpjcmVhdGUoKTsKLSAgICBSZWZQdHI8Q1NTUnVsZUxpc3Q+IG1hdGNoZWRSdWxlcyA9IGVs
ZW1lbnQtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+c3R5bGVSdWxlc0ZvckVsZW1lbnQo
ZWxlbWVudCwKLSAgICAgICAgQ1NTU3R5bGVTZWxlY3Rvcjo6QXV0aG9yQ1NTUnVsZXMgfCBDU1NT
dHlsZVNlbGVjdG9yOjpDcm9zc09yaWdpbkNTU1J1bGVzKTsKKyAgICBSZWZQdHI8Q1NTUnVsZUxp
c3Q+IG1hdGNoZWRSdWxlcyA9IGVsZW1lbnQtPmRvY3VtZW50KCktPnN0eWxlU2VsZWN0b3IoKS0+
c3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcnVsZXNUb0luY2x1ZGUpOwogICAgIGlmICht
YXRjaGVkUnVsZXMpIHsKICAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1hdGNoZWRS
dWxlcy0+bGVuZ3RoKCk7IGkrKykgewogICAgICAgICAgICAgaWYgKG1hdGNoZWRSdWxlcy0+aXRl
bShpKS0+dHlwZSgpID09IENTU1J1bGU6OlNUWUxFX1JVTEUpIHsKQEAgLTgzNyw3ICs4MzksOCBA
QCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhCiAKIHZvaWQgRWRpdGlu
Z1N0eWxlOjptZXJnZVN0eWxlRnJvbVJ1bGVzKFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQpCiB7Ci0g
ICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUZyb21NYXRjaGVkUnVs
ZXMgPSBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQpOworICAgIFJlZlB0
cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5
bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LAorICAgICAgICBDU1NTdHlsZVNl
bGVjdG9yOjpBdXRob3JDU1NSdWxlcyB8IENTU1N0eWxlU2VsZWN0b3I6OkNyb3NzT3JpZ2luQ1NT
UnVsZXMpOwogICAgIC8vIFN0eWxlcyBmcm9tIHRoZSBpbmxpbmUgc3R5bGUgZGVjbGFyYXRpb24s
IGhlbGQgaW4gdGhlIHZhcmlhYmxlICJzdHlsZSIsIHRha2UgcHJlY2VkZW5jZSAKICAgICAvLyBv
dmVyIHRob3NlIGZyb20gbWF0Y2hlZCBydWxlcy4KICAgICBpZiAobV9tdXRhYmxlU3R5bGUpCkBA
IC04NzAsMTYgKzg3Myw1NiBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxl
c0ZvCiAgICAgbV9tdXRhYmxlU3R5bGUtPm1lcmdlKGZyb21Db21wdXRlZFN0eWxlLmdldCgpKTsK
IH0KIAotdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzKFN0eWxlZEVsZW1l
bnQqIGVsZW1lbnQpCit2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRD
b250ZXh0KFN0eWxlZEVsZW1lbnQqIGVsZW1lbnQsIE5vZGUqIGNvbnRleHQpCiB7CisgICAgQVNT
RVJUKGVsZW1lbnQpOwogICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hl
ZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50KTsKLSAgICBp
ZiAoIXN0eWxlRnJvbU1hdGNoZWRSdWxlcykKKyAgICAvLyAxLiBSZW1vdmUgc3R5bGUgZnJvbSBt
YXRjaGVkIHJ1bGVzIGJlY2F1c2Ugc3R5bGUgcmVtYWluIHdpdGhvdXQgcmVwZWF0aW5nIGl0IGlu
IGlubGluZSBzdHlsZSBkZWNsYXJhdGlvbgorICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbj4gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9y
RWxlbWVudChlbGVtZW50LCBDU1NTdHlsZVNlbGVjdG9yOjpBbGxCdXRFbXB0eUNTU1J1bGVzKTsK
KyAgICBpZiAoc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzICYmIHN0eWxlRnJvbU1hdGNoZWRSdWxlcy0+
bGVuZ3RoKCkpCisgICAgICAgIG1fbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVydGllc05vdEluKG1f
bXV0YWJsZVN0eWxlLmdldCgpLCBzdHlsZUZyb21NYXRjaGVkUnVsZXMuZ2V0KCkpOworCisgICAg
Ly8gMi4gUmVtb3ZlIHN0eWxlIHByZXNlbnQgaW4gY29udGV4dCBhbmQgbm90IG92ZXJyaWRlbiBi
eSBtYXRjaGVkIHJ1bGVzLgorICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGNvbXB1dGVkU3R5bGUg
PSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShjb250ZXh0LCBFZGl0aW5nSW5oZXJpdGFibGVQcm9wZXJ0
aWVzQW5kQmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOworICAgIGlmIChjb21wdXRlZFN0eWxlLT5t
X211dGFibGVTdHlsZSkgeworICAgICAgICBjb21wdXRlZFN0eWxlLT5yZW1vdmVQcm9wZXJ0aWVz
SW5FbGVtZW50RGVmYXVsdFN0eWxlKGVsZW1lbnQpOworICAgICAgICBtX211dGFibGVTdHlsZSA9
IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgY29tcHV0ZWRTdHlsZS0+
bV9tdXRhYmxlU3R5bGUuZ2V0KCkpOworICAgIH0KKworICAgIC8vIDMuIElmIHRoaXMgZWxlbWVu
dCBpcyBhIHNwYW4gYW5kIGhhcyBkaXNwbGF5OiBpbmxpbmUgb3IgZmxvYXQ6IG5vbmUsIHJlbW92
ZSB0aGVtIHVubGVzcyB0aGV5IGFyZSBvdmVycmlkZW4gYnkgcnVsZXMuCisgICAgLy8gVGhlc2Ug
cnVsZXMgYXJlIGFkZGVkIGJ5IHNlcmlhbGl6YXRpb24gY29kZSB0byB3cmFwIHRleHQgbm9kZXMu
CisgICAgaWYgKGlzU3R5bGVTcGFuKGVsZW1lbnQpKSB7CisgICAgICAgIGlmICghc3R5bGVGcm9t
TWF0Y2hlZFJ1bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlzcGxheSkgJiYg
Z2V0SWRlbnRpZmllclZhbHVlKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eURpc3Bs
YXkpID09IENTU1ZhbHVlSW5saW5lKQorICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92
ZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSk7CisgICAgICAgIGlmICghc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RmxvYXQpICYmIGdldElk
ZW50aWZpZXJWYWx1ZShtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlGbG9hdCkgPT0g
Q1NTVmFsdWVOb25lKQorICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5
KENTU1Byb3BlcnR5RmxvYXQpOworICAgIH0KK30KKwordm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92
ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoRWxlbWVudCogZWxlbWVudCkKK3sKKyAg
ICBpZiAoIW1fbXV0YWJsZVN0eWxlIHx8ICFtX211dGFibGVTdHlsZS0+bGVuZ3RoKCkpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fbXV0YWJsZVN0eWxlID0gZ2V0UHJvcGVydGllc05vdEluKG1f
bXV0YWJsZVN0eWxlLmdldCgpLCBzdHlsZUZyb21NYXRjaGVkUnVsZXMuZ2V0KCkpOworICAgIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZGVmYXVsdFN0eWxlID0gc3R5bGVGcm9t
TWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50LCBDU1NTdHlsZVNlbGVjdG9yOjpVQUFuZFVz
ZXJDU1NSdWxlcyk7CisKKyAgICBWZWN0b3I8aW50PiBwcm9wZXJ0aWVzVG9SZW1vdmUoZGVmYXVs
dFN0eWxlLT5sZW5ndGgoKSk7CisgICAgc2l6ZV90IGkgPSAwOworICAgIENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRvciBlbmQgPSBkZWZhdWx0U3R5bGUtPmVuZCgpOwor
ICAgIGZvciAoQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNvbnN0X2l0ZXJhdG9yIGl0ID0g
ZGVmYXVsdFN0eWxlLT5iZWdpbigpOyBpdCAhPSBlbmQ7ICsraXQsICsraSkKKyAgICAgICAgcHJv
cGVydGllc1RvUmVtb3ZlW2ldID0gaXQtPmlkKCk7CisKKyAgICBtX211dGFibGVTdHlsZS0+cmVt
b3ZlUHJvcGVydGllc0luU2V0KHByb3BlcnRpZXNUb1JlbW92ZS5kYXRhKCksIHByb3BlcnRpZXNU
b1JlbW92ZS5zaXplKCkpOworfQorCit2b2lkIEVkaXRpbmdTdHlsZTo6Zm9yY2VJbmxpbmUoKQor
eworICAgIGlmICghbV9tdXRhYmxlU3R5bGUpCisgICAgICAgIG1fbXV0YWJsZVN0eWxlID0gQ1NT
TXV0YWJsZVN0eWxlRGVjbGFyYXRpb246OmNyZWF0ZSgpOworICAgIGNvbnN0IGJvb2wgcHJvcGVy
dHlJc0ltcG9ydGFudCA9IHRydWU7CisgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENT
U1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmUsIHByb3BlcnR5SXNJbXBvcnRhbnQpOwog
fQogCiBzdGF0aWMgdm9pZCByZWNvbmNpbGVUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMoQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb24qIHN0eWxlKQpAQCAtMTA4NCwxMyArMTEyNywxMyBAQCBSZWZQ
dHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGdldFByCiAgICAgZGlmZlRleHREZWNvcmF0
aW9ucyhyZXN1bHQuZ2V0KCksIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIGJhc2VUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdC5nZXQoKSk7CiAgICAgZGlmZlRleHREZWNvcmF0aW9ucyhyZXN1bHQu
Z2V0KCksIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QsIGJhc2VUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdC5nZXQoKSk7CiAKLSAgICBpZiAoZm9udFdlaWdodElzQm9sZChy
ZXN1bHQuZ2V0KCkpID09IGZvbnRXZWlnaHRJc0JvbGQoYmFzZVN0eWxlKSkKKyAgICBpZiAoYmFz
ZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rm9udFNpemUpICYmIGZvbnRX
ZWlnaHRJc0JvbGQocmVzdWx0LmdldCgpKSA9PSBmb250V2VpZ2h0SXNCb2xkKGJhc2VTdHlsZSkp
CiAgICAgICAgIHJlc3VsdC0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGb250V2VpZ2h0KTsK
IAotICAgIGlmIChnZXRSR0JBRm9udENvbG9yKHJlc3VsdC5nZXQoKSkgPT0gZ2V0UkdCQUZvbnRD
b2xvcihiYXNlU3R5bGUpKQorICAgIGlmIChiYXNlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlDb2xvcikgJiYgZ2V0UkdCQUZvbnRDb2xvcihyZXN1bHQuZ2V0KCkpID09IGdl
dFJHQkFGb250Q29sb3IoYmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0
eShDU1NQcm9wZXJ0eUNvbG9yKTsKIAotICAgIGlmIChnZXRUZXh0QWxpZ25tZW50KHJlc3VsdC5n
ZXQoKSkgPT0gZ2V0VGV4dEFsaWdubWVudChiYXNlU3R5bGUpKQorICAgIGlmIChiYXNlU3R5bGUt
PmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlUZXh0QWxpZ24pICYmIGdldFRleHRBbGln
bm1lbnQocmVzdWx0LmdldCgpKSA9PSBnZXRUZXh0QWxpZ25tZW50KGJhc2VTdHlsZSkpCiAgICAg
ICAgIHJlc3VsdC0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0QWxpZ24pOwogCiAgICAg
cmV0dXJuIHJlc3VsdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAko
cmV2aXNpb24gODc5ODcpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Nyw2ICs0Nyw3IEBAIGNsYXNzIENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uOwogY2xhc3MgQ1NTUHJpbWl0aXZlVmFsdWU7CiBjbGFzcyBDU1NWYWx1ZTsKIGNs
YXNzIERvY3VtZW50OworY2xhc3MgRWxlbWVudDsKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3Mg
Tm9kZTsKIGNsYXNzIFBvc2l0aW9uOwpAQCAtMTIyLDcgKzEyMyw5IEBAIHB1YmxpYzoKICAgICB2
b2lkIG1lcmdlSW5saW5lU3R5bGVPZkVsZW1lbnQoU3R5bGVkRWxlbWVudCopOwogICAgIHZvaWQg
bWVyZ2VTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50Kik7CiAgICAgdm9pZCBtZXJnZVN0eWxl
RnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50Kik7Ci0gICAgdm9pZCByZW1v
dmVTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50Kik7CisgICAgdm9pZCByZW1vdmVTdHlsZUZy
b21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVudCosIE5vZGUqIGNvbnRleHQpOworICAgIHZv
aWQgcmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1bHRTdHlsZShFbGVtZW50Kik7CisgICAg
dm9pZCBmb3JjZUlubGluZSgpOwogCiAgICAgZmxvYXQgZm9udFNpemVEZWx0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZm9udFNpemVEZWx0YTsgfQogICAgIGJvb2wgaGFzRm9udFNpemVEZWx0YSgpIGNv
bnN0IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YSAhPSBOb0ZvbnREZWx0YTsgfQpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAJ
KHJldmlzaW9uIDg3OTg3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0
aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ3OCwzNCArNDc4LDM5IEBAIGJvb2wg
UmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3VsZE1lcmcKIC8vIGEgZGl2IGluc2VydGVkIGlu
dG8gYSBkb2N1bWVudCB3aXRoIGRpdiB7IGRpc3BsYXk6aW5saW5lOyB9Lgogdm9pZCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3Bhbklu
bGluZSgpCiB7Ci0gICAgZm9yIChSZWZQdHI8Tm9kZT4gbm9kZSA9IG1fZmlyc3ROb2RlSW5zZXJ0
ZWQuZ2V0KCk7IG5vZGU7IG5vZGUgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCkpIHsKLSAgICAg
ICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS81MzcxNTM2PiBTdHlsZSBydWxlcyB0aGF0IG1h
dGNoIHBhc3RlZCBjb250ZW50IGNhbiBjaGFuZ2UgaXQncyBhcHBlYXJhbmNlCi0gICAgICAgIGlm
IChpc1N0eWxlU3Bhbihub2RlLmdldCgpKSkgewotICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGUg
PSB0b0hUTUxFbGVtZW50KG5vZGUuZ2V0KCkpOwotICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG90
aGVyIHN0eWxlcyB0aGF0IHN0eWxlIHJ1bGVzIGNhbiBnaXZlIHRvIHN0eWxlIHNwYW5zLAotICAg
ICAgICAgICAgLy8gYnV0IHRoZXNlIGFyZSB0aGUgdHdvIGltcG9ydGFudCBvbmVzIGJlY2F1c2Ug
dGhleSdsbCBwcmV2ZW50Ci0gICAgICAgICAgICAvLyBpbnNlcnRlZCBjb250ZW50IGZyb20gYXBw
ZWFyaW5nIGluIHRoZSByaWdodCBwYXJhZ3JhcGguCi0gICAgICAgICAgICAvLyBGSVhNRTogSHlh
dHQgaXMgY29uY2VybmVkIHRoYXQgc2VsZWN0aXZlbHkgdXNpbmcgZGlzcGxheTppbmxpbmUgd2ls
bCBnaXZlIGluY29uc2lzdGVudAotICAgICAgICAgICAgLy8gcmVzdWx0cy4gV2UgYWxyZWFkeSBr
bm93IG9uZSBpc3N1ZSBiZWNhdXNlIHRkIGVsZW1lbnRzIGlnbm9yZSB0aGVpciBkaXNwbGF5IHBy
b3BlcnR5Ci0gICAgICAgICAgICAvLyBpbiBxdWlya3MgbW9kZSAod2hpY2ggTWFpbC5hcHAgaXMg
YWx3YXlzIGluKS4gV2Ugc2hvdWxkIGxvb2sgZm9yIGFuIGFsdGVybmF0aXZlLgotICAgICAgICAg
ICAgaWYgKGlzQmxvY2soZSkpCi0gICAgICAgICAgICAgICAgZS0+Z2V0SW5saW5lU3R5bGVEZWNs
KCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmUpOwotICAg
ICAgICAgICAgaWYgKGUtPnJlbmRlcmVyKCkgJiYgZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+Zmxv
YXRpbmcoKSAhPSBGTk9ORSkKLSAgICAgICAgICAgICAgICBlLT5nZXRJbmxpbmVTdHlsZURlY2wo
KS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCwgQ1NTVmFsdWVOb25lKTsKLSAgICAgICAg
fSBlbHNlIGlmIChub2RlLT5pc1N0eWxlZEVsZW1lbnQoKSkgewotICAgICAgICAgICAgU3R5bGVk
RWxlbWVudCogZWxlbWVudCA9IHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihub2RlLmdldCgp
KTsKLSAgICAgICAgICAgIGlmIChDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogaW5saW5lU3R5
bGUgPSBlbGVtZW50LT5pbmxpbmVTdHlsZURlY2woKSkgewotICAgICAgICAgICAgICAgIFJlZlB0
cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoaW5s
aW5lU3R5bGUpOwotICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUZy
b21SdWxlcyhlbGVtZW50KTsKLSAgICAgICAgICAgICAgICBpZiAoIW5ld0lubGluZVN0eWxlLT5z
dHlsZSgpIHx8ICFuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+bGVuZ3RoKCkpCi0gICAgICAgICAg
ICAgICAgICAgIHJlbW92ZU5vZGVBdHRyaWJ1dGUoZWxlbWVudCwgc3R5bGVBdHRyKTsKLSAgICAg
ICAgICAgICAgICBlbHNlIGlmIChuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+bGVuZ3RoKCkgPCBp
bmxpbmVTdHlsZS0+bGVuZ3RoKCkpCi0gICAgICAgICAgICAgICAgICAgIHNldE5vZGVBdHRyaWJ1
dGUoZWxlbWVudCwgc3R5bGVBdHRyLCBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+Y3NzVGV4dCgp
KTsgICAgICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgUmVm
UHRyPE5vZGU+IHBhc3RFbmROb2RlID0gbV9sYXN0TGVhZkluc2VydGVkID8gbV9sYXN0TGVhZklu
c2VydGVkLT50cmF2ZXJzZU5leHROb2RlKCkgOiAwOworICAgIFJlZlB0cjxOb2RlPiBuZXh0Owor
ICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpOyBu
b2RlICYmIG5vZGUgIT0gcGFzdEVuZE5vZGU7IG5vZGUgPSBuZXh0KSB7CisgICAgICAgIG5leHQg
PSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCk7CisgICAgICAgIGlmICghbm9kZS0+aXNTdHlsZWRF
bGVtZW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBTdHlsZWRFbGVtZW50
KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUuZ2V0KCkpOworCisg
ICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQt
PmlubGluZVN0eWxlRGVjbCgpOworICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBuZXdJbmxp
bmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAgICAgICAgaWYg
KGlubGluZVN0eWxlKSB7CisgICAgICAgICAgICBDb250YWluZXJOb2RlKiBjb250ZXh0ID0gZWxl
bWVudC0+cGFyZW50Tm9kZSgpOworCisgICAgICAgICAgICAvLyBJZiBNYWlsIHdyYXBzIHRoZSBm
cmFnbWVudCB3aXRoIGEgUGFzdGUgYXMgUXVvdGF0aW9uIGJsb2NrcXVvdGUsIG9yIGlmIHlvdSdy
ZSBwYXN0aW5nIGludG8gYSBxdW90ZWQgcmVnaW9uLAorICAgICAgICAgICAgLy8gc3R5bGVzIGZy
b20gYmxvY2txdW90ZU5vZGUgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgdGhvc2UgZnJvbSB0aGUg
c291cmNlIGRvY3VtZW50LCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5MzA5ODY+IGFuZCA8cmRhcjov
L3Byb2JsZW0vNTA4OTMyNz4uCisgICAgICAgICAgICBOb2RlKiBibG9ja3F1b3RlTm9kZSA9IGlz
TWFpbFBhc3RlQXNRdW90YXRpb25Ob2RlKGNvbnRleHQpID8gY29udGV4dCA6IGVuY2xvc2luZ05v
ZGVPZlR5cGUoZmlyc3RQb3NpdGlvbkluTm9kZShjb250ZXh0KSwgaXNNYWlsQmxvY2txdW90ZSwg
Q2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpOworICAgICAgICAgICAgaWYgKGJsb2NrcXVvdGVOb2Rl
KQorICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUZyb21SdWxlc0Fu
ZENvbnRleHQoZWxlbWVudCwgZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkpOworCisgICAg
ICAgICAgICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRDb250ZXh0KGVs
ZW1lbnQsIGNvbnRleHQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFpbmxpbmVTdHlsZSB8
fCBuZXdJbmxpbmVTdHlsZS0+aXNFbXB0eSgpKSB7CisgICAgICAgICAgICBpZiAoaXNTdHlsZVNw
YW4obm9kZS5nZXQoKSkpIC8vIEZJWE1FOiBzaG91bGQgY2FsbCBpc1NwYW5XaXRob3V0QXR0cmli
dXRlc09yVW5zdHlsZVN0eWxlU3BhbiBpbnN0ZWFkCisgICAgICAgICAgICAgICAgcmVtb3ZlTm9k
ZVByZXNlcnZpbmdDaGlsZHJlbihub2RlLmdldCgpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICByZW1vdmVOb2RlQXR0cmlidXRlKGVsZW1lbnQsIHN0eWxlQXR0cik7CisgICAg
ICAgIH0gZWxzZSBpZiAobmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmxlbmd0aCgpICE9IGlubGlu
ZVN0eWxlLT5sZW5ndGgoKSkKKyAgICAgICAgICAgIHNldE5vZGVBdHRyaWJ1dGUoZWxlbWVudCwg
c3R5bGVBdHRyLCBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+Y3NzVGV4dCgpKTsKIAotICAgICAg
ICBpZiAobm9kZSA9PSBtX2xhc3RMZWFmSW5zZXJ0ZWQpCi0gICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgaWYgKGlzU3R5bGVTcGFuKG5vZGUuZ2V0KCkpICYmICFub2RlLT5maXJzdENoaWxkKCkp
CisgICAgICAgICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKG5vZGUuZ2V0KCkpOwog
ICAgIH0KIH0KIApAQCAtNTgyLDEyMSArNTg3LDYgQEAgc3RhdGljIHZvaWQgcmVtb3ZlSGVhZENv
bnRlbnRzKFJlcGxhY2VtZQogICAgIH0KIH0KIAotLy8gUmVtb3ZlIHN0eWxlIHNwYW5zIGJlZm9y
ZSBpbnNlcnRpb24gaWYgdGhleSBhcmUgdW5uZWNlc3NhcnkuICBJdCdzIGZhc3RlciBiZWNhdXNl
IHdlJ2xsIAotLy8gYXZvaWQgZG9pbmcgYSBsYXlvdXQuCi1zdGF0aWMgYm9vbCBoYW5kbGVTdHls
ZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKFJlcGxhY2VtZW50RnJhZ21lbnQmIGZyYWdtZW50LCBjb25z
dCBQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zKQotewotICAgIE5vZGUqIHRvcE5vZGUgPSBmcmFnbWVu
dC5maXJzdENoaWxkKCk7Ci0KLSAgICAvLyBIYW5kbGluZyB0aGUgY2FzZSB3aGVyZSB3ZSBhcmUg
ZG9pbmcgUGFzdGUgYXMgUXVvdGF0aW9uIG9yIHBhc3RpbmcgaW50byBxdW90ZWQgY29udGVudCBp
cyBtb3JlIGNvbXBsaWNhdGVkIChzZWUgaGFuZGxlU3R5bGVTcGFucykKLSAgICAvLyBhbmQgZG9l
c24ndCByZWNlaXZlIHRoZSBvcHRpbWl6YXRpb24uCi0gICAgaWYgKGlzTWFpbFBhc3RlQXNRdW90
YXRpb25Ob2RlKHRvcE5vZGUpIHx8IGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlvbklu
T3JCZWZvcmVOb2RlKHRvcE5vZGUpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0VkaXRpbmdC
b3VuZGFyeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEVpdGhlciB0aGVyZSBh
cmUgbm8gc3R5bGUgc3BhbnMgaW4gdGhlIGZyYWdtZW50IG9yIGEgV2ViS2l0IGNsaWVudCBoYXMg
YWRkZWQgY29udGVudCB0byB0aGUgZnJhZ21lbnQKLSAgICAvLyBiZWZvcmUgaW5zZXJ0aW5nIGl0
LiAgTG9vayBmb3IgYW5kIGhhbmRsZSBzdHlsZSBzcGFucyBhZnRlciBpbnNlcnRpb24uCi0gICAg
aWYgKCFpc1N0eWxlU3Bhbih0b3BOb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
Tm9kZSogd3JhcHBpbmdTdHlsZVNwYW4gPSB0b3BOb2RlOwotICAgIFJlZlB0cjxFZGl0aW5nU3R5
bGU+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShpbnNlcnRpb25Q
b3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIFN0cmluZyBzdHlsZVRleHQgPSBz
dHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5jc3NUZXh0KCk7Ci0KLSAgICAvLyBGSVhNRTog
VGhpcyBzdHJpbmcgY29tcGFyaXNvbiBpcyBhIG5haXZlIHdheSBvZiBjb21wYXJpbmcgdHdvIHN0
eWxlcy4KLSAgICAvLyBXZSBzaG91bGQgYmUgdGFraW5nIHRoZSBkaWZmIGFuZCBjaGVjayB0aGF0
IHRoZSBkaWZmIGlzIGVtcHR5LgotICAgIGlmIChzdHlsZVRleHQgIT0gc3RhdGljX2Nhc3Q8RWxl
bWVudCo+KHdyYXBwaW5nU3R5bGVTcGFuKS0+Z2V0QXR0cmlidXRlKHN0eWxlQXR0cikpCi0gICAg
ICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZyYWdtZW50LnJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hp
bGRyZW4od3JhcHBpbmdTdHlsZVNwYW4pOwotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBBdCBj
b3B5IHRpbWUsIFdlYktpdCB3cmFwcyBjb3BpZWQgY29udGVudCBpbiBhIHNwYW4gdGhhdCBjb250
YWlucyB0aGUgc291cmNlIGRvY3VtZW50J3MgCi0vLyBkZWZhdWx0IHN0eWxlcy4gIElmIHRoZSBj
b3BpZWQgUmFuZ2UgaW5oZXJpdHMgYW55IG90aGVyIHN0eWxlcyBmcm9tIGl0cyBhbmNlc3RvcnMs
IHdlIHB1dCAKLS8vIHRob3NlIHN0eWxlcyBvbiBhIHNlY29uZCBzcGFuLgotLy8gVGhpcyBmdW5j
dGlvbiByZW1vdmVzIHJlZHVuZGFudCBzdHlsZXMgZnJvbSB0aG9zZSBzcGFucywgYW5kIHJlbW92
ZXMgdGhlIHNwYW5zIGlmIGFsbCB0aGVpciAKLS8vIHN0eWxlcyBhcmUgcmVkdW5kYW50LiAKLS8v
IFdlIHNob3VsZCByZW1vdmUgdGhlIEFwcGxlLXN0eWxlLXNwYW4gY2xhc3Mgd2hlbiB3ZSdyZSBk
b25lLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzU2ODU2MDA+LgotLy8gV2Ugc2hvdWxkIHJlbW92ZSBz
dHlsZXMgZnJvbSBzcGFucyB0aGF0IGFyZSBvdmVycmlkZGVuIGJ5IGFsbCBvZiB0aGVpciBjaGls
ZHJlbiwgZWl0aGVyIGhlcmUKLS8vIG9yIGF0IGNvcHkgdGltZS4KLXZvaWQgUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoKQotewotICAgIEhUTUxFbGVtZW50KiB3cmFw
cGluZ1N0eWxlU3BhbiA9IDA7Ci0gICAgLy8gVGhlIHN0eWxlIHNwYW4gdGhhdCBjb250YWlucyB0
aGUgc291cmNlIGRvY3VtZW50J3MgZGVmYXVsdCBzdHlsZSBzaG91bGQgYmUgYXQKLSAgICAvLyB0
aGUgdG9wIG9mIHRoZSBmcmFnbWVudCwgYnV0IE1haWwgc29tZXRpbWVzIGFkZHMgYSB3cmFwcGVy
IChmb3IgUGFzdGUgQXMgUXVvdGF0aW9uKSwKLSAgICAvLyBzbyBzZWFyY2ggZm9yIHRoZSB0b3Ag
bGV2ZWwgc3R5bGUgc3BhbiBpbnN0ZWFkIG9mIGFzc3VtaW5nIGl0J3MgYXQgdGhlIHRvcC4KLSAg
ICBmb3IgKE5vZGUqIG5vZGUgPSBtX2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpOyBub2RlOyBub2Rl
ID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpc1N0eWxlU3Bhbihu
b2RlKSkgewotICAgICAgICAgICAgd3JhcHBpbmdTdHlsZVNwYW4gPSB0b0hUTUxFbGVtZW50KG5v
ZGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgCi0gICAgLy8g
VGhlcmUgbWlnaHQgbm90IGJlIGFueSBzdHlsZSBzcGFucyBpZiB3ZSdyZSBwYXN0aW5nIGZyb20g
YW5vdGhlciBhcHBsaWNhdGlvbiBvciBpZiAKLSAgICAvLyB3ZSBhcmUgaGVyZSBiZWNhdXNlIG9m
IGEgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCAuLi4pIGNhbGwuCi0gICAgaWYg
KCF3cmFwcGluZ1N0eWxlU3BhbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVmUHRyPEVkaXRp
bmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+
Z2V0SW5saW5lU3R5bGVEZWNsKCkpOwotICAgIENvbnRhaW5lck5vZGUqIGNvbnRleHQgPSB3cmFw
cGluZ1N0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwotCi0gICAgLy8gSWYgTWFpbCB3cmFwcyB0aGUg
ZnJhZ21lbnQgd2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBibG9ja3F1b3RlLCBvciBpZiB5b3Un
cmUgcGFzdGluZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKLSAgICAvLyBzdHlsZXMgZnJvbSBibG9j
a3F1b3RlTm9kZSBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSB0aG9zZSBmcm9tIHRoZSBzb3VyY2Ug
ZG9jdW1lbnQsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDkzMDk4Nj4gYW5kIDxyZGFyOi8vcHJvYmxl
bS81MDg5MzI3Pi4KLSAgICBOb2RlKiBibG9ja3F1b3RlTm9kZSA9IGlzTWFpbFBhc3RlQXNRdW90
YXRpb25Ob2RlKGNvbnRleHQpID8gY29udGV4dCA6IGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQ
b3NpdGlvbkluTm9kZShjb250ZXh0KSwgaXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5n
Qm91bmRhcnkpOwotICAgIGlmIChibG9ja3F1b3RlTm9kZSkKLSAgICAgICAgY29udGV4dCA9IGRv
Y3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotCi0gICAgLy8gVGhpcyBvcGVyYXRpb24gcmVx
dWlyZXMgdGhhdCBvbmx5IGVkaXRpbmcgc3R5bGVzIHRvIGJlIHJlbW92ZWQgZnJvbSBzb3VyY2VE
b2N1bWVudFN0eWxlLgotICAgIHN0eWxlLT5wcmVwYXJlVG9BcHBseUF0KGZpcnN0UG9zaXRpb25J
bk5vZGUoY29udGV4dCkpOwotCi0gICAgLy8gUmVtb3ZlIGJsb2NrIHByb3BlcnRpZXMgaW4gdGhl
IHNwYW4ncyBzdHlsZS4gVGhpcyBwcmV2ZW50cyBwcm9wZXJ0aWVzIHRoYXQgcHJvYmFibHkgaGF2
ZSBubyBlZmZlY3QgCi0gICAgLy8gY3VycmVudGx5IGZyb20gYWZmZWN0aW5nIGJsb2NrcyBsYXRl
ciBpZiB0aGUgc3R5bGUgaXMgY2xvbmVkIGZvciBhIG5ldyBibG9jayBlbGVtZW50IGR1cmluZyBh
IGZ1dHVyZSAKLSAgICAvLyBlZGl0aW5nIG9wZXJhdGlvbi4KLSAgICAvLyBGSVhNRTogVGhleSAq
Y2FuKiBoYXZlIGFuIGVmZmVjdCBjdXJyZW50bHkgaWYgYmxvY2tzIGJlbmVhdGggdGhlIHN0eWxl
IHNwYW4gYXJlbid0IGluZGl2aWR1YWxseSBtYXJrZWQKLSAgICAvLyB3aXRoIGJsb2NrIHN0eWxl
cyBieSB0aGUgZWRpdGluZyBlbmdpbmUgdXNlZCB0byBzdHlsZSB0aGVtLiAgV2ViS2l0IGRvZXNu
J3QgZG8gdGhpcywgYnV0IG90aGVycyBtaWdodC4KLSAgICBzdHlsZS0+cmVtb3ZlQmxvY2tQcm9w
ZXJ0aWVzKCk7Ci0KLSAgICBpZiAoc3R5bGUtPmlzRW1wdHkoKSB8fCAhd3JhcHBpbmdTdHlsZVNw
YW4tPmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgcmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbih3
cmFwcGluZ1N0eWxlU3Bhbik7Ci0gICAgZWxzZQotICAgICAgICBzZXROb2RlQXR0cmlidXRlKHdy
YXBwaW5nU3R5bGVTcGFuLCBzdHlsZUF0dHIsIHN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCkpOwot
fQotCi0vLyBUYWtlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgb2YgYSBzcGFuIGFuZCBhcHBseSBpdCB0
byBpdCdzIGNoaWxkcmVuIGluc3RlYWQuICBUaGlzIGFsbG93cyB1cyB0bwotLy8gY29udmVydCBp
bnZhbGlkIEhUTUwgd2hlcmUgYSBzcGFuIGNvbnRhaW5zIGJsb2NrIGVsZW1lbnRzIGludG8gdmFs
aWQgSFRNTCB3aGlsZSBwcmVzZXJ2aW5nCi0vLyBzdHlsZXMuCi12b2lkIFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpjb3B5U3R5bGVUb0NoaWxkcmVuKE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBwYXJlbnRTdHlsZSkKLXsKLSAgICBBU1NFUlQocGFy
ZW50Tm9kZS0+aGFzVGFnTmFtZShzcGFuVGFnKSk7Ci0gICAgTm9kZVZlY3RvciBjaGlsZE5vZGVz
OwotICAgIGZvciAoUmVmUHRyPE5vZGU+IGNoaWxkTm9kZSA9IHBhcmVudE5vZGUtPmZpcnN0Q2hp
bGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJsaW5nKCkpCi0g
ICAgICAgIGNoaWxkTm9kZXMuYXBwZW5kKGNoaWxkTm9kZSk7Ci0gICAgICAgIAotICAgIGZvciAo
Tm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZE5vZGVzLmJlZ2luKCk7IGl0ICE9
IGNoaWxkTm9kZXMuZW5kKCk7IGl0KyspIHsKLSAgICAgICAgTm9kZSogY2hpbGROb2RlID0gaXQt
PmdldCgpOwotICAgICAgICBpZiAoY2hpbGROb2RlLT5pc1RleHROb2RlKCkgfHwgIWlzQmxvY2so
Y2hpbGROb2RlKSB8fCBjaGlsZE5vZGUtPmhhc1RhZ05hbWUocHJlVGFnKSkgewotICAgICAgICAg
ICAgLy8gSW4gdGhpcyBjYXNlLCBwdXQgYSBzcGFuIHRhZyBhcm91bmQgdGhlIGNoaWxkIG5vZGUu
Ci0gICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV3Tm9kZSA9IHBhcmVudE5vZGUtPmNsb25lTm9k
ZShmYWxzZSk7Ci0gICAgICAgICAgICBBU1NFUlQobmV3Tm9kZS0+aGFzVGFnTmFtZShzcGFuVGFn
KSk7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogbmV3U3BhbiA9IHRvSFRNTEVsZW1lbnQobmV3
Tm9kZS5nZXQoKSk7Ci0gICAgICAgICAgICBzZXROb2RlQXR0cmlidXRlKG5ld1NwYW4sIHN0eWxl
QXR0ciwgcGFyZW50U3R5bGUtPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICBpbnNlcnROb2RlQWZ0
ZXIobmV3U3BhbiwgY2hpbGROb2RlKTsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAw
OwotICAgICAgICAgICAgbmV3U3Bhbi0+YXBwZW5kQ2hpbGQoY2hpbGROb2RlLCBlYyk7Ci0gICAg
ICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgICAgIGNoaWxkTm9kZSA9IG5ld1NwYW47Ci0g
ICAgICAgIH0gZWxzZSBpZiAoY2hpbGROb2RlLT5pc0hUTUxFbGVtZW50KCkpIHsKLSAgICAgICAg
ICAgIC8vIENvcHkgdGhlIHN0eWxlIGF0dHJpYnV0ZSBhbmQgbWVyZ2UgdGhlbSBpbnRvIHRoZSBj
aGlsZCBub2RlLiAgV2UgZG9uJ3Qgd2FudCB0byBvdmVycmlkZQotICAgICAgICAgICAgLy8gZXhp
c3Rpbmcgc3R5bGVzLCBzbyBkb24ndCBjbG9iYmVyIG9uIG1lcmdlLgotICAgICAgICAgICAgUmVm
UHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBuZXdTdHlsZSA9IHBhcmVudFN0eWxlLT5j
b3B5KCk7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogY2hpbGRFbGVtZW50ID0gdG9IVE1MRWxl
bWVudChjaGlsZE5vZGUpOwotICAgICAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xh
cmF0aW9uPiBleGlzdGluZ1N0eWxlcyA9IGNoaWxkRWxlbWVudC0+Z2V0SW5saW5lU3R5bGVEZWNs
KCktPmNvcHkoKTsKLSAgICAgICAgICAgIGV4aXN0aW5nU3R5bGVzLT5tZXJnZShuZXdTdHlsZS5n
ZXQoKSwgZmFsc2UpOwotICAgICAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShjaGlsZEVsZW1lbnQs
IHN0eWxlQXR0ciwgZXhpc3RpbmdTdHlsZXMtPmNzc1RleHQoKSk7Ci0gICAgICAgIH0KLSAgICB9
Ci19Ci0KIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlRW5kSWZOZWVkZWQoKQog
ewogICAgIGlmICghbV9zaG91bGRNZXJnZUVuZCkKQEAgLTkyOSw4ICs4MTksNiBAQCB2b2lkIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkKICAgICAvLyBQYXN0ZSBpbnRvIHJ1biBv
ZiB0YWJzIHNwbGl0cyB0aGUgdGFiIHNwYW4uCiAgICAgaW5zZXJ0aW9uUG9zID0gcG9zaXRpb25P
dXRzaWRlVGFiU3BhbihpbnNlcnRpb25Qb3MpOwogCi0gICAgYm9vbCBoYW5kbGVkU3R5bGVTcGFu
cyA9IGhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJbnNlcnRpb24oZnJhZ21lbnQsIGluc2VydGlvblBv
cyk7Ci0KICAgICAvLyBJZiB3ZSBhcmUgbm90IHRyeWluZyB0byBtYXRjaCB0aGUgZGVzdGluYXRp
b24gc3R5bGUgd2UgcHJlZmVyIGEgcG9zaXRpb24KICAgICAvLyB0aGF0IGlzIG91dHNpZGUgaW5s
aW5lIGVsZW1lbnRzIHRoYXQgcHJvdmlkZSBzdHlsZS4KICAgICAvLyBUaGlzIHdheSB3ZSBjYW4g
cHJvZHVjZSBhIGxlc3MgdmVyYm9zZSBtYXJrdXAuCkBAIC05NDMsOCArODMxLDcgQEAgdm9pZCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgICAgICAgICBpbnNlcnRpb25Q
b3MgPSBmaXJzdFBvc2l0aW9uSW5Ob2RlKGluc2VydGlvblBvcy5jb250YWluZXJOb2RlKCkpOwog
ICAgICAgICB9CiAKLSAgICAgICAgLy8gRklYTUU6IGlzSW5saW5lTm9kZVdpdGhTdHlsZSBkb2Vz
IG5vdCBjaGVjayBlZGl0YWJpbGl0eS4KLSAgICAgICAgaWYgKFJlZlB0cjxOb2RlPiBub2RlVG9T
cGxpdFRvID0gaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUoaW5zZXJ0aW9uUG9zLCBpc0lubGlu
ZU5vZGVXaXRoU3R5bGUpKSB7CisgICAgICAgIGlmIChSZWZQdHI8Tm9kZT4gbm9kZVRvU3BsaXRU
byA9IGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGluc2VydGlvblBvcywgaXNJbmxpbmVOb2Rl
V2l0aFN0eWxlLCBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSwgZW5jbG9zaW5nQmxvY2soaW5z
ZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKSkpKSB7CiAgICAgICAgICAgICBpZiAoaW5zZXJ0aW9u
UG9zLmNvbnRhaW5lck5vZGUoKSAhPSBub2RlVG9TcGxpdFRvKSB7CiAgICAgICAgICAgICAgICAg
bm9kZVRvU3BsaXRUbyA9IHNwbGl0VHJlZVRvTm9kZShpbnNlcnRpb25Qb3MuYW5jaG9yTm9kZSgp
LCBub2RlVG9TcGxpdFRvLmdldCgpLCB0cnVlKS5nZXQoKTsKICAgICAgICAgICAgICAgICBpbnNl
cnRpb25Qb3MgPSBwb3NpdGlvbkluUGFyZW50QmVmb3JlTm9kZShub2RlVG9TcGxpdFRvLmdldCgp
KTsKQEAgLTEwMDgsOSArODk1LDYgQEAgdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9B
cHBseSgpCiAgICAgCiAgICAgcmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3Bhbklu
bGluZSgpOwogICAgIAotICAgIGlmICghaGFuZGxlZFN0eWxlU3BhbnMpCi0gICAgICAgIGhhbmRs
ZVN0eWxlU3BhbnMoKTsKLSAgICAKICAgICAvLyBNdXRhdGlvbiBldmVudHMgKGJ1ZyAyMDE2MSkg
bWF5IGhhdmUgYWxyZWFkeSByZW1vdmVkIHRoZSBpbnNlcnRlZCBjb250ZW50CiAgICAgaWYgKCFt
X2ZpcnN0Tm9kZUluc2VydGVkIHx8ICFtX2ZpcnN0Tm9kZUluc2VydGVkLT5pbkRvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlzaW9uIDg3OTg3KQorKysgU291cmNlL1dlYkNv
cmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03
OCw4ICs3OCw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZW1vdmVVbnJlbmRlcmVkVGV4dE5vZGVz
QXRFbmRzKCk7CiAgICAgCiAgICAgdm9pZCByZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5
bGVTcGFuSW5saW5lKCk7Ci0gICAgdm9pZCBoYW5kbGVTdHlsZVNwYW5zKCk7Ci0gICAgdm9pZCBj
b3B5U3R5bGVUb0NoaWxkcmVuKE5vZGUqIHBhcmVudE5vZGUsIGNvbnN0IENTU011dGFibGVTdHls
ZURlY2xhcmF0aW9uKiBwYXJlbnRTdHlsZSk7CiAgICAgdm9pZCBoYW5kbGVQYXN0ZUFzUXVvdGF0
aW9uTm9kZSgpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVOb2RlUHJlc2VydmluZ0No
aWxkcmVuKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3Bw
CShyZXZpc2lvbiA4Nzk4NykKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDgsMTEgKzYwOCwxMSBAQCBOb2RlKiBlbmNsb3NpbmdO
b2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uCiAgICAgcmV0dXJuIDA7CiB9CiAKLU5vZGUqIGhpZ2hl
c3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uJiBwLCBib29sICgqbm9kZUlzT2ZU
eXBlKShjb25zdCBOb2RlKiksIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlKQorTm9k
ZSogaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUoY29uc3QgUG9zaXRpb24mIHAsIGJvb2wgKCpu
b2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUqKSwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1
bGUsIE5vZGUqIHN0YXlXaXRoaW4pCiB7CiAgICAgTm9kZSogaGlnaGVzdCA9IDA7CiAgICAgTm9k
ZSogcm9vdCA9IHJ1bGUgPT0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkgPyBoaWdoZXN0RWRp
dGFibGVSb290KHApIDogMDsKLSAgICBmb3IgKE5vZGUqIG4gPSBwLmNvbnRhaW5lck5vZGUoKTsg
bjsgbiA9IG4tPnBhcmVudE5vZGUoKSkgeworICAgIGZvciAoTm9kZSogbiA9IHAuY29udGFpbmVy
Tm9kZSgpOyBuICYmIG4gIT0gc3RheVdpdGhpbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkgewogICAg
ICAgICBpZiAocm9vdCAmJiAhbi0+cmVuZGVyZXJJc0VkaXRhYmxlKCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKICAgICAgICAgaWYgKG5vZGVJc09mVHlwZShuKSkKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJldmlzaW9uIDg3OTg3KQorKysgU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9odG1sZWRpdGluZy5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw3ICs1NCw3IEBAIGNs
YXNzIFZpc2libGVTZWxlY3Rpb247CiAKIE5vZGUqIGhpZ2hlc3RBbmNlc3RvcihOb2RlKik7CiBO
b2RlKiBoaWdoZXN0RWRpdGFibGVSb290KGNvbnN0IFBvc2l0aW9uJik7Ci1Ob2RlKiBoaWdoZXN0
RW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlvbiYsIGJvb2wgKCpub2RlSXNPZlR5cGUp
KGNvbnN0IE5vZGUqKSwgRWRpdGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NF
ZGl0aW5nQm91bmRhcnkpOworTm9kZSogaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUoY29uc3Qg
UG9zaXRpb24mLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25zdCBOb2RlKiksIEVkaXRpbmdCb3Vu
ZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5LCBOb2RlKiBzdGF5
V2l0aGluID0gMCk7CiBOb2RlKiBsb3dlc3RFZGl0YWJsZUFuY2VzdG9yKE5vZGUqKTsgICAKIAog
Tm9kZSogZW5jbG9zaW5nQmxvY2soTm9kZSosIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9
IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1
cC5jcHAJKHJldmlzaW9uIDg3OTg3KQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTIgKzEyMCw3IEBAIGNsYXNzIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yIDogcHVibGljIE0KIHB1YmxpYzoKICAgICBlbnVtIFJhbmdlRnVsbHlTZWxl
Y3RzTm9kZSB7IERvZXNGdWxseVNlbGVjdE5vZGUsIERvZXNOb3RGdWxseVNlbGVjdE5vZGUgfTsK
IAotICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJz
b2x1dGVVUkxzIHNob3VsZFJlc29sdmVVUkxzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBzaG91
bGRBbm5vdGF0ZSwgY29uc3QgUmFuZ2UqIHJhbmdlKQotICAgIDogTWFya3VwQWNjdW11bGF0b3Io
bm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCByYW5nZSkKLSAgICAsIG1fc2hvdWxkQW5ub3RhdGUo
c2hvdWxkQW5ub3RhdGUpCi0gICAgewotICAgIH0KLQorICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxh
dG9yKFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzLCBFQW5ub3RhdGVGb3JJbnRl
cmNoYW5nZSwgY29uc3QgUmFuZ2UqLCBOb2RlKiBoaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID0g
MCk7CiAgICAgTm9kZSogc2VyaWFsaXplTm9kZXMoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0
RW5kKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kU3RyaW5nKGNvbnN0IFN0cmluZyYgcykgeyBy
ZXR1cm4gTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0cmluZyhzKTsgfQogICAgIHZvaWQgd3Jh
cFdpdGhOb2RlKE5vZGUqLCBib29sIGNvbnZlcnRCbG9ja3NUb0lubGluZXMgPSBmYWxzZSwgUmFu
Z2VGdWxseVNlbGVjdHNOb2RlID0gRG9lc0Z1bGx5U2VsZWN0Tm9kZSk7CkBAIC0xMzMsMTggKzEy
OCwzNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRha2VSZXN1bHRzKCk7CiAKIHByaXZhdGU6Cisg
ICAgdm9pZCBhcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFZlY3RvcjxVQ2hhcj4mLCBDU1NTdHlsZURl
Y2xhcmF0aW9uKiwgRG9jdW1lbnQqLCBib29sIGlzQmxvY2sgPSBmYWxzZSk7CisgICAgY29uc3Qg
U3RyaW5nIHN0eWxlTm9kZUNsb3NlVGFnKGJvb2wgaXNCbG9jayA9IGZhbHNlKTsKICAgICB2aXJ0
dWFsIHZvaWQgYXBwZW5kVGV4dChWZWN0b3I8VUNoYXI+JiBvdXQsIFRleHQqKTsKICAgICBTdHJp
bmcgcmVuZGVyZWRUZXh0KGNvbnN0IE5vZGUqLCBjb25zdCBSYW5nZSopOwogICAgIFN0cmluZyBz
dHJpbmdWYWx1ZUZvclJhbmdlKGNvbnN0IE5vZGUqLCBjb25zdCBSYW5nZSopOwogICAgIHZvaWQg
YXBwZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wg
YWRkRGlzcGxheUlubGluZSwgUmFuZ2VGdWxseVNlbGVjdHNOb2RlKTsKICAgICB2b2lkIGFwcGVu
ZEVsZW1lbnQoVmVjdG9yPFVDaGFyPiYgb3V0LCBFbGVtZW50KiBlbGVtZW50LCBOYW1lc3BhY2Vz
KikgeyBhcHBlbmRFbGVtZW50KG91dCwgZWxlbWVudCwgZmFsc2UsIERvZXNGdWxseVNlbGVjdE5v
ZGUpOyB9CiAKKyAgICBOb2RlKiB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBz
dGFydE5vZGUsIE5vZGUqIHBhc3RFbmQsIGJvb2wgc2hvdWxkRW1pdCk7CisKICAgICBib29sIHNo
b3VsZEFubm90YXRlKCkgeyByZXR1cm4gbV9zaG91bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvcklu
dGVyY2hhbmdlOyB9CisgICAgYm9vbCBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoTm9kZSogbm9k
ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6
ZWQgJiYgbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgPT0gbm9kZS0+
cGFyZW50Tm9kZSgpCisgICAgICAgICAgICAmJiBtX3dyYXBwaW5nU3R5bGUgJiYgbV93cmFwcGlu
Z1N0eWxlLT5zdHlsZSgpOworICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmV2ZXJzZWRQ
cmVjZWRpbmdNYXJrdXA7CiAgICAgY29uc3QgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgbV9zaG91
bGRBbm5vdGF0ZTsKKyAgICBOb2RlKiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQ7CisgICAg
UmVmUHRyPEVkaXRpbmdTdHlsZT4gbV93cmFwcGluZ1N0eWxlOwogfTsKIAoraW5saW5lIFN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+
KiBub2RlcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsCisgICAgY29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBo
aWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkKQorICAgIDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMs
IHNob3VsZFJlc29sdmVVUkxzLCByYW5nZSkKKyAgICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxk
QW5ub3RhdGUpCisgICAgLCBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQoaGlnaGVzdE5vZGVU
b0JlU2VyaWFsaXplZCkKK3sKK30KKwogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3Jh
cFdpdGhOb2RlKE5vZGUqIG5vZGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgUmFuZ2VG
dWxseVNlbGVjdHNOb2RlIHJhbmdlRnVsbHlTZWxlY3RzTm9kZSkKIHsKICAgICBWZWN0b3I8VUNo
YXI+IG1hcmt1cDsKQEAgLTE2MCwyMCArMTc0LDMwIEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11
bGF0b3I6OndyYXBXaXRoTm8KIAogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdp
dGhTdHlsZU5vZGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVu
dCwgYm9vbCBpc0Jsb2NrKQogeworICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsKKyAgICBhcHBl
bmRTdHlsZU5vZGVPcGVuVGFnKG9wZW5UYWcsIHN0eWxlLCBkb2N1bWVudCwgaXNCbG9jayk7Cisg
ICAgbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cC5hcHBlbmQoU3RyaW5nOjphZG9wdChvcGVuVGFn
KSk7CisgICAgYXBwZW5kU3RyaW5nKHN0eWxlTm9kZUNsb3NlVGFnKGlzQmxvY2spKTsKK30KKwor
dm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3R5bGVOb2RlT3BlblRhZyhWZWN0
b3I8VUNoYXI+JiBvdXQsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBEb2N1bWVudCogZG9j
dW1lbnQsIGJvb2wgaXNCbG9jaykKK3sKICAgICAvLyBBbGwgdGV4dC1kZWNvcmF0aW9uLXJlbGF0
ZWQgZWxlbWVudHMgc2hvdWxkIGhhdmUgYmVlbiB0cmVhdGVkIGFzIHNwZWNpYWwgYW5jZXN0b3Jz
CiAgICAgLy8gSWYgd2UgZXZlciBoaXQgdGhpcyBBU1NFUlQsIHdlIHNob3VsZCBleHBvcnQgU3R5
bGVDaGFuZ2UgaW4gQXBwbHlTdHlsZUNvbW1hbmQgYW5kIHVzZSBpdCBoZXJlCiAgICAgQVNTRVJU
KHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoc3R5bGUsIENTU1Byb3BlcnR5VGV4dERlY29y
YXRpb24pICYmIHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoc3R5bGUsIENTU1Byb3BlcnR5
V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FM
KGNvbnN0IFN0cmluZywgZGl2U3R5bGUsICgiPGRpdiBzdHlsZT1cIiIpKTsKLSAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2UsICgiPC9kaXY+IikpOwogICAgIERF
RklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHlsZVNwYW5PcGVuLCAoIjxzcGFuIGNs
YXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJcIiBzdHlsZT1cIiIpKTsKKyAgICBhcHBlbmQo
b3V0LCBpc0Jsb2NrID8gZGl2U3R5bGUgOiBzdHlsZVNwYW5PcGVuKTsKKyAgICBhcHBlbmRBdHRy
aWJ1dGVWYWx1ZShvdXQsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50LT5pc0hUTUxEb2N1bWVu
dCgpKTsKKyAgICBvdXQuYXBwZW5kKCdcIicpOworICAgIG91dC5hcHBlbmQoJz4nKTsKK30KKwor
Y29uc3QgU3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhi
b29sIGlzQmxvY2spCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGRp
dkNsb3NlLCAoIjwvZGl2PiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmlu
Zywgc3R5bGVTcGFuQ2xvc2UsICgiPC9zcGFuPiIpKTsKLSAgICBWZWN0b3I8VUNoYXI+IG9wZW5U
YWc7Ci0gICAgYXBwZW5kKG9wZW5UYWcsIGlzQmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9w
ZW4pOwotICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCks
IGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKLSAgICBvcGVuVGFnLmFwcGVuZCgnXCInKTsK
LSAgICBvcGVuVGFnLmFwcGVuZCgnPicpOwotICAgIG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXAu
YXBwZW5kKFN0cmluZzo6YWRvcHQob3BlblRhZykpOwotICAgIGFwcGVuZFN0cmluZyhpc0Jsb2Nr
ID8gZGl2Q2xvc2UgOiBzdHlsZVNwYW5DbG9zZSk7CisgICAgcmV0dXJuIGlzQmxvY2sgPyBkaXZD
bG9zZSA6IHN0eWxlU3BhbkNsb3NlOwogfQogCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OnRha2VSZXN1bHRzKCkKQEAgLTE5MSwxNyArMjE1LDM0IEBAIFN0cmluZyBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6dGFrZVJlc3UKIH0KIAogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kVGV4dChWZWN0b3I8VUNoYXI+JiBvdXQsIFRleHQqIHRleHQpCi17Ci0gICAgaWYg
KCFzaG91bGRBbm5vdGF0ZSgpIHx8ICh0ZXh0LT5wYXJlbnRFbGVtZW50KCkgJiYgdGV4dC0+cGFy
ZW50RWxlbWVudCgpLT50YWdRTmFtZSgpID09IHRleHRhcmVhVGFnKSkgeworeyAgICAKKyAgICBi
b29sIHBhcmVudElzVGV4dGFyZWEgPSB0ZXh0LT5wYXJlbnRFbGVtZW50KCkgJiYgdGV4dC0+cGFy
ZW50RWxlbWVudCgpLT50YWdRTmFtZSgpID09IHRleHRhcmVhVGFnOworICAgIGJvb2wgd3JhcHBp
bmdTcGFuID0gc2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxlKHRleHQpICYmICFwYXJlbnRJc1RleHRh
cmVhOworICAgIGlmICh3cmFwcGluZ1NwYW4pIHsKKyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gd3JhcHBpbmdTdHlsZSA9IG1fd3JhcHBpbmdTdHlsZS0+Y29weSgpOworICAgICAgICAvLyA8
cmRhcjovL3Byb2JsZW0vNTM3MTUzNj4KKyAgICAgICAgLy8gTWFrZSBzdXJlIHNwYW5zIGFyZSBp
bmxpbmUgc3R5bGUgaW4gcGFzdGUgc2lkZSBlLmcuIHNwYW4geyBkaXNwbGF5OiBibG9jayB9Cisg
ICAgICAgIHdyYXBwaW5nU3R5bGUtPmZvcmNlSW5saW5lKCk7CisgICAgICAgIC8vIEZJWE1FOiBz
aG91bGQgdGhpcyBiZSBpbmNsdWRlZCBpbiBmb3JjZUlubGluZT8KKyAgICAgICAgd3JhcHBpbmdT
dHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCwgQ1NTVmFsdWVOb25l
KTsKKworICAgICAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7CisgICAgICAgIGFwcGVuZFN0eWxl
Tm9kZU9wZW5UYWcob3BlblRhZywgd3JhcHBpbmdTdHlsZS0+c3R5bGUoKSwgdGV4dC0+ZG9jdW1l
bnQoKSk7CisgICAgICAgIGFwcGVuZChvdXQsIFN0cmluZzo6YWRvcHQob3BlblRhZykpOworICAg
IH0KKworICAgIGlmICghc2hvdWxkQW5ub3RhdGUoKSB8fCBwYXJlbnRJc1RleHRhcmVhKQogICAg
ICAgICBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChvdXQsIHRleHQpOwotICAgICAgICBy
ZXR1cm47CisgICAgZWxzZSB7CisgICAgICAgIGJvb2wgdXNlUmVuZGVyZWRUZXh0ID0gIWVuY2xv
c2luZ05vZGVXaXRoVGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dCksIHNlbGVjdFRhZyk7Cisg
ICAgICAgIFN0cmluZyBjb250ZW50ID0gdXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRl
eHQsIG1fcmFuZ2UpIDogc3RyaW5nVmFsdWVGb3JSYW5nZSh0ZXh0LCBtX3JhbmdlKTsKKyAgICAg
ICAgVmVjdG9yPFVDaGFyPiBidWZmZXI7CisgICAgICAgIGFwcGVuZENoYXJhY3RlcnNSZXBsYWNp
bmdFbnRpdGllcyhidWZmZXIsIGNvbnRlbnQuY2hhcmFjdGVycygpLCBjb250ZW50Lmxlbmd0aCgp
LCBFbnRpdHlNYXNrSW5QQ0RBVEEpOworICAgICAgICBhcHBlbmQob3V0LCBjb252ZXJ0SFRNTFRl
eHRUb0ludGVyY2hhbmdlRm9ybWF0KFN0cmluZzo6YWRvcHQoYnVmZmVyKSwgdGV4dCkpOwogICAg
IH0KIAotICAgIGJvb2wgdXNlUmVuZGVyZWRUZXh0ID0gIWVuY2xvc2luZ05vZGVXaXRoVGFnKGZp
cnN0UG9zaXRpb25Jbk5vZGUodGV4dCksIHNlbGVjdFRhZyk7Ci0gICAgU3RyaW5nIGNvbnRlbnQg
PSB1c2VSZW5kZXJlZFRleHQgPyByZW5kZXJlZFRleHQodGV4dCwgbV9yYW5nZSkgOiBzdHJpbmdW
YWx1ZUZvclJhbmdlKHRleHQsIG1fcmFuZ2UpOwotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOwot
ICAgIGFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyhidWZmZXIsIGNvbnRlbnQuY2hh
cmFjdGVycygpLCBjb250ZW50Lmxlbmd0aCgpLCBFbnRpdHlNYXNrSW5QQ0RBVEEpOwotICAgIGFw
cGVuZChvdXQsIGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYXQoU3RyaW5nOjphZG9w
dChidWZmZXIpLCB0ZXh0KSk7CisgICAgaWYgKHdyYXBwaW5nU3BhbikKKyAgICAgICAgYXBwZW5k
KG91dCwgc3R5bGVOb2RlQ2xvc2VUYWcoKSk7CiB9CiAgICAgCiBTdHJpbmcgU3R5bGVkTWFya3Vw
QWNjdW11bGF0b3I6OnJlbmRlcmVkVGV4dChjb25zdCBOb2RlKiBub2RlLCBjb25zdCBSYW5nZSog
cmFuZ2UpCkBAIC0yNDUsMzAgKzI4Niw0NiBAQCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9y
OjphcHBlbmRFbGVtCiAKICAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBlbGVtZW50LT5h
dHRyaWJ1dGVzKCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlcy0+bGVuZ3RoKCk7
CisgICAgYm9vbCBzaG91bGRBbm5vdGF0ZU9yRm9yY2VJbmxpbmUgPSBlbGVtZW50LT5pc0hUTUxF
bGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkgfHwgYWRkRGlzcGxheUlubGluZSk7CisgICAg
Ym9vbCBzaG91bGRPdmVycmlkZVN0eWxlQXR0ciA9IHNob3VsZEFubm90YXRlT3JGb3JjZUlubGlu
ZSB8fCBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxlbWVudCk7CiAgICAgZm9yICh1bnNpZ25l
ZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBBdHRyaWJ1dGUqIGF0dHJp
YnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgIC8vIFdlJ2xsIGhh
bmRsZSB0aGUgc3R5bGUgYXR0cmlidXRlIHNlcGFyYXRlbHksIGJlbG93LgotICAgICAgICBpZiAo
YXR0cmlidXRlLT5uYW1lKCkgPT0gc3R5bGVBdHRyICYmIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQo
KSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5SW5saW5lKSkKKyAgICAgICAgaWYg
KGF0dHJpYnV0ZS0+bmFtZSgpID09IHN0eWxlQXR0ciAmJiBzaG91bGRPdmVycmlkZVN0eWxlQXR0
cikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhcHBlbmRBdHRyaWJ1dGUob3V0LCBl
bGVtZW50LCAqYXR0cmlidXRlLCAwKTsKICAgICB9CiAKLSAgICBpZiAoZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUpKSB7Ci0g
ICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUo
dG9IVE1MRWxlbWVudChlbGVtZW50KS0+Z2V0SW5saW5lU3R5bGVEZWNsKCkpOwotICAgICAgICBp
ZiAoc2hvdWxkQW5ub3RhdGUoKSkKLSAgICAgICAgICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1
bGVzRm9yU2VyaWFsaXphdGlvbih0b0hUTUxFbGVtZW50KGVsZW1lbnQpKTsKLSAgICAgICAgaWYg
KGFkZERpc3BsYXlJbmxpbmUpCi0gICAgICAgICAgICBzdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwgdHJ1ZSk7Ci0KLSAgICAgICAg
Ly8gSWYgdGhlIG5vZGUgaXMgbm90IGZ1bGx5IHNlbGVjdGVkIGJ5IHRoZSByYW5nZSwgdGhlbiB3
ZSBkb24ndCB3YW50IHRvIGtlZXAgc3R5bGVzIHRoYXQgYWZmZWN0IGl0cyByZWxhdGlvbnNoaXAg
dG8gdGhlIG5vZGVzIGFyb3VuZCBpdAotICAgICAgICAvLyBvbmx5IHRoZSBvbmVzIHRoYXQgYWZm
ZWN0IGl0IGFuZCB0aGUgbm9kZXMgd2l0aGluIGl0LgotICAgICAgICBpZiAocmFuZ2VGdWxseVNl
bGVjdHNOb2RlID09IERvZXNOb3RGdWxseVNlbGVjdE5vZGUpCi0gICAgICAgICAgICBzdHlsZS0+
c3R5bGUoKS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCk7CisgICAgaWYgKHNob3Vs
ZE92ZXJyaWRlU3R5bGVBdHRyKSB7CisgICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lu
bGluZVN0eWxlOwogCi0gICAgICAgIGlmICghc3R5bGUtPmlzRW1wdHkoKSkgeworICAgICAgICBp
ZiAoc2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxlKGVsZW1lbnQpKSB7CisgICAgICAgICAgICBuZXdJ
bmxpbmVTdHlsZSA9IG1fd3JhcHBpbmdTdHlsZS0+Y29weSgpOworICAgICAgICAgICAgbmV3SW5s
aW5lU3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoZWxlbWVudCk7
CisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhT
dHlsZU9mTm9kZShlbGVtZW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuZXdJbmxp
bmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CisKKyAgICAgICAgaWYgKGVsZW1lbnQt
PmlzU3R5bGVkRWxlbWVudCgpICYmIHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50
KS0+aW5saW5lU3R5bGVEZWNsKCkpCisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+b3ZlcnJp
ZGVXaXRoU3R5bGUoc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5pbmxpbmVT
dHlsZURlY2woKSk7CisKKyAgICAgICAgaWYgKHNob3VsZEFubm90YXRlT3JGb3JjZUlubGluZSkg
eworICAgICAgICAgICAgaWYgKHNob3VsZEFubm90YXRlKCkpCisgICAgICAgICAgICAgICAgbmV3
SW5saW5lU3R5bGUtPm1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKHRvSFRNTEVs
ZW1lbnQoZWxlbWVudCkpOworCisgICAgICAgICAgICBpZiAoYWRkRGlzcGxheUlubGluZSkKKyAg
ICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+Zm9yY2VJbmxpbmUoKTsKKworICAgICAgICAg
ICAgLy8gSWYgdGhlIG5vZGUgaXMgbm90IGZ1bGx5IHNlbGVjdGVkIGJ5IHRoZSByYW5nZSwgdGhl
biB3ZSBkb24ndCB3YW50IHRvIGtlZXAgc3R5bGVzIHRoYXQgYWZmZWN0IGl0cyByZWxhdGlvbnNo
aXAgdG8gdGhlIG5vZGVzIGFyb3VuZCBpdAorICAgICAgICAgICAgLy8gb25seSB0aGUgb25lcyB0
aGF0IGFmZmVjdCBpdCBhbmQgdGhlIG5vZGVzIHdpdGhpbiBpdC4KKyAgICAgICAgICAgIGlmIChy
YW5nZUZ1bGx5U2VsZWN0c05vZGUgPT0gRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSAmJiBuZXdJbmxp
bmVTdHlsZS0+c3R5bGUoKSkKKyAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+c3R5bGUo
KS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCk7CisgICAgICAgIH0KKworICAgICAg
ICBpZiAoIW5ld0lubGluZVN0eWxlLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHlsZVByZWZpeCwgKCIgc3R5bGU9XCIiKSk7CiAg
ICAgICAgICAgICBhcHBlbmQob3V0LCBzdHlsZVByZWZpeCk7Ci0gICAgICAgICAgICBhcHBlbmRB
dHRyaWJ1dGVWYWx1ZShvdXQsIHN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCksIGRvY3VtZW50SXNI
VE1MKTsKKyAgICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgbmV3SW5saW5lU3R5
bGUtPnN0eWxlKCktPmNzc1RleHQoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAgICAgICAgb3V0
LmFwcGVuZCgnXCInKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI3OCw2ICszMzUsMjkgQEAgdm9p
ZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbQogCiBOb2RlKiBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6c2VyaWFsaXplTm9kZXMoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0
RW5kKQogeworICAgIGlmICghbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkKSB7CisgICAgICAg
IE5vZGUqIGxhc3RDbG9zZWQgPSB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihzdGFydE5v
ZGUsIHBhc3RFbmQsIGZhbHNlKTsKKyAgICAgICAgbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVk
ID0gbGFzdENsb3NlZDsKKyAgICB9CisgICAgCisgICAgTm9kZSogcGFyZW50T2ZIaWdoZXN0Tm9k
ZSA9IG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCA/IG1faGlnaGVzdE5vZGVUb0JlU2VyaWFs
aXplZC0+cGFyZW50Tm9kZSgpIDogMDsKKyAgICBpZiAocGFyZW50T2ZIaWdoZXN0Tm9kZSkgewor
ICAgICAgICBtX3dyYXBwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwYXJlbnRPZkhp
Z2hlc3ROb2RlLCBFZGl0aW5nU3R5bGU6OkVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRC
YWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk7CisKKyAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBi
bG9ja3F1b3RlcyBjb250cmlidXRlIHNob3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBi
bG9ja3F1b3RlLAorICAgICAgICAvLyB0byBoZWxwIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5
bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1c2VyIGhhcyBhcHBsaWVkLgorICAgICAgICAvLyBUaGlz
IGhlbHBzIHVzIGdldCB0aGUgY29sb3Igb2YgY29udGVudCBwYXN0ZWQgaW50byBibG9ja3F1b3Rl
cyByaWdodC4KKyAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2Rl
KGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE9m
SGlnaGVzdE5vZGUpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkp
OworCisgICAgICAgIC8vIENhbGwgY29sbGFwc2VUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMgZmly
c3Qgb3Igb3RoZXJ3aXNlIGl0J2xsIGNvcHkgdGhlIHZhbHVlIG92ZXIgZnJvbSBpbi1lZmZlY3Qg
dG8gdGV4dC1kZWNvcmF0aW9ucy4KKyAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRl
eHREZWNvcmF0aW9uUHJvcGVydGllcygpOworICAgIH0KKworICAgIHJldHVybiB0cmF2ZXJzZU5v
ZGVzRm9yU2VyaWFsaXphdGlvbihzdGFydE5vZGUsIHBhc3RFbmQsIHRydWUpOworfQorCitOb2Rl
KiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24o
Tm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kLCBib29sIHNob3VsZEVtaXQpCit7CiAgICAg
VmVjdG9yPE5vZGUqPiBhbmNlc3RvcnNUb0Nsb3NlOwogICAgIE5vZGUqIG5leHQ7CiAgICAgTm9k
ZSogbGFzdENsb3NlZCA9IDA7CkBAIC0zMDQsMTEgKzM4NCwxMyBAQCBOb2RlKiBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6c2VyaWFsaXplCiAgICAgICAgICAgICAgICAgbmV4dCA9IHBhc3RFbmQ7
CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIG1h
cmt1cCBpZiB3ZSdyZSBub3Qgc2tpcHBpbmcgdGhlIGRlc2NlbmRhbnRzCi0gICAgICAgICAgICBh
cHBlbmRTdGFydFRhZyhuKTsKKyAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAgICAgICAg
ICAgICAgIGFwcGVuZFN0YXJ0VGFnKG4pOwogCiAgICAgICAgICAgICAvLyBJZiBub2RlIGhhcyBu
byBjaGlsZHJlbiwgY2xvc2UgdGhlIHRhZyBub3cuCiAgICAgICAgICAgICBpZiAoIW4tPmNoaWxk
Tm9kZUNvdW50KCkpIHsKLSAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWcobik7CisgICAgICAg
ICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRh
ZyhuKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0gbjsKICAgICAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICAgICAgb3BlbmVkVGFnID0gdHJ1ZTsKQEAgLTMyNSw3ICs0MDcsOCBA
QCBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c2VyaWFsaXplCiAgICAgICAgICAgICAg
ICAgaWYgKG5leHQgIT0gcGFzdEVuZCAmJiBuZXh0LT5pc0Rlc2NlbmRhbnRPZihhbmNlc3Rvcikp
CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIC8vIE5vdCBhdCB0
aGUgZW5kIG9mIHRoZSByYW5nZSwgY2xvc2UgYW5jZXN0b3JzIHVwIHRvIHNpYmxpbmcgb2YgbmV4
dCBub2RlLgotICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhhbmNlc3Rvcik7CisgICAgICAg
ICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRh
ZyhhbmNlc3Rvcik7CiAgICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9IGFuY2VzdG9yOwogICAg
ICAgICAgICAgICAgIGFuY2VzdG9yc1RvQ2xvc2UucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAg
fQpAQCAtMzQwLDcgKzQyMyw4IEBAIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJp
YWxpemUKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAg
ICAgICAvLyBvciBiKSBhbmNlc3RvcnMgdGhhdCB3ZSBuZXZlciBlbmNvdW50ZXJlZCBkdXJpbmcg
YSBwcmUtb3JkZXIgdHJhdmVyc2FsIHN0YXJ0aW5nIGF0IHN0YXJ0Tm9kZToKICAgICAgICAgICAg
ICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNEZXNjZW5kYW50T2YocGFyZW50KSk7Ci0gICAg
ICAgICAgICAgICAgICAgIHdyYXBXaXRoTm9kZShwYXJlbnQpOworICAgICAgICAgICAgICAgICAg
ICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdyYXBXaXRoTm9kZShw
YXJlbnQpOwogICAgICAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0gcGFyZW50OwogICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTUxMyw3ICs1OTcsMTMgQEAgU3RyaW5nIGNy
ZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogCiAgICAgZG9jdW1lbnQtPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11
bGF0b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCBzaG91bGRBbm5vdGF0
ZSwgdXBkYXRlZFJhbmdlLmdldCgpKTsKKyAgICBOb2RlKiBib2R5ID0gZW5jbG9zaW5nTm9kZVdp
dGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNlc3RvciksIGJvZHlUYWcpOworICAg
IE5vZGUqIGZ1bGx5U2VsZWN0ZWRSb290ID0gMDsKKyAgICAvLyBGSVhNRTogRG8gdGhpcyBmb3Ig
YWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90IGp1c3QgdGhlIGJvZHkuCisgICAgaWYgKGJv
ZHkgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRl
bnRzT2ZOb2RlKGJvZHkpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHJhbmdlKSkKKyAgICAg
ICAgZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5OworICAgIE5vZGUqIHNwZWNpYWxDb21tb25BbmNl
c3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCksIGZ1
bGx5U2VsZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0ZSk7CisgICAgU3R5bGVkTWFya3VwQWNjdW11
bGF0b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCBzaG91bGRBbm5vdGF0
ZSwgdXBkYXRlZFJhbmdlLmdldCgpLCBzcGVjaWFsQ29tbW9uQW5jZXN0b3IpOwogICAgIE5vZGUq
IHBhc3RFbmQgPSB1cGRhdGVkUmFuZ2UtPnBhc3RMYXN0Tm9kZSgpOwogCiAgICAgTm9kZSogc3Rh
cnROb2RlID0gdXBkYXRlZFJhbmdlLT5maXJzdE5vZGUoKTsKQEAgLTUzOSwxNCArNjI5LDYgQEAg
U3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgICAgICBBU1NFUlQo
IWVjKTsKICAgICB9CiAKLSAgICBOb2RlKiBib2R5ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmly
c3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNlc3RvciksIGJvZHlUYWcpOwotICAgIE5vZGUqIGZ1
bGx5U2VsZWN0ZWRSb290ID0gMDsKLSAgICAvLyBGSVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5
IHNlbGVjdGVkIGJsb2Nrcywgbm90IGp1c3QgdGhlIGJvZHkuCi0gICAgaWYgKGJvZHkgJiYgYXJl
UmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2Rl
KGJvZHkpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHJhbmdlKSkKLSAgICAgICAgZnVsbHlT
ZWxlY3RlZFJvb3QgPSBib2R5OwotCi0gICAgTm9kZSogc3BlY2lhbENvbW1vbkFuY2VzdG9yID0g
aGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKHVwZGF0ZWRSYW5nZS5nZXQoKSwgZnVsbHlTZWxl
Y3RlZFJvb3QsIHNob3VsZEFubm90YXRlKTsKLQogICAgIE5vZGUqIGxhc3RDbG9zZWQgPSBhY2N1
bXVsYXRvci5zZXJpYWxpemVOb2RlcyhzdGFydE5vZGUsIHBhc3RFbmQpOwogCiAgICAgaWYgKHNw
ZWNpYWxDb21tb25BbmNlc3RvciAmJiBsYXN0Q2xvc2VkKSB7CkBAIC01ODYsMjAgKzY2OCw2IEBA
IFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAgICAgfQogICAg
IH0KIAotICAgIC8vIEFkZCBhIHdyYXBwZXIgc3BhbiB3aXRoIHRoZSBzdHlsZXMgdGhhdCBhbGwg
b2YgdGhlIG5vZGVzIGluIHRoZSBtYXJrdXAgaW5oZXJpdC4KLSAgICBDb250YWluZXJOb2RlKiBw
YXJlbnRPZkxhc3RDbG9zZWQgPSBsYXN0Q2xvc2VkID8gbGFzdENsb3NlZC0+cGFyZW50Tm9kZSgp
IDogMDsKLSAgICBpZiAocGFyZW50T2ZMYXN0Q2xvc2VkICYmIHBhcmVudE9mTGFzdENsb3NlZC0+
cmVuZGVyZXIoKSkgewotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRp
bmdTdHlsZTo6Y3JlYXRlKHBhcmVudE9mTGFzdENsb3NlZCwgRWRpdGluZ1N0eWxlOjpFZGl0aW5n
SW5oZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOwotCi0gICAg
ICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJpYnV0ZSBzaG91bGQgb25s
eSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwgdG8gaGVscAotICAgICAgICAvLyB1
cyBkaWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBmcm9tIG9uZXMgdGhhdCB0aGUgdXNlciBoYXMg
YXBwbGllZC4gIFRoaXMgaGVscHMgdXMKLSAgICAgICAgLy8gZ2V0IHRoZSBjb2xvciBvZiBjb250
ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJpZ2h0LgotICAgICAgICBzdHlsZS0+cmVtb3Zl
U3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdOb2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk5vZGUo
cGFyZW50T2ZMYXN0Q2xvc2VkKSwgaXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91
bmRhcnkpKTsKLQotICAgICAgICBpZiAoIXN0eWxlLT5pc0VtcHR5KCkpCi0gICAgICAgICAgICBh
Y2N1bXVsYXRvci53cmFwV2l0aFN0eWxlTm9kZShzdHlsZS0+c3R5bGUoKSwgZG9jdW1lbnQpOwot
ICAgIH0KLQogICAgIC8vIEZJWE1FOiBUaGUgaW50ZXJjaGFuZ2UgbmV3bGluZSBzaG91bGQgYmUg
cGxhY2VkIGluIHRoZSBibG9jayB0aGF0IGl0J3MgaW4sIG5vdCBhZnRlciBhbGwgb2YgdGhlIGNv
bnRlbnQsIHVuY29uZGl0aW9uYWxseS4KICAgICBpZiAoc2hvdWxkQW5ub3RhdGUgPT0gQW5ub3Rh
dGVGb3JJbnRlcmNoYW5nZSAmJiBuZWVkSW50ZXJjaGFuZ2VOZXdsaW5lQWZ0ZXIodmlzaWJsZUVu
ZC5wcmV2aW91cygpKSkKICAgICAgICAgYWNjdW11bGF0b3IuYXBwZW5kU3RyaW5nKGludGVyY2hh
bmdlTmV3bGluZVN0cmluZyk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiA4ODA5MykKKysrIExheW91dFRl
c3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDExLTA2LTAz
ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvcHlpbmcgY2FuIHJlc3VsdCBpbiA8c3Bhbj4g
dGFncyBhcm91bmQgYmxvY2sgZWxlbWVudHMgb24gdGhlIGNsaXBib2FyZAorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ1NjQKKworICAgICAgICBUaGlz
IHBhdGNoIG92ZXJoYXVsZWQgdGhlIHdheSB3ZSBwcmVzZXJ2ZSBzdHlsZXMgd2hlbiBjb3B5aW5n
IGFuZCBwYXN0aW5nIEhUTUwgY29udGVudHMuCisKKyAgICAgICAgTWFueSB0ZXN0IHJlc3VsdHMg
cHJvZ3Jlc3NlZCB3aGlsZSB0aGUgcmVzdWx0cyBvZiBwYXN0ZS00MDM5Nzc3LWZpeC1leHBlY3Rl
ZC50eHQgYW5kIHBhc3RlLXRleHQtd2l0aC1zdHlsZS1leHBlY3RlZC50eHQKKyAgICAgICAgc29t
ZXdoYXQgZ290IG1vcmUgdmVyYm9zZS4gVGhlc2UgcmVzdWx0cyBhcmUgdG8gYmUgaW1wcm92ZWQg
aW4gdGhlIGZvbGxvd3VwIHBhdGNoZXMuCisKKyAgICAgICAgKiBlZGl0aW5nL2RlbGV0aW5nL2Rl
bGV0aW5nLWxpbmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1jb2xvci1leHBlY3RlZC50eHQ6
IFN0eWxlIGF0dHJpYnV0ZSBoYXMKKyAgICAgICAgYW4gZXh0cmEgc3BhY2UgYXQgdGhlIGVuZC4K
KyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFi
bGUtY29udGVudC1leHBlY3RlZC50eHQ6IExpZ2h0R3JheSBpcyBleHByZXNzZWQgYXMKKyAgICAg
ICAgcmdiKDIxMSwgMjExLCAyMTEpOworICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3BhZ2Ut
em9vbS1mb250LXNpemUtZXhwZWN0ZWQudHh0OiBTdHlsZSBhdHRyaWJ1dGUgbG90cyBhbiBleHRy
YSBzcGFjZSBhdCB0aGUgZW5kLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC81MDY1NjA1
LWV4cGVjdGVkLnR4dDogTG9zdCBvbmUgd3JhcHBpbmcgc3Bhbi4KKyAgICAgICAgKiBlZGl0aW5n
L3Bhc3RlYm9hcmQvZGlzcGxheS1ibG9jay1vbi1zcGFucy1leHBlY3RlZC50eHQ6IGIgbmVzdHMg
aXRzZWxmLiBXZSBzaG91bGQgYmUgYWJsZSB0byBpbXByb3ZlCisgICAgICAgIHRoZSBtYXJrdXAg
aW4gdGhlIGZvbGxvd3VwIHBhdGNoZXMuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLTQwMzk3NzctZml4LWV4cGVjdGVkLnR4dDogTm8gbG9uZ2VyIGVycm9uZW91c2x5IG5lc3Rz
IHVsIHdpdGggaXRzZWxmOworICAgICAgICBhbHNvIEIgYW5kIEMgYXJlIG5vIGxvbmdlciBlcnJv
bmVvdXNseSBhbGlnbmVkIHRvIHRoZSByaWdodC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0OiBMb3N0IHRoZSB3cmFwcGluZyBzcGFu
IGFyb3VuZCBwcmUuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEt
ZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
cHJlLTAwMi1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS10ZXh0LTAwMS1leHBlY3RlZC50eHQ6IFNwYW4gaXMgc3BsaXQgYWZ0ZXIgImZvbyBi
YXIiIGJ1dCB2aXN1YWxseSBpZGVudGljYWwuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dDogTG9zdCB0aGUgd3JhcHBpbmcgc3BhbjsgZm9u
dC1mYW1pbHkgYW5kIGZvbnQtd2VpZ2h0CisgICAgICAgIHByb3BlcnRpZXMgYXJlIG5vdyBzZXQg
b24gcC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dDogTm8gbG9uZ2VyIGFkZHMgcmVk
dW5kYW50IGZvbnQtc2l6ZTogbWVkaXVtIGFyb3VuZAorICAgICAgICBhIGRpdiB3aXRoIGhhcyBm
b250LXNpemUgcHJvcGVydHkgc2V0IHRvIDI0cHguCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLXRleHQtd2l0aC1zdHlsZS1leHBlY3RlZC50eHQ6IGIgYW5kIGkgbmVzdCB0aGVt
c2VsdmVzLiBXZSBzaG91bGQgYmUgYWJsZSB0bworICAgICAgICBpbXByb3ZlIHRoZSBtYXJrdXAg
aW4gdGhlIGZvbGxvd3VwIHBhdGNoZXMuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2lu
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQ6IE1hdGNo
ZXMgcGxhdCBwbGF0Zm9ybS1pbmRlcGVuZGVudAorICAgICAgICByZXN1bHQgYmVjYXVzZSBpdCBs
b3N0IGEgd3JhcHBpbmcgc3BhbiB3aXRoIGZvbnQtZmFtaWx5IHByb3BlcnR5LgorICAgICAgICAq
IHBsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1l
eHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAg
ICAqIHBsYXRmb3JtL3F0LW1hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUt
ZXhwZWN0ZWQudHh0OiBEaXR0byBmb3IgcXQuCisKIDIwMTEtMDYtMDMgIEphbWVzIFJvYmluc29u
ICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIE1hcmsgR1BVLW9u
bHkgZXhwZWN0YXRpb25zIGFzIEdQVS4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRp
bmcvZGVsZXRpbmctbGluZS1icmVhay1wcmVzZXJ2ZXMtdW5kZXJsaW5lLWNvbG9yLWV4cGVjdGVk
LnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0aW5n
LWxpbmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1jb2xvci1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDg3OTg3KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5l
LWJyZWFrLXByZXNlcnZlcy11bmRlcmxpbmUtY29sb3ItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xMyw3ICsxMyw3IEBAIEFmdGVyOgogfCA8ZGl2PgogfCAgICJUaGlzIHNob3VsZCBu
b3QgYmUgdW5kZXJsaW5lZC48I3NlbGVjdGlvbi1jYXJldD4iCiB8ICAgPHNwYW4+Ci18ICAgICBz
dHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiBibHVlOyIKK3wgICAgIHN0
eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgY29sb3I6IGJsdWU7ICIKIHwgICAgIDxz
cGFuPgogfCAgICAgICBzdHlsZT0iY29sb3I6cmVkOyIKIHwgICAgICAgIlRoaXMgc2hvdWxkIGJl
IHVuZGVybGluZWQuIgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNl
cnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25l
ZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29u
dGVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBAIFRoaXMgdGVz
dHMgbGlzdCBjcmVhdGlvbiBpbiBhbiBlZGl0YWJsZSAKIHwgICAgICJFZGl0YWJsPCNzZWxlY3Rp
b24tYW5jaG9yPmUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgYSAiCiB8ICAgICA8c3Bhbj4KIHwgICAg
ICAgY29udGVudGVkaXRhYmxlPSJmYWxzZSIKLXwgICAgICAgc3R5bGU9ImJhY2tncm91bmQtY29s
b3I6IExpZ2h0R3JheTsiCit8ICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjEx
LCAyMTEsIDIxMSk7ICIKIHwgICAgICAgIm5vbi1lZGl0YWJsZSIKIHwgICAgICIgaW4gdGhlIG1p
ZGRsZSIKIHwgICAgIDxicj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3Bh
Z2Utem9vbS1mb250LXNpemUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2VkaXRpbmcvaW5zZXJ0aW5nL3BhZ2Utem9vbS1mb250LXNpemUtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA4Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3BhZ2Utem9vbS1m
b250LXNpemUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogVGVz
dCB0byBtYWtlIHN1cmUgdGhhdCBwYXN0aW5nIHRleHQgd2l0aCBhIGZvbnQgc2l6ZSBpbnRvIGEg
cXVpcmtzIG1vZGUgZG9jdW1lbnQgdGhhdCBpcyB6b29tZWQgZG9lcyBub3QgYWx0ZXIgdGhlIGZv
bnQgc2l6ZS4KIAogUGFzdGUgSGVyZTpUaGlzIGZvbnQgaXMgc2l6ZSAxNnB4LgotUGFzdGUgSGVy
ZTo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyAiIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFu
Ij5UaGlzIGZvbnQgaXMgc2l6ZSAxNnB4Ljwvc3Bhbj4KK1Bhc3RlIEhlcmU6PHNwYW4gc3R5bGU9
ImZvbnQtc2l6ZTogMTZweCIgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iPlRoaXMgZm9udCBpcyBz
aXplIDE2cHguPC9zcGFuPgogZG9jdW1lbnQuY29tcGF0TW9kZTogQmFja0NvbXBhdAogUEFTUwog
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTA2NTYwNS1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzUwNjU2MDUt
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA4Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC81MDY1NjA1LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjEsNyArMjEs
NyBAQCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0CiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVE
SVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxh
Y2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVu
QWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkg
dG9ET01SYW5nZTpyYW5nZSBmcm9tIDI0IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+IFNQQU4gPiBG
T05UID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMjQgb2YgI3RleHQg
PiBGT05UID4gRElWID4gU1BBTiA+IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVj
dGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDI0IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+
IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyNCBvZiAjdGV4
dCA+IEZPTlQgPiBESVYgPiBGT05UID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6
RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KQEAgLTQwLDE1ICs0MCwxMyBAQCBUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSB0
ZXh0IGNvcGllZCB3CiB8ICAgPGZvbnQ+CiB8ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIK
IHwgICAgIGNvbG9yPSIjZmYwMDAwIgotfCAgICAgPHNwYW4+Cit8ICAgICA8Zm9udD4KIHwgICAg
ICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCit8ICAgICAgIGNvbG9yPSIjZmYwMDAwIgorfCAg
ICAgICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuIgorfCAgICAgPGRpdj4KIHwgICAgICAgc3R5
bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7ICIKIHwgICAgICAgPGZvbnQ+CiB8ICAgICAgICAgY2xh
c3M9IkFwcGxlLXN0eWxlLXNwYW4iCiB8ICAgICAgICAgY29sb3I9IiNmZjAwMDAiCi18ICAgICAg
ICAgIlRoaXMgdGV4dCBzaG91bGQgYmUgcmVkLiIKLXwgICAgICAgPGRpdj4KLXwgICAgICAgICA8
Zm9udD4KLXwgICAgICAgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgotfCAgICAgICAgICAg
Y29sb3I9IiNmZjAwMDAiCi18ICAgICAgICAgICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuPCNz
ZWxlY3Rpb24tY2FyZXQ+IgorfCAgICAgICAgICJUaGlzIHRleHQgc2hvdWxkIGJlIHJlZC48I3Nl
bGVjdGlvbi1jYXJldD4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGlz
cGxheS1ibG9jay1vbi1zcGFucy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL2Rpc3BsYXktYmxvY2stb24tc3BhbnMtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA4Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kaXNw
bGF5LWJsb2NrLW9uLXNwYW5zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjksOCAr
MjksOCBAQCBhZnRlcjoKIHwgPHNwYW4+CiB8ICAgc3R5bGU9ImRpc3BsYXk6YmxvY2siCiB8ICAg
PGI+Ci18ICAgICAiVGhpczwjc2VsZWN0aW9uLWNhcmV0PiIKLXwgICA8Yj4KK3wgICAgIDxiPgor
fCAgICAgICAiVGhpczwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgICAgICLCoGlzIGFub3RoZXIgcGFy
YWdyYXBoLiIKIHwgICA8YnI+CiB8ICIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS00MDM5Nzc3LWZpeC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
NDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMSArNTEsMTAg
QEAgQWN0dWFsIHJlc3VsdDoKICIKIHwgPHVsPgogfCAgIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0
OyIKLXwgICA8dWw+Ci18ICAgICBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7ICIKLXwgICAgIDxs
aT4KLXwgICAgICAgIkEiCit8ICAgPGxpPgorfCAgICAgIkEiCiB8ICAgPGRpdj4KK3wgICAgIHN0
eWxlPSJ0ZXh0LWFsaWduOiAtd2Via2l0LWF1dG87ICIKIHwgICAgIDx1bD4KIHwgICAgICAgPGxp
PgogfCAgICAgICAgIDxhPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA4Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWlu
LXByZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMTAgKzMsNyBAQCBZb3Ugc2hv
dWxkIHNlZSBtYXJrdXAgaW4gdGhlIGVkaXRhYmxlIHJlCiB8IDxwcmU+CiB8ICAgY29udGVudGVk
aXRhYmxlPSJ0cnVlIgogfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFzcz0iQXBw
bGUtc3R5bGUtc3BhbiIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNw
YWNlOiBub3JtYWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSIKLXwgICAgICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxi
cj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgIDxwcmU+Cit8ICAgICBjb250
ZW50ZWRpdGFibGU9InRydWUiCit8ICAgICBpZD0icHJlIgorfCAgICAgIjxpbnB1dCB0eXBlPSdi
dXR0b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAx
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcs
NCArNyw0IEBAIGJhcgogZm9vCiBiYXIKIGV4ZWNDdXRDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBj
bGFzcz0iZWRpdGluZyI+IDxwcmU+PGJyPjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6
IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3BhbiBjbGFzcz0iQXBwbGUt
c3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6IG5vcm1h
bDsgIj48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2PgorZXhlY1Bhc3RlQ29t
bWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxwcmU+Zm9vIGJhcjwv
cHJlPjwvcHJlPiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3OTg3
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDQgKzIsNCBAQCBUaGlzIGlzIGEgbGF5b3V0IHRl
c3QgZm9yIHJkYXI6Ly9wcm9ibGVtCiBmb28KIGJhcgogZXhlY0NvcHlDb21tYW5kOiA8ZGl2IGlk
PSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+Zm9vIGJhcjwvcHJlPiA8L2Rpdj4KLWV4ZWNQ
YXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3BhbiBj
bGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUt
c3BhY2U6IG5vcm1hbDsgIj48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2Pgor
ZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxw
cmU+Zm9vIGJhcjwvcHJlPjwvcHJlPiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAwMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDAxLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
dGV4dC0wMDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC05LDcgKzksNyBAQCBFRElU
SU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0CiBFRElUSU5HIERFTEVHQVRFOiBz
aG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5n
ZSBmcm9tIDcgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQg
dG8gNyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZl
bkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJW
aWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRp
b24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hh
bmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBTUEFOID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMSBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IFNQ
QU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gU1BBTiA+
IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5p
dHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91
bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiAjdGV4dCA+IFNQQU4gPiBE
SVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAxIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0
ID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlv
bgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCkBAIC0yMSw3ICsyMSw4IEBAIFlvdSBzaG91bGQg
c2VlICJmb28gYmFyYmFyIGJheiIgYmVsb3c6CiB8IDxzcGFuPgogfCAgIGlkPSJ0ZXN0IgogfCAg
ICJmb28gYmFyIgotfCAgICJiYXI8I3NlbGVjdGlvbi1jYXJldD4iCit8ICJiYXI8I3NlbGVjdGlv
bi1jYXJldD4iCit8IDxzcGFuPgogfCAgICLCoGJheiIKIHwgIgogIgpJbmRleDogTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA4Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS10ZXh0LTAxMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyAr
Niw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3QKIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgog
RURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVw
bGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3
SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gU1BBTiA+IEIgPiBGT05UID4gUCA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBCID4gRk9OVCA+IFAgPiBT
UEFOID4gQiA+IEZPTlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNT
ZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcg
REVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6
cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gQiA+IEZPTlQgPiBQID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IEIgPiBG
T05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5n
ZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCkBAIC0zMCwxOSArMzAsMTgg
QEAgVGhlIGNvbnRlbnQgd2FzIGluc2VydGVkIGF0IHRoZSBzdGFydCBvZgogfCAgIDxmb250Pgog
fCAgICAgZmFjZT0iTW9uYWNvIgogfCAgICAgPGI+Ci18ICAgICAgIDxzcGFuPgotfCAgICAgICAg
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgorfCAgICAgICA8cD4KIHwgICAgICAgICBzdHlsZT0i
Zm9udC1mYW1pbHk6IFRpbWVzOyBmb250LXdlaWdodDogbm9ybWFsOyAiCi18ICAgICAgICAgPHA+
Ci18ICAgICAgICAgICA8Zm9udD4KLXwgICAgICAgICAgICAgZmFjZT0iTW9uYWNvIgotfCAgICAg
ICAgICAgICA8Yj4KLXwgICAgICAgICAgICAgICAiaGVsbG8iCi18ICAgICAgICAgPHA+Ci18ICAg
ICAgICAgICA8Zm9udD4KLXwgICAgICAgICAgICAgZmFjZT0iTW9uYWNvIgotfCAgICAgICAgICAg
ICA8Yj4KLXwgICAgICAgICAgICAgICAidGhlcmU8I3NlbGVjdGlvbi1jYXJldD4iCit8ICAgICAg
ICAgPGZvbnQ+Cit8ICAgICAgICAgICBmYWNlPSJNb25hY28iCit8ICAgICAgICAgICA8Yj4KK3wg
ICAgICAgICAgICAgImhlbGxvIgorfCAgICAgICA8cD4KK3wgICAgICAgICBzdHlsZT0iZm9udC1m
YW1pbHk6IFRpbWVzOyBmb250LXdlaWdodDogbm9ybWFsOyAiCit8ICAgICAgICAgPGZvbnQ+Cit8
ICAgICAgICAgICBmYWNlPSJNb25hY28iCit8ICAgICAgICAgICA8Yj4KK3wgICAgICAgICAgICAg
InRoZXJlPCNzZWxlY3Rpb24tY2FyZXQ+IgogfCAiCiAKIApJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA4Nzk4NykKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNCArNiw0IEBA
IGZvbwogZm9vCiAKIGV4ZWNDb3B5Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRp
bmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PiA8ZGl2IGNs
YXNzPSJlZGl0aW5nIj48L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNs
YXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90ZT48L2Rpdj48L2Rp
dj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0
eWxlPSJmb250LXNpemU6IG1lZGl1bTsgIj48ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+
PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9k
aXY+PC9zcGFuPjwvZGl2PgorZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9
ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PiA8
ZGl2IGNsYXNzPSJlZGl0aW5nIj48ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48
YmxvY2txdW90ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9k
aXY+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRo
LXN0eWxlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5
ODcpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0
eWxlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNSw3ICs1LDcgQEAgRURJVElORyBE
RUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRETwogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCBy
ZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgI3RleHQgPiBJID4gQiA+IERJViA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDkgb2YgI3RleHQgPiBGT05UID4gRElWID4gRElWID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBh
c3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRD
aGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gOSBvZiAj
dGV4dCA+IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA5IG9m
ICN0ZXh0ID4gRk9OVCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RP
TVJhbmdlOnJhbmdlIGZyb20gOSBvZiAjdGV4dCA+IEZPTlQgPiBESVYgPiBJID4gQiA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDkgb2YgI3RleHQgPiBGT05UID4gRElWID4gSSA+
IEIgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFm
ZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFu
Z2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtMzAsMTMgKzMwLDE4
IEBAIE1hcmt1cCBiZWZvcmU6CiBNYXJrdXAgYWZ0ZXI6CiB8IDxiPgogfCAgIDxpPgotfCAgICAg
ImhlbGxvIGJvbGQgYW5kIGl0YWxpYyIKLXwgPGRpdj4KLXwgICA8aT4KLXwgICAgICJoZWxsbyBp
dGFsaWMiCi18IDxkaXY+Ci18ICAgPGZvbnQ+Ci18ICAgICBjb2xvcj0iI2ZmMDAwMCIKLXwgICAg
ICJoZWxsbyByZWQ8I3NlbGVjdGlvbi1jYXJldD4iCit8ICAgICA8Yj4KK3wgICAgICAgc3R5bGU9
ImZvbnQtc3R5bGU6IG5vcm1hbDsgIgorfCAgICAgICA8aT4KK3wgICAgICAgICAiaGVsbG8gYm9s
ZCBhbmQgaXRhbGljIgorfCAgICAgPGRpdj4KK3wgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6IG5v
cm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgIgorfCAgICAgICA8aT4KK3wgICAgICAgICAiaGVs
bG8gaXRhbGljIgorfCAgICAgPGRpdj4KK3wgICAgICAgc3R5bGU9ImZvbnQtc3R5bGU6IG5vcm1h
bDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgIgorfCAgICAgICA8Zm9udD4KK3wgICAgICAgICBjb2xv
cj0iI2ZmMDAwMCIKK3wgICAgICAgICAiaGVsbG8gcmVkPCNzZWxlY3Rpb24tY2FyZXQ+IgogfCAi
CiAiCkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNv
ZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gODc5ODcpCisrKyBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJl
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1UaGlzIHRlc3Rz
IGEgYnVnIHdoZW4gY29weWluZyBIVE1MIG1hcmt1cCBpbnNpZGUgPHByZT4gdGFncy4gV2hlbiBw
YXN0ZWQsIHRoaXMgY29udGVudCB3b3VsZCBhcHBlYXIgYXMgdGhlIHJlbmRlcmVkIGZvcm0gb2Yg
dGhhdCBtYXJrdXAuCi1Zb3Ugc2hvdWxkIHNlZSBtYXJrdXAgaW4gdGhlIGVkaXRhYmxlIHJlZ2lv
biBiZWxvdy4gU2VlIDxyZGFyOi8vNTAyNzg1Nz4uCi18IDxwcmU+Ci18ICAgY29udGVudGVkaXRh
YmxlPSJ0cnVlIgotfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFzcz0iQXBwbGUt
c3R5bGUtc3BhbiIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTogJ3RpbWVzIG5ldyByb21hbic7
IHdoaXRlLXNwYWNlOiBub3JtYWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRlZGl0
YWJsZT0idHJ1ZSIKLXwgICAgICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdidXR0
b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUt
MDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJv
bWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA4Nzk4NykKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkK
QEAgLTEsMTAgKzAsMCBAQAotVGVzdHM6IAotQ29weWluZyBhbmQgcGFzdGluZyBjb250ZW50IGlu
c2lkZSBvZiBhIFBSRSB0YWcuIFRoaXMgdGVzdCB3YXMgY3JlYXRlZCBhZnRlciBmaXhpbmcgMzkx
ODA1Ni4KLUV4cGVjdGVkIFJlc3VsdHM6IAotVGhlIFBSRSB0YWcgYW5kIHRoZSBmb3JtYXR0aW5n
IG9mIHRoZSB0ZXh0IGluc2lkZSBvZiB0aGUgUFJFIHNob3VsZCBiZSBtYWludGFpbmVkLiBTaG91
bGQgc2VlIHRoaXMgY29udGVudCBpbiB0aGUgcmVkIGJveCBiZWxvdzoKLWZvbwotYmFyCi1mb28K
LWJhcgotZXhlY0N1dENvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHBy
ZT48YnI+PC9wcmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xh
c3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0i
Zm9udC1mYW1pbHk6ICd0aW1lcyBuZXcgcm9tYW4nOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiPjxw
cmU+Zm9vIGJhcjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdp
bi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDg3OTg3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1
ICswLDAgQEAKLVRoaXMgaXMgYSBsYXlvdXQgdGVzdCBmb3IgcmRhcjovL3Byb2JsZW0vNDM3MDIw
OSAiUmVwcm9kdWNpYmxlIGNyYXNoIHdoZW4gcGFzdGluZyBvdmVyIHdoaXRlc3BhY2U6cHJlIHRl
eHQiLiBUaGUgdGV4dCBiZWxvdyBpcyBzZWxlY3RlZCwgY29waWVkLCBhbmQgcGFzdGVkIG92ZXIg
aXRzZWxmLiBZb3UnbGwgc2VlIGZvby9uYmFyIGlmIHN1Y2Nlc3NmdWwuCi1mb28KLWJhcgotZXhl
Y0NvcHlDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+Zm9vIGJh
cjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJl
ZGl0aW5nIj4gPHByZT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQt
ZmFtaWx5OiAndGltZXMgbmV3IHJvbWFuJzsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIj48cHJlPmZv
byBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMS1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDg3
OTg3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS10ZXh0LTAxMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNyAr
Niw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3QKIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgog
RURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVw
bGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBnaXZlbkFjdGlvbjpXZWJWaWV3
SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2Vs
ZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVM
RUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFu
Z2UgZnJvbSA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gU1BBTiA+IEIgPiBGT05UID4gUCA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBCID4gRk9OVCA+IFAgPiBT
UEFOID4gQiA+IEZPTlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNT
ZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcg
REVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6
cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gQiA+IEZPTlQgPiBQID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IEIgPiBG
T05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5n
ZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCkBAIC0zMCwxOSArMzAsMTgg
QEAgVGhlIGNvbnRlbnQgd2FzIGluc2VydGVkIGF0IHRoZSBzdGFydCBvZgogfCAgIDxmb250Pgog
fCAgICAgZmFjZT0iTW9uYWNvIgogfCAgICAgPGI+Ci18ICAgICAgIDxzcGFuPgotfCAgICAgICAg
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgorfCAgICAgICA8cD4KIHwgICAgICAgICBzdHlsZT0i
Zm9udC1mYW1pbHk6ICd0aW1lcyBuZXcgcm9tYW4nOyBmb250LXdlaWdodDogbm9ybWFsOyAiCi18
ICAgICAgICAgPHA+Ci18ICAgICAgICAgICA8Zm9udD4KLXwgICAgICAgICAgICAgZmFjZT0iTW9u
YWNvIgotfCAgICAgICAgICAgICA8Yj4KLXwgICAgICAgICAgICAgICAiaGVsbG8iCi18ICAgICAg
ICAgPHA+Ci18ICAgICAgICAgICA8Zm9udD4KLXwgICAgICAgICAgICAgZmFjZT0iTW9uYWNvIgot
fCAgICAgICAgICAgICA8Yj4KLXwgICAgICAgICAgICAgICAidGhlcmU8I3NlbGVjdGlvbi1jYXJl
dD4iCit8ICAgICAgICAgPGZvbnQ+Cit8ICAgICAgICAgICBmYWNlPSJNb25hY28iCit8ICAgICAg
ICAgICA8Yj4KK3wgICAgICAgICAgICAgImhlbGxvIgorfCAgICAgICA8cD4KK3wgICAgICAgICBz
dHlsZT0iZm9udC1mYW1pbHk6ICd0aW1lcyBuZXcgcm9tYW4nOyBmb250LXdlaWdodDogbm9ybWFs
OyAiCit8ICAgICAgICAgPGZvbnQ+Cit8ICAgICAgICAgICBmYWNlPSJNb25hY28iCit8ICAgICAg
ICAgICA8Yj4KK3wgICAgICAgICAgICAgInRoZXJlPCNzZWxlY3Rpb24tY2FyZXQ+IgogfCAiCiAK
IApJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
cGxhdGZvcm0vcXQtbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDg3OTg3KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyB0ZXN0cyBhIGJ1ZyB3aGVuIGNvcHlpbmcg
SFRNTCBtYXJrdXAgaW5zaWRlIDxwcmU+IHRhZ3MuIFdoZW4gcGFzdGVkLCB0aGlzIGNvbnRlbnQg
d291bGQgYXBwZWFyIGFzIHRoZSByZW5kZXJlZCBmb3JtIG9mIHRoYXQgbWFya3VwLgotWW91IHNo
b3VsZCBzZWUgbWFya3VwIGluIHRoZSBlZGl0YWJsZSByZWdpb24gYmVsb3cuIFNlZSA8cmRhcjov
LzUwMjc4NTc+LgotfCA8cHJlPgotfCAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKLXwgICBpZD0i
cHJlIgotfCAgIDxzcGFuPgotfCAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCi18ICAgICBz
dHlsZT0iZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyB3aGl0ZS1zcGFjZTogbm9ybWFs
OyAiCi18ICAgICA8cHJlPgotfCAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCi18ICAgICAg
IGlkPSJwcmUiCi18ICAgICAgICI8aW5wdXQgdHlwZT0nYnV0dG9uJz5mb288YnI+YmFyPGI+YmF6
PC9iPjwjc2VsZWN0aW9uLWNhcmV0PiIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103144</attachid>
            <date>2011-08-05 20:37:48 -0700</date>
            <delta_ts>2011-08-06 17:43:20 -0700</delta_ts>
            <desc>updated</desc>
            <filename>bug-34564-20110805203747.patch</filename>
            <type>text/plain</type>
            <size>60965</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNTQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMDgtMDUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ29weWluZyBjYW4gcmVzdWx0IGluIDxzcGFuPiB0YWdzIGFyb3Vu
ZCBibG9jayBlbGVtZW50cyBvbiB0aGUgY2xpcGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDU2NAorCisgICAgICAgIENvbXBsZXRlbHkgb3Zl
cmhhdWxlZCB0aGUgd2F5IFdlYktpdCBwcmVzZXJ2ZXMgc3R5bGUgaW4gY29weSAmIHBhc3RlLgor
CisgICAgICAgIEluc3RlYWQgb2Ygd3JhcHBpbmcgdGhlIGVudGlyZSBzZXJpYWxpemVkIGNvbnRl
bnRzIGJ5IGEgQXBwbGUgc3R5bGUgc3Bhbiwgd2Ugbm93IGFkZCBpbmxpbmUgc3R5bGUKKyAgICAg
ICAgZGVjbGFyYXRpb24gdG8gdGhlIHRvcCBsZXZlbCBlbGVtZW50cywgd3JhcCB0b3AgbGV2ZWwg
dGV4dCBub2RlcyBieSBhIHN0eWxlIHNwYW4uCisKKyAgICAgICAgSW4gUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQsIHdlIGNsZWFudXAgdGhlc2UgaW5saW5lIHN0eWxlIGRlY2xhcmF0aW9ucyBmcm9t
IGVhY2ggbm9kZS4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50
KTogYXV0aG9yIGFuZCB1c2VyIHN0eWxlc2hlZXRzIG9ubHkgaWYKKyAgICAgICAgQXV0aG9yQ1NT
UnVsZXMgaXMgc2V0IGluIHJ1bGVzVG9JbmNsdWRlLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGlu
Z1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29sbGFwc2VUZXh0
RGVjb3JhdGlvblByb3BlcnRpZXMpOiBSZW1vdmUgdGV4dC1kZWNvcmF0aW9uIHByb3BlcnR5IHdo
ZW4KKyAgICAgICAgdGhlIHZhbHVlIG9mIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZl
Y3QgaXMgbm9uZS4KKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVs
ZW1lbnQpOiBUYWtlcyBydWxlc1RvSW5jbHVkZSBmb3Igc3R5bGVSdWxlc0ZvckVsZW1lbnQuCisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXMpOiBDYWxs
cyBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50IHdpdGgKKyAgICAgICAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6QXV0aG9yQ1NTUnVsZXMgfCBDU1NTdHlsZVNlbGVjdG9yOjpDcm9zc09yaWdpbkNT
U1J1bGVzIGFzIGl0IHVzZWQgdG8gZG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6
OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6IEFkZGVkOyByZW1vdmVzIHJlZHVuZGFu
dCBzdHlsZSBpbgorICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1bHRTdHls
ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpmb3JjZUlubGluZSk6
IEFkZGVkOyBhZGRzIGRpc3BsYXk6IGlubGluZTsKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb3Bl
cnRpZXNOb3RJbik6IE5vIGxvbmdlciByZW1vdmVzIHByb3BlcnRpZXMgYmFzZVN0eWxlIGRpZG4n
dCBoYXZlLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmg6CisgICAgICAgICogZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6IFJlbW92ZWQgaGFuZGxlU3R5bGVTcGFu
c0JlZm9yZUluc2VydGlvbiwgaGFuZGxlU3R5bGVTcGFucywKKyAgICAgICAgYW5kIGNvcHlTdHls
ZVRvQ2hpbGRyZW4uCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZSk6IFJld3JpdHRlbjsK
KyAgICAgICAgQmVjYXVzZSB3ZSBmb3JjZSBzcGFucyB0byBiZSBpbmxpbmUgaW4gc2VyaWFsaXph
dGlvbiBjb2RlIChTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dCksCisgICAgICAg
IHdlIG5vIGxvbmdlciBoYXZlIHRvIGFkZCBkaXNwbGF5OiBpbmxpbmUgYW5kIGZsb2F0OiBub25l
IGhlcmUuIE1vdmVkIGxvZ2ljIHRvIGRlYWwgd2l0aCBwYXN0ZQorICAgICAgICBhcyBxdW90YXRp
b24gZnJvbSBoYW5kbGVTdHlsZVNwYW5zLiBBbHNvIHJlbW92ZXMgZW1wdHkgc3R5bGUgc3BhbnMg
bGlrZSB3ZSB1c2VkIHRvIGRvIGluCisgICAgICAgIGhhbmRsZVN0eWxlU3BhbnMuCisgICAgICAg
IChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6IEluIHRoZSBsb2dp
YyB0byBhdm9pZCBzdHlsZSBlbGVtZW50cywgZG9uJ3QgbGV0CisgICAgICAgIGlzSW5saW5lTm9k
ZVdpdGhTdHlsZSBnbyBwYXNzIGVuY2xvc2luZyBibG9jayBlbGVtZW50czsgbm8gbG9uZ2VyIGNh
bGxzIGhhbmRsZVN0eWxlU3BhbnMgb3IKKyAgICAgICAgaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUlu
c2VydGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmg6Cisg
ICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoaWdo
ZXN0RW5jbG9zaW5nTm9kZU9mVHlwZSk6IFRha2VzIG5vZGUgdG8gc3RheSB3aXRoaW4gbGlrZSBu
b2RlIHRyYXZlcnNhbCBmdW5jdGlvbnMuCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5o
OgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjpzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvcik6IFRha2VzIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhTdHlsZU5vZGUpOiBDYWxscyBh
cHBlbmRTdHlsZU5vZGVPcGVuVGFnIGFuZCAKKyAgICAgICAgc3R5bGVOb2RlQ2xvc2VUYWcuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3R5bGVOb2Rl
T3BlblRhZyk6IEV4dHJhY3RlZCBmcm9tIHdyYXBXaXRoU3R5bGVOb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNsb3NlVGFnKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dCk6
IFdyYXBzIHRleHQgbm9kZSB3aXRoIGEgc3R5bGUgc3BhbiBpZiBuZWVkZWQuCisgICAgICAgIFNl
dCBkaXNwbGF5OiBpbmxpbmUgYW5kIGZsb2F0OiBub25lIHNvIHRoYXQgaXQgd29uJ3QgYmUgY29u
dmVydGVkIHRvIGEgYmxvY2sgb24gcGFzdGUgc2lkZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtZW50KTogQWRkIHdyYXBwaW5nIHN0eWxlIGlm
IGFwcHJvcHJpYXRlLgorICAgICAgICBXZSByZW1vdmUgYW55IHByb3BlcnRpZXMgdGhhdCBhcmUg
b3ZlcnJpZGRlbiBieSBkZWZhdWx0IHN0eWxlIGFuZCBhbnkgc3R5bGUgdGhhdCBtYXkgY29uZmxp
Y3QKKyAgICAgICAgd2l0aCB0aGUgY29tcHV0ZWQgc3R5bGUgb2Ygbm9kZSB0byBhdm9pZCBtb2Rp
ZnlpbmcgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VyaWFsaXplZCBub2Rlcy4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2Rlcyk6IENvbXB1dGUgd3Jh
cHBpbmcgc3R5bGU7IGNvcGllcyBvZiB0aGlzCisgICAgICAgIHN0eWxlIGFyZSBtb2RpZmllZCBh
cyBuZWVkZWQgd2hlbiBzZXJpYWxpemluZyB0b3AtbGV2ZWwgZWxlbWVudHMgb3IgdGV4dCBub2Rl
cy4gV2UgY2FsbAorICAgICAgICB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbiB3aXRoIHNo
b3VsZEVtaXQgc2V0IGZhbHNlIGZpcnN0IHRvIGNvbXB1dGUgdGhlIGhpZ2hlc3Qgbm9kZSB0bwor
ICAgICAgICBiZSBzZXJpYWxpemVkLiBUaGUgc2Vjb25kIGNhbGwgdG8gdHJhdmVyc2VOb2Rlc0Zv
clNlcmlhbGl6YXRpb24gd2lsbCBzZXJpYWxpemUgdGhlIG5vZGVzLgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9u
KTogRXh0cmFjdGVkIGZyb20KKyAgICAgICAgc2VyaWFsaXplTm9kZXM7IG91dHB1dHMgc3RyaW5n
IG9ubHkgaWYgc2hvdWxkRW1pdCBpcyB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFy
a3VwKTogTm8gbG9uZ2VyIGFkZHMgd3JhcHBpbmcgc3BhbnMuCisKIDIwMTEtMDgtMDUgIE1hcmsg
Um93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgYnVp
bGQgYWZ0ZXIgcjkyNTM4LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkocmV2aXNpb24gOTI1NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNTgsNyArMjA1OCw3IEBAIFBhc3NSZWZQdHI8
Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgfQogICAgIH0KIAotICAgIGlm
IChtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykgeworICAgIGlmIChtX21hdGNoQXV0aG9yQW5k
VXNlclN0eWxlcyAmJiBydWxlc1RvSW5jbHVkZSAmIEF1dGhvckNTU1J1bGVzKSB7CiAgICAgICAg
IG1fY2hlY2tlci5tX3NhbWVPcmlnaW5Pbmx5ID0gIShydWxlc1RvSW5jbHVkZSAmIENyb3NzT3Jp
Z2luQ1NTUnVsZXMpOwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBydWxlcyBpbiBhdXRob3Igc2hl
ZXRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkocmV2aXNp
b24gOTI1NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU1NCw3ICs1NTQsMTAgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmNvbGxh
cHNlVGV4dERlY29yYXRpbwogICAgIGlmICghdGV4dERlY29yYXRpb25zSW5FZmZlY3QpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRleHREZWNvcmF0aW9uLCB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdC0+Y3NzVGV4dCgpLCBtX211
dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlQcmlvcml0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9u
KSk7CisgICAgaWYgKHRleHREZWNvcmF0aW9uc0luRWZmZWN0LT5pc1ZhbHVlTGlzdCgpKQorICAg
ICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
biwgdGV4dERlY29yYXRpb25zSW5FZmZlY3QtPmNzc1RleHQoKSwgbV9tdXRhYmxlU3R5bGUtPmdl
dFByb3BlcnR5UHJpb3JpdHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikpOworICAgIGVsc2UK
KyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERl
Y29yYXRpb24pOwogICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKIH0KIApAQCAtODE4LDExICs4MjEsMTAg
QEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGUoQ1NTTXV0YWJsZQogICAgIH0KIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1h
dGNoZWRSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBQYXNzUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVt
ZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVs
ZXMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlUnVsZXNGb3JF
bGVtZW50KGVsZW1lbnQsCi0gICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OkF1dGhvckNTU1J1bGVz
IHwgQ1NTU3R5bGVTZWxlY3Rvcjo6Q3Jvc3NPcmlnaW5DU1NSdWxlcyk7CisgICAgUmVmUHRyPENT
U1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVj
dG9yKCktPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHJ1bGVzVG9JbmNsdWRlKTsKICAg
ICBpZiAobWF0Y2hlZFJ1bGVzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
YXRjaGVkUnVsZXMtPmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgIGlmIChtYXRjaGVkUnVs
ZXMtPml0ZW0oaSktPnR5cGUoKSA9PSBDU1NSdWxlOjpTVFlMRV9SVUxFKSB7CkBAIC04MzcsNyAr
ODM5LDggQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYQogCiB2b2lk
IEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50KiBlbGVtZW50
KQogewotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50KTsKKyAg
ICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxl
cyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwKKyAgICAgICAgQ1NT
U3R5bGVTZWxlY3Rvcjo6QXV0aG9yQ1NTUnVsZXMgfCBDU1NTdHlsZVNlbGVjdG9yOjpDcm9zc09y
aWdpbkNTU1J1bGVzKTsKICAgICAvLyBTdHlsZXMgZnJvbSB0aGUgaW5saW5lIHN0eWxlIGRlY2xh
cmF0aW9uLCBoZWxkIGluIHRoZSB2YXJpYWJsZSAic3R5bGUiLCB0YWtlIHByZWNlZGVuY2UgCiAg
ICAgLy8gb3ZlciB0aG9zZSBmcm9tIG1hdGNoZWQgcnVsZXMuCiAgICAgaWYgKG1fbXV0YWJsZVN0
eWxlKQpAQCAtODcwLDE2ICs4NzMsNTYgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVG
cm9tUnVsZXNGbwogICAgIG1fbXV0YWJsZVN0eWxlLT5tZXJnZShmcm9tQ29tcHV0ZWRTdHlsZS5n
ZXQoKSk7CiB9CiAKLXZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlcyhTdHls
ZWRFbGVtZW50KiBlbGVtZW50KQordm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1
bGVzQW5kQ29udGV4dChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBOb2RlKiBjb250ZXh0KQogewor
ICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJv
bU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCk7
Ci0gICAgaWYgKCFzdHlsZUZyb21NYXRjaGVkUnVsZXMpCisgICAgLy8gMS4gUmVtb3ZlIHN0eWxl
IGZyb20gbWF0Y2hlZCBydWxlcyBiZWNhdXNlIHN0eWxlIHJlbWFpbiB3aXRob3V0IHJlcGVhdGlu
ZyBpdCBpbiBpbmxpbmUgc3R5bGUgZGVjbGFyYXRpb24KKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRS
dWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvcjo6QWxsQnV0RW1wdHlDU1NS
dWxlcyk7CisgICAgaWYgKHN0eWxlRnJvbU1hdGNoZWRSdWxlcyAmJiBzdHlsZUZyb21NYXRjaGVk
UnVsZXMtPmxlbmd0aCgpKQorICAgICAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNO
b3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLmdldCgpKTsK
KworICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBwcmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBvdmVy
cmlkZW4gYnkgbWF0Y2hlZCBydWxlcy4KKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBjb21wdXRl
ZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoY29udGV4dCwgRWRpdGluZ0luaGVyaXRhYmxl
UHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKyAgICBpZiAoY29tcHV0ZWRT
dHlsZS0+bV9tdXRhYmxlU3R5bGUpIHsKKyAgICAgICAgY29tcHV0ZWRTdHlsZS0+cmVtb3ZlUHJv
cGVydGllc0luRWxlbWVudERlZmF1bHRTdHlsZShlbGVtZW50KTsKKyAgICAgICAgbV9tdXRhYmxl
U3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4obV9tdXRhYmxlU3R5bGUuZ2V0KCksIGNvbXB1dGVk
U3R5bGUtPm1fbXV0YWJsZVN0eWxlLmdldCgpKTsKKyAgICB9CisKKyAgICAvLyAzLiBJZiB0aGlz
IGVsZW1lbnQgaXMgYSBzcGFuIGFuZCBoYXMgZGlzcGxheTogaW5saW5lIG9yIGZsb2F0OiBub25l
LCByZW1vdmUgdGhlbSB1bmxlc3MgdGhleSBhcmUgb3ZlcnJpZGVuIGJ5IHJ1bGVzLgorICAgIC8v
IFRoZXNlIHJ1bGVzIGFyZSBhZGRlZCBieSBzZXJpYWxpemF0aW9uIGNvZGUgdG8gd3JhcCB0ZXh0
IG5vZGVzLgorICAgIGlmIChpc1N0eWxlU3BhbihlbGVtZW50KSkgeworICAgICAgICBpZiAoIXN0
eWxlRnJvbU1hdGNoZWRSdWxlcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpc3Bs
YXkpICYmIGdldElkZW50aWZpZXJWYWx1ZShtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTUHJvcGVy
dHlEaXNwbGF5KSA9PSBDU1NWYWx1ZUlubGluZSkKKyAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxl
LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXkpOworICAgICAgICBpZiAoIXN0eWxl
RnJvbU1hdGNoZWRSdWxlcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZsb2F0KSAm
JiBnZXRJZGVudGlmaWVyVmFsdWUobV9tdXRhYmxlU3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Rmxv
YXQpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0KTsKKyAgICB9Cit9CisKK3ZvaWQgRWRpdGluZ1N0eWxl
OjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgaWYgKCFtX211dGFibGVTdHlsZSB8fCAhbV9tdXRhYmxlU3R5bGUtPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNO
b3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLmdldCgpKTsK
KyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRlZmF1bHRTdHlsZSA9IHN0
eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvcjo6
VUFBbmRVc2VyQ1NTUnVsZXMpOworCisgICAgVmVjdG9yPGludD4gcHJvcGVydGllc1RvUmVtb3Zl
KGRlZmF1bHRTdHlsZS0+bGVuZ3RoKCkpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZGVmYXVsdFN0eWxlLT5l
bmQoKTsKKyAgICBmb3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGRlZmF1bHRTdHlsZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0LCArK2kpCisgICAg
ICAgIHByb3BlcnRpZXNUb1JlbW92ZVtpXSA9IGl0LT5pZCgpOworCisgICAgbV9tdXRhYmxlU3R5
bGUtPnJlbW92ZVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzVG9SZW1vdmUuZGF0YSgpLCBwcm9w
ZXJ0aWVzVG9SZW1vdmUuc2l6ZSgpKTsKK30KKwordm9pZCBFZGl0aW5nU3R5bGU6OmZvcmNlSW5s
aW5lKCkKK3sKKyAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQorICAgICAgICBtX211dGFibGVTdHls
ZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICBjb25zdCBib29s
IHByb3BlcnR5SXNJbXBvcnRhbnQgPSB0cnVlOworICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCBwcm9wZXJ0eUlzSW1wb3J0
YW50KTsKIH0KIAogc3RhdGljIHZvaWQgcmVjb25jaWxlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVz
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKQEAgLTEwODQsMTMgKzExMjcsMTMg
QEAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBnZXRQcgogICAgIGRpZmZUZXh0
RGVjb3JhdGlvbnMocmVzdWx0LmdldCgpLCBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCBiYXNl
VGV4dERlY29yYXRpb25zSW5FZmZlY3QuZ2V0KCkpOwogICAgIGRpZmZUZXh0RGVjb3JhdGlvbnMo
cmVzdWx0LmdldCgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCBi
YXNlVGV4dERlY29yYXRpb25zSW5FZmZlY3QuZ2V0KCkpOwogCi0gICAgaWYgKGZvbnRXZWlnaHRJ
c0JvbGQocmVzdWx0LmdldCgpKSA9PSBmb250V2VpZ2h0SXNCb2xkKGJhc2VTdHlsZSkpCisgICAg
aWYgKGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKSAm
JiBmb250V2VpZ2h0SXNCb2xkKHJlc3VsdC5nZXQoKSkgPT0gZm9udFdlaWdodElzQm9sZChiYXNl
U3R5bGUpKQogICAgICAgICByZXN1bHQtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdl
aWdodCk7CiAKLSAgICBpZiAoZ2V0UkdCQUZvbnRDb2xvcihyZXN1bHQuZ2V0KCkpID09IGdldFJH
QkFGb250Q29sb3IoYmFzZVN0eWxlKSkKKyAgICBpZiAoYmFzZVN0eWxlLT5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5Q29sb3IpICYmIGdldFJHQkFGb250Q29sb3IocmVzdWx0LmdldCgp
KSA9PSBnZXRSR0JBRm9udENvbG9yKGJhc2VTdHlsZSkpCiAgICAgICAgIHJlc3VsdC0+cmVtb3Zl
UHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvcik7CiAKLSAgICBpZiAoZ2V0VGV4dEFsaWdubWVudChy
ZXN1bHQuZ2V0KCkpID09IGdldFRleHRBbGlnbm1lbnQoYmFzZVN0eWxlKSkKKyAgICBpZiAoYmFz
ZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VGV4dEFsaWduKSAmJiBnZXRU
ZXh0QWxpZ25tZW50KHJlc3VsdC5nZXQoKSkgPT0gZ2V0VGV4dEFsaWdubWVudChiYXNlU3R5bGUp
KQogICAgICAgICByZXN1bHQtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduKTsK
IAogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmgJKHJldmlzaW9uIDkyNTQyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwogY2xhc3MgQ1NTVmFs
dWU7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MRWxlbWVudDsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBQb3NpdGlvbjsKQEAgLTEyMiw3ICsxMjMsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBtZXJnZUlubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqKTsKICAg
ICB2b2lkIG1lcmdlU3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxlbWVudCopOwogICAgIHZvaWQgbWVy
Z2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxlbWVudCopOwotICAgIHZv
aWQgcmVtb3ZlU3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxlbWVudCopOworICAgIHZvaWQgcmVtb3Zl
U3R5bGVGcm9tUnVsZXNBbmRDb250ZXh0KFN0eWxlZEVsZW1lbnQqLCBOb2RlKiBjb250ZXh0KTsK
KyAgICB2b2lkIHJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoRWxlbWVudCop
OworICAgIHZvaWQgZm9yY2VJbmxpbmUoKTsKIAogICAgIGZsb2F0IGZvbnRTaXplRGVsdGEoKSBj
b25zdCB7IHJldHVybiBtX2ZvbnRTaXplRGVsdGE7IH0KICAgICBib29sIGhhc0ZvbnRTaXplRGVs
dGEoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRTaXplRGVsdGEgIT0gTm9Gb250RGVsdGE7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCShyZXZpc2lvbiA5MjU0MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBib29sIGhhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQoKSBjb25z
dCB7IHJldHVybiBtX2hhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQ7IH0KICAgICBib29sIGhh
c0ludGVyY2hhbmdlTmV3bGluZUF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbnRlcmNoYW5n
ZU5ld2xpbmVBdEVuZDsgfQotICAgIAorCiAgICAgdm9pZCByZW1vdmVOb2RlKFBhc3NSZWZQdHI8
Tm9kZT4pOwogICAgIHZvaWQgcmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbihOb2RlKik7CiAK
QEAgLTQ3OCwzNCArNDc4LDM5IEBAIGJvb2wgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3Vs
ZE1lcmcKIC8vIGEgZGl2IGluc2VydGVkIGludG8gYSBkb2N1bWVudCB3aXRoIGRpdiB7IGRpc3Bs
YXk6aW5saW5lOyB9Lgogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5k
YW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZSgpCiB7Ci0gICAgZm9yIChSZWZQdHI8Tm9k
ZT4gbm9kZSA9IG1fZmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCk7IG5vZGU7IG5vZGUgPSBub2RlLT50
cmF2ZXJzZU5leHROb2RlKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS81
MzcxNTM2PiBTdHlsZSBydWxlcyB0aGF0IG1hdGNoIHBhc3RlZCBjb250ZW50IGNhbiBjaGFuZ2Ug
aXQncyBhcHBlYXJhbmNlCi0gICAgICAgIGlmIChpc1N0eWxlU3Bhbihub2RlLmdldCgpKSkgewot
ICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGUgPSB0b0hUTUxFbGVtZW50KG5vZGUuZ2V0KCkpOwot
ICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG90aGVyIHN0eWxlcyB0aGF0IHN0eWxlIHJ1bGVzIGNh
biBnaXZlIHRvIHN0eWxlIHNwYW5zLAotICAgICAgICAgICAgLy8gYnV0IHRoZXNlIGFyZSB0aGUg
dHdvIGltcG9ydGFudCBvbmVzIGJlY2F1c2UgdGhleSdsbCBwcmV2ZW50Ci0gICAgICAgICAgICAv
LyBpbnNlcnRlZCBjb250ZW50IGZyb20gYXBwZWFyaW5nIGluIHRoZSByaWdodCBwYXJhZ3JhcGgu
Ci0gICAgICAgICAgICAvLyBGSVhNRTogSHlhdHQgaXMgY29uY2VybmVkIHRoYXQgc2VsZWN0aXZl
bHkgdXNpbmcgZGlzcGxheTppbmxpbmUgd2lsbCBnaXZlIGluY29uc2lzdGVudAotICAgICAgICAg
ICAgLy8gcmVzdWx0cy4gV2UgYWxyZWFkeSBrbm93IG9uZSBpc3N1ZSBiZWNhdXNlIHRkIGVsZW1l
bnRzIGlnbm9yZSB0aGVpciBkaXNwbGF5IHByb3BlcnR5Ci0gICAgICAgICAgICAvLyBpbiBxdWly
a3MgbW9kZSAod2hpY2ggTWFpbC5hcHAgaXMgYWx3YXlzIGluKS4gV2Ugc2hvdWxkIGxvb2sgZm9y
IGFuIGFsdGVybmF0aXZlLgotICAgICAgICAgICAgaWYgKGlzQmxvY2soZSkpCi0gICAgICAgICAg
ICAgICAgZS0+Z2V0SW5saW5lU3R5bGVEZWNsKCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlz
cGxheSwgQ1NTVmFsdWVJbmxpbmUpOwotICAgICAgICAgICAgaWYgKGUtPnJlbmRlcmVyKCkgJiYg
ZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbG9hdGluZygpKQotICAgICAgICAgICAgICAgIGUt
PmdldElubGluZVN0eWxlRGVjbCgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBDU1NW
YWx1ZU5vbmUpOwotICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzU3R5bGVkRWxlbWVudCgpKSB7
Ci0gICAgICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVk
RWxlbWVudCo+KG5vZGUuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpKSB7Ci0g
ICAgICAgICAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbmV3SW5saW5lU3R5bGUgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZShpbmxpbmVTdHlsZSk7Ci0gICAgICAgICAgICAgICAgbmV3SW5saW5l
U3R5bGUtPnJlbW92ZVN0eWxlRnJvbVJ1bGVzKGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGlm
ICghbmV3SW5saW5lU3R5bGUtPnN0eWxlKCkgfHwgIW5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5s
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTm9kZUF0dHJpYnV0ZShlbGVtZW50
LCBzdHlsZUF0dHIpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld0lubGluZVN0eWxlLT5z
dHlsZSgpLT5sZW5ndGgoKSA8IGlubGluZVN0eWxlLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAg
ICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZUF0dHIsIG5ld0lubGluZVN0eWxl
LT5zdHlsZSgpLT5jc3NUZXh0KCkpOyAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9
CisgICAgUmVmUHRyPE5vZGU+IHBhc3RFbmROb2RlID0gbV9sYXN0TGVhZkluc2VydGVkID8gbV9s
YXN0TGVhZkluc2VydGVkLT50cmF2ZXJzZU5leHROb2RlKCkgOiAwOworICAgIFJlZlB0cjxOb2Rl
PiBuZXh0OworICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2ZpcnN0Tm9kZUluc2VydGVk
LmdldCgpOyBub2RlICYmIG5vZGUgIT0gcGFzdEVuZE5vZGU7IG5vZGUgPSBuZXh0KSB7CisgICAg
ICAgIG5leHQgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCk7CisgICAgICAgIGlmICghbm9kZS0+
aXNTdHlsZWRFbGVtZW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBTdHls
ZWRFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUuZ2V0
KCkpOworCisgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVTdHlsZSA9
IGVsZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpOworICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxl
PiBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAg
ICAgICAgaWYgKGlubGluZVN0eWxlKSB7CisgICAgICAgICAgICBDb250YWluZXJOb2RlKiBjb250
ZXh0ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOworCisgICAgICAgICAgICAvLyBJZiBNYWlsIHdy
YXBzIHRoZSBmcmFnbWVudCB3aXRoIGEgUGFzdGUgYXMgUXVvdGF0aW9uIGJsb2NrcXVvdGUsIG9y
IGlmIHlvdSdyZSBwYXN0aW5nIGludG8gYSBxdW90ZWQgcmVnaW9uLAorICAgICAgICAgICAgLy8g
c3R5bGVzIGZyb20gYmxvY2txdW90ZU5vZGUgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgdGhvc2Ug
ZnJvbSB0aGUgc291cmNlIGRvY3VtZW50LCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5MzA5ODY+IGFu
ZCA8cmRhcjovL3Byb2JsZW0vNTA4OTMyNz4uCisgICAgICAgICAgICBOb2RlKiBibG9ja3F1b3Rl
Tm9kZSA9IGlzTWFpbFBhc3RlQXNRdW90YXRpb25Ob2RlKGNvbnRleHQpID8gY29udGV4dCA6IGVu
Y2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlvbkluTm9kZShjb250ZXh0KSwgaXNNYWlsQmxv
Y2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpOworICAgICAgICAgICAgaWYgKGJsb2Nr
cXVvdGVOb2RlKQorICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUZy
b21SdWxlc0FuZENvbnRleHQoZWxlbWVudCwgZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkp
OworCisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRD
b250ZXh0KGVsZW1lbnQsIGNvbnRleHQpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUg
PT0gbV9sYXN0TGVhZkluc2VydGVkKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICgh
aW5saW5lU3R5bGUgfHwgbmV3SW5saW5lU3R5bGUtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
aWYgKGlzU3R5bGVTcGFuKG5vZGUuZ2V0KCkpKSAvLyBGSVhNRTogc2hvdWxkIGNhbGwgaXNTcGFu
V2l0aG91dEF0dHJpYnV0ZXNPclVuc3R5bGVTdHlsZVNwYW4gaW5zdGVhZAorICAgICAgICAgICAg
ICAgIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4obm9kZS5nZXQoKSk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcmVtb3ZlTm9kZUF0dHJpYnV0ZShlbGVtZW50LCBzdHls
ZUF0dHIpOworICAgICAgICB9IGVsc2UgaWYgKG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5sZW5n
dGgoKSAhPSBpbmxpbmVTdHlsZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzZXROb2RlQXR0cmli
dXRlKGVsZW1lbnQsIHN0eWxlQXR0ciwgbmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmNzc1RleHQo
KSk7CisKKyAgICAgICAgaWYgKGlzU3R5bGVTcGFuKG5vZGUuZ2V0KCkpICYmICFub2RlLT5maXJz
dENoaWxkKCkpCisgICAgICAgICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKG5vZGUu
Z2V0KCkpOwogICAgIH0KIH0KIApAQCAtNTgyLDEyMSArNTg3LDYgQEAgc3RhdGljIHZvaWQgcmVt
b3ZlSGVhZENvbnRlbnRzKFJlcGxhY2VtZQogICAgIH0KIH0KIAotLy8gUmVtb3ZlIHN0eWxlIHNw
YW5zIGJlZm9yZSBpbnNlcnRpb24gaWYgdGhleSBhcmUgdW5uZWNlc3NhcnkuICBJdCdzIGZhc3Rl
ciBiZWNhdXNlIHdlJ2xsIAotLy8gYXZvaWQgZG9pbmcgYSBsYXlvdXQuCi1zdGF0aWMgYm9vbCBo
YW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKFJlcGxhY2VtZW50RnJhZ21lbnQmIGZyYWdt
ZW50LCBjb25zdCBQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zKQotewotICAgIE5vZGUqIHRvcE5vZGUg
PSBmcmFnbWVudC5maXJzdENoaWxkKCk7Ci0KLSAgICAvLyBIYW5kbGluZyB0aGUgY2FzZSB3aGVy
ZSB3ZSBhcmUgZG9pbmcgUGFzdGUgYXMgUXVvdGF0aW9uIG9yIHBhc3RpbmcgaW50byBxdW90ZWQg
Y29udGVudCBpcyBtb3JlIGNvbXBsaWNhdGVkIChzZWUgaGFuZGxlU3R5bGVTcGFucykKLSAgICAv
LyBhbmQgZG9lc24ndCByZWNlaXZlIHRoZSBvcHRpbWl6YXRpb24uCi0gICAgaWYgKGlzTWFpbFBh
c3RlQXNRdW90YXRpb25Ob2RlKHRvcE5vZGUpIHx8IGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKHRvcE5vZGUpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9z
c0VkaXRpbmdCb3VuZGFyeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEVpdGhl
ciB0aGVyZSBhcmUgbm8gc3R5bGUgc3BhbnMgaW4gdGhlIGZyYWdtZW50IG9yIGEgV2ViS2l0IGNs
aWVudCBoYXMgYWRkZWQgY29udGVudCB0byB0aGUgZnJhZ21lbnQKLSAgICAvLyBiZWZvcmUgaW5z
ZXJ0aW5nIGl0LiAgTG9vayBmb3IgYW5kIGhhbmRsZSBzdHlsZSBzcGFucyBhZnRlciBpbnNlcnRp
b24uCi0gICAgaWYgKCFpc1N0eWxlU3Bhbih0b3BOb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgTm9kZSogd3JhcHBpbmdTdHlsZVNwYW4gPSB0b3BOb2RlOwotICAgIFJlZlB0cjxF
ZGl0aW5nU3R5bGU+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShp
bnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIFN0cmluZyBzdHls
ZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5jc3NUZXh0KCk7Ci0KLSAgICAv
LyBGSVhNRTogVGhpcyBzdHJpbmcgY29tcGFyaXNvbiBpcyBhIG5haXZlIHdheSBvZiBjb21wYXJp
bmcgdHdvIHN0eWxlcy4KLSAgICAvLyBXZSBzaG91bGQgYmUgdGFraW5nIHRoZSBkaWZmIGFuZCBj
aGVjayB0aGF0IHRoZSBkaWZmIGlzIGVtcHR5LgotICAgIGlmIChzdHlsZVRleHQgIT0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KHdyYXBwaW5nU3R5bGVTcGFuKS0+Z2V0QXR0cmlidXRlKHN0eWxlQXR0
cikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZyYWdtZW50LnJlbW92ZU5vZGVQcmVz
ZXJ2aW5nQ2hpbGRyZW4od3JhcHBpbmdTdHlsZVNwYW4pOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci0vLyBBdCBjb3B5IHRpbWUsIFdlYktpdCB3cmFwcyBjb3BpZWQgY29udGVudCBpbiBhIHNwYW4g
dGhhdCBjb250YWlucyB0aGUgc291cmNlIGRvY3VtZW50J3MgCi0vLyBkZWZhdWx0IHN0eWxlcy4g
IElmIHRoZSBjb3BpZWQgUmFuZ2UgaW5oZXJpdHMgYW55IG90aGVyIHN0eWxlcyBmcm9tIGl0cyBh
bmNlc3RvcnMsIHdlIHB1dCAKLS8vIHRob3NlIHN0eWxlcyBvbiBhIHNlY29uZCBzcGFuLgotLy8g
VGhpcyBmdW5jdGlvbiByZW1vdmVzIHJlZHVuZGFudCBzdHlsZXMgZnJvbSB0aG9zZSBzcGFucywg
YW5kIHJlbW92ZXMgdGhlIHNwYW5zIGlmIGFsbCB0aGVpciAKLS8vIHN0eWxlcyBhcmUgcmVkdW5k
YW50LiAKLS8vIFdlIHNob3VsZCByZW1vdmUgdGhlIEFwcGxlLXN0eWxlLXNwYW4gY2xhc3Mgd2hl
biB3ZSdyZSBkb25lLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzU2ODU2MDA+LgotLy8gV2Ugc2hvdWxk
IHJlbW92ZSBzdHlsZXMgZnJvbSBzcGFucyB0aGF0IGFyZSBvdmVycmlkZGVuIGJ5IGFsbCBvZiB0
aGVpciBjaGlsZHJlbiwgZWl0aGVyIGhlcmUKLS8vIG9yIGF0IGNvcHkgdGltZS4KLXZvaWQgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoKQotewotICAgIEhUTUxFbGVt
ZW50KiB3cmFwcGluZ1N0eWxlU3BhbiA9IDA7Ci0gICAgLy8gVGhlIHN0eWxlIHNwYW4gdGhhdCBj
b250YWlucyB0aGUgc291cmNlIGRvY3VtZW50J3MgZGVmYXVsdCBzdHlsZSBzaG91bGQgYmUgYXQK
LSAgICAvLyB0aGUgdG9wIG9mIHRoZSBmcmFnbWVudCwgYnV0IE1haWwgc29tZXRpbWVzIGFkZHMg
YSB3cmFwcGVyIChmb3IgUGFzdGUgQXMgUXVvdGF0aW9uKSwKLSAgICAvLyBzbyBzZWFyY2ggZm9y
IHRoZSB0b3AgbGV2ZWwgc3R5bGUgc3BhbiBpbnN0ZWFkIG9mIGFzc3VtaW5nIGl0J3MgYXQgdGhl
IHRvcC4KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpOyBu
b2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpc1N0
eWxlU3Bhbihub2RlKSkgewotICAgICAgICAgICAgd3JhcHBpbmdTdHlsZVNwYW4gPSB0b0hUTUxF
bGVtZW50KG5vZGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Ci0gICAgLy8gVGhlcmUgbWlnaHQgbm90IGJlIGFueSBzdHlsZSBzcGFucyBpZiB3ZSdyZSBwYXN0
aW5nIGZyb20gYW5vdGhlciBhcHBsaWNhdGlvbiBvciBpZiAKLSAgICAvLyB3ZSBhcmUgaGVyZSBi
ZWNhdXNlIG9mIGEgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCAuLi4pIGNhbGwu
Ci0gICAgaWYgKCF3cmFwcGluZ1N0eWxlU3BhbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0
eWxlU3Bhbi0+Z2V0SW5saW5lU3R5bGVEZWNsKCkpOwotICAgIENvbnRhaW5lck5vZGUqIGNvbnRl
eHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwotCi0gICAgLy8gSWYgTWFpbCB3
cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBibG9ja3F1b3RlLCBv
ciBpZiB5b3UncmUgcGFzdGluZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKLSAgICAvLyBzdHlsZXMg
ZnJvbSBibG9ja3F1b3RlTm9kZSBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSB0aG9zZSBmcm9tIHRo
ZSBzb3VyY2UgZG9jdW1lbnQsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDkzMDk4Nj4gYW5kIDxyZGFy
Oi8vcHJvYmxlbS81MDg5MzI3Pi4KLSAgICBOb2RlKiBibG9ja3F1b3RlTm9kZSA9IGlzTWFpbFBh
c3RlQXNRdW90YXRpb25Ob2RlKGNvbnRleHQpID8gY29udGV4dCA6IGVuY2xvc2luZ05vZGVPZlR5
cGUoZmlyc3RQb3NpdGlvbkluTm9kZShjb250ZXh0KSwgaXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jv
c3NFZGl0aW5nQm91bmRhcnkpOwotICAgIGlmIChibG9ja3F1b3RlTm9kZSkKLSAgICAgICAgY29u
dGV4dCA9IGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotCi0gICAgLy8gVGhpcyBvcGVy
YXRpb24gcmVxdWlyZXMgdGhhdCBvbmx5IGVkaXRpbmcgc3R5bGVzIHRvIGJlIHJlbW92ZWQgZnJv
bSBzb3VyY2VEb2N1bWVudFN0eWxlLgotICAgIHN0eWxlLT5wcmVwYXJlVG9BcHBseUF0KGZpcnN0
UG9zaXRpb25Jbk5vZGUoY29udGV4dCkpOwotCi0gICAgLy8gUmVtb3ZlIGJsb2NrIHByb3BlcnRp
ZXMgaW4gdGhlIHNwYW4ncyBzdHlsZS4gVGhpcyBwcmV2ZW50cyBwcm9wZXJ0aWVzIHRoYXQgcHJv
YmFibHkgaGF2ZSBubyBlZmZlY3QgCi0gICAgLy8gY3VycmVudGx5IGZyb20gYWZmZWN0aW5nIGJs
b2NrcyBsYXRlciBpZiB0aGUgc3R5bGUgaXMgY2xvbmVkIGZvciBhIG5ldyBibG9jayBlbGVtZW50
IGR1cmluZyBhIGZ1dHVyZSAKLSAgICAvLyBlZGl0aW5nIG9wZXJhdGlvbi4KLSAgICAvLyBGSVhN
RTogVGhleSAqY2FuKiBoYXZlIGFuIGVmZmVjdCBjdXJyZW50bHkgaWYgYmxvY2tzIGJlbmVhdGgg
dGhlIHN0eWxlIHNwYW4gYXJlbid0IGluZGl2aWR1YWxseSBtYXJrZWQKLSAgICAvLyB3aXRoIGJs
b2NrIHN0eWxlcyBieSB0aGUgZWRpdGluZyBlbmdpbmUgdXNlZCB0byBzdHlsZSB0aGVtLiAgV2Vi
S2l0IGRvZXNuJ3QgZG8gdGhpcywgYnV0IG90aGVycyBtaWdodC4KLSAgICBzdHlsZS0+cmVtb3Zl
QmxvY2tQcm9wZXJ0aWVzKCk7Ci0KLSAgICBpZiAoc3R5bGUtPmlzRW1wdHkoKSB8fCAhd3JhcHBp
bmdTdHlsZVNwYW4tPmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgcmVtb3ZlTm9kZVByZXNlcnZpbmdD
aGlsZHJlbih3cmFwcGluZ1N0eWxlU3Bhbik7Ci0gICAgZWxzZQotICAgICAgICBzZXROb2RlQXR0
cmlidXRlKHdyYXBwaW5nU3R5bGVTcGFuLCBzdHlsZUF0dHIsIHN0eWxlLT5zdHlsZSgpLT5jc3NU
ZXh0KCkpOwotfQotCi0vLyBUYWtlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgb2YgYSBzcGFuIGFuZCBh
cHBseSBpdCB0byBpdCdzIGNoaWxkcmVuIGluc3RlYWQuICBUaGlzIGFsbG93cyB1cyB0bwotLy8g
Y29udmVydCBpbnZhbGlkIEhUTUwgd2hlcmUgYSBzcGFuIGNvbnRhaW5zIGJsb2NrIGVsZW1lbnRz
IGludG8gdmFsaWQgSFRNTCB3aGlsZSBwcmVzZXJ2aW5nCi0vLyBzdHlsZXMuCi12b2lkIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpjb3B5U3R5bGVUb0NoaWxkcmVuKE5vZGUqIHBhcmVudE5vZGUs
IGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBwYXJlbnRTdHlsZSkKLXsKLSAgICBB
U1NFUlQocGFyZW50Tm9kZS0+aGFzVGFnTmFtZShzcGFuVGFnKSk7Ci0gICAgTm9kZVZlY3RvciBj
aGlsZE5vZGVzOwotICAgIGZvciAoUmVmUHRyPE5vZGU+IGNoaWxkTm9kZSA9IHBhcmVudE5vZGUt
PmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJs
aW5nKCkpCi0gICAgICAgIGNoaWxkTm9kZXMuYXBwZW5kKGNoaWxkTm9kZSk7Ci0gICAgICAgIAot
ICAgIGZvciAoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZE5vZGVzLmJlZ2lu
KCk7IGl0ICE9IGNoaWxkTm9kZXMuZW5kKCk7IGl0KyspIHsKLSAgICAgICAgTm9kZSogY2hpbGRO
b2RlID0gaXQtPmdldCgpOwotICAgICAgICBpZiAoY2hpbGROb2RlLT5pc1RleHROb2RlKCkgfHwg
IWlzQmxvY2soY2hpbGROb2RlKSB8fCBjaGlsZE5vZGUtPmhhc1RhZ05hbWUocHJlVGFnKSkgewot
ICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBwdXQgYSBzcGFuIHRhZyBhcm91bmQgdGhlIGNo
aWxkIG5vZGUuCi0gICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV3Tm9kZSA9IHBhcmVudE5vZGUt
PmNsb25lTm9kZShmYWxzZSk7Ci0gICAgICAgICAgICBBU1NFUlQobmV3Tm9kZS0+aGFzVGFnTmFt
ZShzcGFuVGFnKSk7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogbmV3U3BhbiA9IHRvSFRNTEVs
ZW1lbnQobmV3Tm9kZS5nZXQoKSk7Ci0gICAgICAgICAgICBzZXROb2RlQXR0cmlidXRlKG5ld1Nw
YW4sIHN0eWxlQXR0ciwgcGFyZW50U3R5bGUtPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICBpbnNl
cnROb2RlQWZ0ZXIobmV3U3BhbiwgY2hpbGROb2RlKTsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgICAgICAgICAgbmV3U3Bhbi0+YXBwZW5kQ2hpbGQoY2hpbGROb2RlLCBl
Yyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgICAgIGNoaWxkTm9kZSA9IG5l
d1NwYW47Ci0gICAgICAgIH0gZWxzZSBpZiAoY2hpbGROb2RlLT5pc0hUTUxFbGVtZW50KCkpIHsK
LSAgICAgICAgICAgIC8vIENvcHkgdGhlIHN0eWxlIGF0dHJpYnV0ZSBhbmQgbWVyZ2UgdGhlbSBp
bnRvIHRoZSBjaGlsZCBub2RlLiAgV2UgZG9uJ3Qgd2FudCB0byBvdmVycmlkZQotICAgICAgICAg
ICAgLy8gZXhpc3Rpbmcgc3R5bGVzLCBzbyBkb24ndCBjbG9iYmVyIG9uIG1lcmdlLgotICAgICAg
ICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBuZXdTdHlsZSA9IHBhcmVu
dFN0eWxlLT5jb3B5KCk7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogY2hpbGRFbGVtZW50ID0g
dG9IVE1MRWxlbWVudChjaGlsZE5vZGUpOwotICAgICAgICAgICAgUmVmUHRyPENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uPiBleGlzdGluZ1N0eWxlcyA9IGNoaWxkRWxlbWVudC0+Z2V0SW5saW5l
U3R5bGVEZWNsKCktPmNvcHkoKTsKLSAgICAgICAgICAgIGV4aXN0aW5nU3R5bGVzLT5tZXJnZShu
ZXdTdHlsZS5nZXQoKSwgZmFsc2UpOwotICAgICAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShjaGls
ZEVsZW1lbnQsIHN0eWxlQXR0ciwgZXhpc3RpbmdTdHlsZXMtPmNzc1RleHQoKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlRW5kSWZO
ZWVkZWQoKQogewogICAgIGlmICghbV9zaG91bGRNZXJnZUVuZCkKQEAgLTc4Nyw3ICs2NzcsNyBA
QCBzdGF0aWMgYm9vbCBpc0lubGluZU5vZGVXaXRoU3R5bGUoY29uc3QgCiAKICAgICByZXR1cm4g
ZmFsc2U7CiB9Ci0gICAgCisKIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHko
KQogewogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCk7
CkBAIC05MjksMjQgKzgxOSwyMyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0Fw
cGx5KCkKICAgICAvLyBQYXN0ZSBpbnRvIHJ1biBvZiB0YWJzIHNwbGl0cyB0aGUgdGFiIHNwYW4u
CiAgICAgaW5zZXJ0aW9uUG9zID0gcG9zaXRpb25PdXRzaWRlVGFiU3BhbihpbnNlcnRpb25Qb3Mp
OwogCi0gICAgYm9vbCBoYW5kbGVkU3R5bGVTcGFucyA9IGhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJ
bnNlcnRpb24oZnJhZ21lbnQsIGluc2VydGlvblBvcyk7Ci0KICAgICAvLyBJZiB3ZSBhcmUgbm90
IHRyeWluZyB0byBtYXRjaCB0aGUgZGVzdGluYXRpb24gc3R5bGUgd2UgcHJlZmVyIGEgcG9zaXRp
b24KICAgICAvLyB0aGF0IGlzIG91dHNpZGUgaW5saW5lIGVsZW1lbnRzIHRoYXQgcHJvdmlkZSBz
dHlsZS4KICAgICAvLyBUaGlzIHdheSB3ZSBjYW4gcHJvZHVjZSBhIGxlc3MgdmVyYm9zZSBtYXJr
dXAuCiAgICAgLy8gV2UgY2FuIHNraXAgdGhpcyBvcHRpbWl6YXRpb24gZm9yIGZyYWdtZW50cyBu
b3Qgd3JhcHBlZCBpbiBvbmUgb2YKICAgICAvLyBvdXIgc3R5bGUgc3BhbnMgYW5kIGZvciBwb3Np
dGlvbnMgaW5zaWRlIGxpc3QgaXRlbXMKICAgICAvLyBzaW5jZSBpbnNlcnRBc0xpc3RJdGVtcyBh
bHJlYWR5IGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgotICAgIGlmICghbV9tYXRjaFN0eWxlICYmICFl
bmNsb3NpbmdMaXN0KGluc2VydGlvblBvcy5jb250YWluZXJOb2RlKCkpICYmIGlzU3R5bGVTcGFu
KGZyYWdtZW50LmZpcnN0Q2hpbGQoKSkpIHsKKyAgICBpZiAoIW1fbWF0Y2hTdHlsZSAmJiAhZW5j
bG9zaW5nTGlzdChpbnNlcnRpb25Qb3MuY29udGFpbmVyTm9kZSgpKSkgewogICAgICAgICBpZiAo
aW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKS0+aXNUZXh0Tm9kZSgpICYmIGluc2VydGlvblBv
cy5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSAmJiAhaW5zZXJ0aW9uUG9zLmF0TGFzdEVkaXRpbmdQ
b3NpdGlvbkZvck5vZGUoKSkgewotICAgICAgICAgICAgc3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdF
bGVtZW50KGluc2VydGlvblBvcy5jb250YWluZXJUZXh0KCksIGluc2VydGlvblBvcy5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSk7CisgICAgICAgICAgICBzcGxpdFRleHROb2RlKGluc2VydGlvblBv
cy5jb250YWluZXJUZXh0KCksIGluc2VydGlvblBvcy5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7
CiAgICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBmaXJzdFBvc2l0aW9uSW5Ob2RlKGluc2VydGlv
blBvcy5jb250YWluZXJOb2RlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IGlz
SW5saW5lTm9kZVdpdGhTdHlsZSBkb2VzIG5vdCBjaGVjayBlZGl0YWJpbGl0eS4KLSAgICAgICAg
aWYgKFJlZlB0cjxOb2RlPiBub2RlVG9TcGxpdFRvID0gaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5
cGUoaW5zZXJ0aW9uUG9zLCBpc0lubGluZU5vZGVXaXRoU3R5bGUpKSB7Ci0gICAgICAgICAgICBp
ZiAoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKSAhPSBub2RlVG9TcGxpdFRvKSB7Ci0gICAg
ICAgICAgICAgICAgbm9kZVRvU3BsaXRUbyA9IHNwbGl0VHJlZVRvTm9kZShpbnNlcnRpb25Qb3Mu
YW5jaG9yTm9kZSgpLCBub2RlVG9TcGxpdFRvLmdldCgpLCB0cnVlKS5nZXQoKTsKKyAgICAgICAg
aWYgKFJlZlB0cjxOb2RlPiBub2RlVG9TcGxpdFRvID0gaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5
cGUoaW5zZXJ0aW9uUG9zLCBpc0lubGluZU5vZGVXaXRoU3R5bGUsCisgICAgICAgICAgICBDYW5u
b3RDcm9zc0VkaXRpbmdCb3VuZGFyeSwgZW5jbG9zaW5nQmxvY2soaW5zZXJ0aW9uUG9zLmNvbnRh
aW5lck5vZGUoKSkpKSB7CisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5v
ZGUoKSAhPSBub2RlVG9TcGxpdFRvLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBu
b2RlVG9TcGxpdFRvID0gc3BsaXRUcmVlVG9Ob2RlKGluc2VydGlvblBvcy5hbmNob3JOb2RlKCks
IG5vZGVUb1NwbGl0VG8tPnBhcmVudE5vZGUoKSkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uUG9zID0gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZVRvU3BsaXRUby5nZXQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEwMDgsOSArODk3LDYgQEAgdm9pZCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgCiAgICAgcmVtb3ZlUmVkdW5k
YW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZSgpOwogICAgIAotICAgIGlmICghaGFuZGxl
ZFN0eWxlU3BhbnMpCi0gICAgICAgIGhhbmRsZVN0eWxlU3BhbnMoKTsKLSAgICAKICAgICAvLyBN
dXRhdGlvbiBldmVudHMgKGJ1ZyAyMDE2MSkgbWF5IGhhdmUgYWxyZWFkeSByZW1vdmVkIHRoZSBp
bnNlcnRlZCBjb250ZW50CiAgICAgaWYgKCFtX2ZpcnN0Tm9kZUluc2VydGVkIHx8ICFtX2ZpcnN0
Tm9kZUluc2VydGVkLT5pbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlz
aW9uIDkyNTQyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw4ICs3OCw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZW1vdmVVbnJlbmRlcmVkVGV4dE5vZGVzQXRFbmRzKCk7CiAgICAgCiAgICAgdm9pZCByZW1v
dmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKCk7Ci0gICAgdm9pZCBoYW5k
bGVTdHlsZVNwYW5zKCk7Ci0gICAgdm9pZCBjb3B5U3R5bGVUb0NoaWxkcmVuKE5vZGUqIHBhcmVu
dE5vZGUsIGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBwYXJlbnRTdHlsZSk7CiAg
ICAgdm9pZCBoYW5kbGVQYXN0ZUFzUXVvdGF0aW9uTm9kZSgpOwogICAgIAogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiA5MjU0MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsMTEg
KzYwNywxMSBAQCBOb2RlKiBlbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uCiAgICAg
cmV0dXJuIDA7CiB9CiAKLU5vZGUqIGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBv
c2l0aW9uJiBwLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25zdCBOb2RlKiksIEVkaXRpbmdCb3Vu
ZGFyeUNyb3NzaW5nUnVsZSBydWxlKQorTm9kZSogaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUo
Y29uc3QgUG9zaXRpb24mIHAsIGJvb2wgKCpub2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUqKSwgRWRp
dGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUsIE5vZGUqIHN0YXlXaXRoaW4pCiB7CiAgICAg
Tm9kZSogaGlnaGVzdCA9IDA7CiAgICAgTm9kZSogcm9vdCA9IHJ1bGUgPT0gQ2Fubm90Q3Jvc3NF
ZGl0aW5nQm91bmRhcnkgPyBoaWdoZXN0RWRpdGFibGVSb290KHApIDogMDsKLSAgICBmb3IgKE5v
ZGUqIG4gPSBwLmNvbnRhaW5lck5vZGUoKTsgbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkgeworICAg
IGZvciAoTm9kZSogbiA9IHAuY29udGFpbmVyTm9kZSgpOyBuICYmIG4gIT0gc3RheVdpdGhpbjsg
biA9IG4tPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAocm9vdCAmJiAhbi0+cmVuZGVyZXJJ
c0VkaXRhYmxlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKG5vZGVJc09m
VHlwZShuKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJldmlzaW9u
IDkyNTQyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKIE5vZGUq
IGhpZ2hlc3RBbmNlc3RvcihOb2RlKik7CiBOb2RlKiBoaWdoZXN0RWRpdGFibGVSb290KGNvbnN0
IFBvc2l0aW9uJik7Ci1Ob2RlKiBoaWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3Np
dGlvbiYsIGJvb2wgKCpub2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUqKSwgRWRpdGluZ0JvdW5kYXJ5
Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOworTm9kZSogaGlnaGVz
dEVuY2xvc2luZ05vZGVPZlR5cGUoY29uc3QgUG9zaXRpb24mLCBib29sICgqbm9kZUlzT2ZUeXBl
KShjb25zdCBOb2RlKiksIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3Nz
RWRpdGluZ0JvdW5kYXJ5LCBOb2RlKiBzdGF5V2l0aGluID0gMCk7CiBOb2RlKiBsb3dlc3RFZGl0
YWJsZUFuY2VzdG9yKE5vZGUqKTsgICAKIAogTm9kZSogZW5jbG9zaW5nQmxvY2soTm9kZSosIEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJldmlzaW9uIDkyNTQyKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTIg
KzEyMCw3IEBAIGNsYXNzIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yIDogcHVibGljIE0KIHB1Ymxp
YzoKICAgICBlbnVtIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSB7IERvZXNGdWxseVNlbGVjdE5vZGUs
IERvZXNOb3RGdWxseVNlbGVjdE5vZGUgfTsKIAotICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9y
KFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzIHNob3VsZFJlc29sdmVVUkxzLCBF
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBzaG91bGRBbm5vdGF0ZSwgY29uc3QgUmFuZ2UqIHJhbmdl
KQotICAgIDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCByYW5n
ZSkKLSAgICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5ub3RhdGUpCi0gICAgewotICAgIH0K
LQorICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJz
b2x1dGVVUkxzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgY29uc3QgUmFuZ2UqLCBOb2RlKiBo
aWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID0gMCk7CiAgICAgTm9kZSogc2VyaWFsaXplTm9kZXMo
Tm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4gTWFya3VwQWNjdW11bGF0b3I6OmFwcGVu
ZFN0cmluZyhzKTsgfQogICAgIHZvaWQgd3JhcFdpdGhOb2RlKE5vZGUqLCBib29sIGNvbnZlcnRC
bG9ja3NUb0lubGluZXMgPSBmYWxzZSwgUmFuZ2VGdWxseVNlbGVjdHNOb2RlID0gRG9lc0Z1bGx5
U2VsZWN0Tm9kZSk7CkBAIC0xMzMsMTggKzEyOCwzNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRh
a2VSZXN1bHRzKCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCBhcHBlbmRTdHlsZU5vZGVPcGVuVGFn
KFZlY3RvcjxVQ2hhcj4mLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgRG9jdW1lbnQqLCBib29sIGlz
QmxvY2sgPSBmYWxzZSk7CisgICAgY29uc3QgU3RyaW5nIHN0eWxlTm9kZUNsb3NlVGFnKGJvb2wg
aXNCbG9jayA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kVGV4dChWZWN0b3I8VUNo
YXI+JiBvdXQsIFRleHQqKTsKICAgICBTdHJpbmcgcmVuZGVyZWRUZXh0KGNvbnN0IE5vZGUqLCBj
b25zdCBSYW5nZSopOwogICAgIFN0cmluZyBzdHJpbmdWYWx1ZUZvclJhbmdlKGNvbnN0IE5vZGUq
LCBjb25zdCBSYW5nZSopOwogICAgIHZvaWQgYXBwZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBv
dXQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgYWRkRGlzcGxheUlubGluZSwgUmFuZ2VGdWxseVNl
bGVjdHNOb2RlKTsKICAgICB2b2lkIGFwcGVuZEVsZW1lbnQoVmVjdG9yPFVDaGFyPiYgb3V0LCBF
bGVtZW50KiBlbGVtZW50LCBOYW1lc3BhY2VzKikgeyBhcHBlbmRFbGVtZW50KG91dCwgZWxlbWVu
dCwgZmFsc2UsIERvZXNGdWxseVNlbGVjdE5vZGUpOyB9CiAKKyAgICBOb2RlKiB0cmF2ZXJzZU5v
ZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQsIGJvb2wg
c2hvdWxkRW1pdCk7CisKICAgICBib29sIHNob3VsZEFubm90YXRlKCkgeyByZXR1cm4gbV9zaG91
bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlOyB9CisgICAgYm9vbCBzaG91bGRB
cHBseVdyYXBwaW5nU3R5bGUoTm9kZSogbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgJiYgbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxp
emVkLT5wYXJlbnROb2RlKCkgPT0gbm9kZS0+cGFyZW50Tm9kZSgpCisgICAgICAgICAgICAmJiBt
X3dyYXBwaW5nU3R5bGUgJiYgbV93cmFwcGluZ1N0eWxlLT5zdHlsZSgpOworICAgIH0KIAogICAg
IFZlY3RvcjxTdHJpbmc+IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXA7CiAgICAgY29uc3QgRUFu
bm90YXRlRm9ySW50ZXJjaGFuZ2UgbV9zaG91bGRBbm5vdGF0ZTsKKyAgICBOb2RlKiBtX2hpZ2hl
c3ROb2RlVG9CZVNlcmlhbGl6ZWQ7CisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbV93cmFwcGlu
Z1N0eWxlOwogfTsKIAoraW5saW5lIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcyBzaG91bGRS
ZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsCisgICAg
Y29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBoaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkKQorICAg
IDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCByYW5nZSkKKyAg
ICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5ub3RhdGUpCisgICAgLCBtX2hpZ2hlc3ROb2Rl
VG9CZVNlcmlhbGl6ZWQoaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCkKK3sKK30KKwogdm9pZCBT
dHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhOb2RlKE5vZGUqIG5vZGUsIGJvb2wgY29u
dmVydEJsb2Nrc1RvSW5saW5lcywgUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHJhbmdlRnVsbHlTZWxl
Y3RzTm9kZSkKIHsKICAgICBWZWN0b3I8VUNoYXI+IG1hcmt1cDsKQEAgLTE2MCwyMCArMTc0LDMw
IEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OndyYXBXaXRoTm8KIAogdm9pZCBTdHls
ZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhTdHlsZU5vZGUoQ1NTU3R5bGVEZWNsYXJhdGlv
biogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpc0Jsb2NrKQogeworICAgIFZlY3Rv
cjxVQ2hhcj4gb3BlblRhZzsKKyAgICBhcHBlbmRTdHlsZU5vZGVPcGVuVGFnKG9wZW5UYWcsIHN0
eWxlLCBkb2N1bWVudCwgaXNCbG9jayk7CisgICAgbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cC5h
cHBlbmQoU3RyaW5nOjphZG9wdChvcGVuVGFnKSk7CisgICAgYXBwZW5kU3RyaW5nKHN0eWxlTm9k
ZUNsb3NlVGFnKGlzQmxvY2spKTsKK30KKwordm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6
YXBwZW5kU3R5bGVOb2RlT3BlblRhZyhWZWN0b3I8VUNoYXI+JiBvdXQsIENTU1N0eWxlRGVjbGFy
YXRpb24qIHN0eWxlLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNCbG9jaykKK3sKICAgICAv
LyBBbGwgdGV4dC1kZWNvcmF0aW9uLXJlbGF0ZWQgZWxlbWVudHMgc2hvdWxkIGhhdmUgYmVlbiB0
cmVhdGVkIGFzIHNwZWNpYWwgYW5jZXN0b3JzCiAgICAgLy8gSWYgd2UgZXZlciBoaXQgdGhpcyBB
U1NFUlQsIHdlIHNob3VsZCBleHBvcnQgU3R5bGVDaGFuZ2UgaW4gQXBwbHlTdHlsZUNvbW1hbmQg
YW5kIHVzZSBpdCBoZXJlCiAgICAgQVNTRVJUKHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUo
c3R5bGUsIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pICYmIHByb3BlcnR5TWlzc2luZ09yRXF1
YWxUb05vbmUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Qp
KTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2U3R5bGUsICgiPGRp
diBzdHlsZT1cIiIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2
Q2xvc2UsICgiPC9kaXY+IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBzdHlsZVNwYW5PcGVuLCAoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJc
IiBzdHlsZT1cIiIpKTsKKyAgICBhcHBlbmQob3V0LCBpc0Jsb2NrID8gZGl2U3R5bGUgOiBzdHls
ZVNwYW5PcGVuKTsKKyAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQsIHN0eWxlLT5jc3NUZXh0
KCksIGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKKyAgICBvdXQuYXBwZW5kKCdcIicpOwor
ICAgIG91dC5hcHBlbmQoJz4nKTsKK30KKworY29uc3QgU3RyaW5nIFN0eWxlZE1hcmt1cEFjY3Vt
dWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlzQmxvY2spCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGRpdkNsb3NlLCAoIjwvZGl2PiIpKTsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2UsICgiPC9zcGFuPiIp
KTsKLSAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7Ci0gICAgYXBwZW5kKG9wZW5UYWcsIGlzQmxv
Y2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOwotICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVl
KG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsK
LSAgICBvcGVuVGFnLmFwcGVuZCgnXCInKTsKLSAgICBvcGVuVGFnLmFwcGVuZCgnPicpOwotICAg
IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5kKFN0cmluZzo6YWRvcHQob3BlblRhZykp
OwotICAgIGFwcGVuZFN0cmluZyhpc0Jsb2NrID8gZGl2Q2xvc2UgOiBzdHlsZVNwYW5DbG9zZSk7
CisgICAgcmV0dXJuIGlzQmxvY2sgPyBkaXZDbG9zZSA6IHN0eWxlU3BhbkNsb3NlOwogfQogCiBT
dHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRha2VSZXN1bHRzKCkKQEAgLTE5MSwxNyAr
MjE1LDM0IEBAIFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dGFrZVJlc3UKIH0KIAog
dm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChWZWN0b3I8VUNoYXI+JiBv
dXQsIFRleHQqIHRleHQpCi17Ci0gICAgaWYgKCFzaG91bGRBbm5vdGF0ZSgpIHx8ICh0ZXh0LT5w
YXJlbnRFbGVtZW50KCkgJiYgdGV4dC0+cGFyZW50RWxlbWVudCgpLT50YWdRTmFtZSgpID09IHRl
eHRhcmVhVGFnKSkgeworeyAgICAKKyAgICBib29sIHBhcmVudElzVGV4dGFyZWEgPSB0ZXh0LT5w
YXJlbnRFbGVtZW50KCkgJiYgdGV4dC0+cGFyZW50RWxlbWVudCgpLT50YWdRTmFtZSgpID09IHRl
eHRhcmVhVGFnOworICAgIGJvb2wgd3JhcHBpbmdTcGFuID0gc2hvdWxkQXBwbHlXcmFwcGluZ1N0
eWxlKHRleHQpICYmICFwYXJlbnRJc1RleHRhcmVhOworICAgIGlmICh3cmFwcGluZ1NwYW4pIHsK
KyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gd3JhcHBpbmdTdHlsZSA9IG1fd3JhcHBpbmdT
dHlsZS0+Y29weSgpOworICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTM3MTUzNj4KKyAgICAg
ICAgLy8gTWFrZSBzdXJlIHNwYW5zIGFyZSBpbmxpbmUgc3R5bGUgaW4gcGFzdGUgc2lkZSBlLmcu
IHNwYW4geyBkaXNwbGF5OiBibG9jayB9CisgICAgICAgIHdyYXBwaW5nU3R5bGUtPmZvcmNlSW5s
aW5lKCk7CisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgdGhpcyBiZSBpbmNsdWRlZCBpbiBmb3Jj
ZUlubGluZT8KKyAgICAgICAgd3JhcHBpbmdTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlGbG9hdCwgQ1NTVmFsdWVOb25lKTsKKworICAgICAgICBWZWN0b3I8VUNoYXI+IG9w
ZW5UYWc7CisgICAgICAgIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcob3BlblRhZywgd3JhcHBpbmdT
dHlsZS0+c3R5bGUoKSwgdGV4dC0+ZG9jdW1lbnQoKSk7CisgICAgICAgIGFwcGVuZChvdXQsIFN0
cmluZzo6YWRvcHQob3BlblRhZykpOworICAgIH0KKworICAgIGlmICghc2hvdWxkQW5ub3RhdGUo
KSB8fCBwYXJlbnRJc1RleHRhcmVhKQogICAgICAgICBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5k
VGV4dChvdXQsIHRleHQpOwotICAgICAgICByZXR1cm47CisgICAgZWxzZSB7CisgICAgICAgIGJv
b2wgdXNlUmVuZGVyZWRUZXh0ID0gIWVuY2xvc2luZ05vZGVXaXRoVGFnKGZpcnN0UG9zaXRpb25J
bk5vZGUodGV4dCksIHNlbGVjdFRhZyk7CisgICAgICAgIFN0cmluZyBjb250ZW50ID0gdXNlUmVu
ZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRleHQsIG1fcmFuZ2UpIDogc3RyaW5nVmFsdWVGb3JS
YW5nZSh0ZXh0LCBtX3JhbmdlKTsKKyAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXI7CisgICAg
ICAgIGFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyhidWZmZXIsIGNvbnRlbnQuY2hh
cmFjdGVycygpLCBjb250ZW50Lmxlbmd0aCgpLCBFbnRpdHlNYXNrSW5QQ0RBVEEpOworICAgICAg
ICBhcHBlbmQob3V0LCBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KFN0cmluZzo6
YWRvcHQoYnVmZmVyKSwgdGV4dCkpOwogICAgIH0KIAotICAgIGJvb2wgdXNlUmVuZGVyZWRUZXh0
ID0gIWVuY2xvc2luZ05vZGVXaXRoVGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dCksIHNlbGVj
dFRhZyk7Ci0gICAgU3RyaW5nIGNvbnRlbnQgPSB1c2VSZW5kZXJlZFRleHQgPyByZW5kZXJlZFRl
eHQodGV4dCwgbV9yYW5nZSkgOiBzdHJpbmdWYWx1ZUZvclJhbmdlKHRleHQsIG1fcmFuZ2UpOwot
ICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOwotICAgIGFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdF
bnRpdGllcyhidWZmZXIsIGNvbnRlbnQuY2hhcmFjdGVycygpLCBjb250ZW50Lmxlbmd0aCgpLCBF
bnRpdHlNYXNrSW5QQ0RBVEEpOwotICAgIGFwcGVuZChvdXQsIGNvbnZlcnRIVE1MVGV4dFRvSW50
ZXJjaGFuZ2VGb3JtYXQoU3RyaW5nOjphZG9wdChidWZmZXIpLCB0ZXh0KSk7CisgICAgaWYgKHdy
YXBwaW5nU3BhbikKKyAgICAgICAgYXBwZW5kKG91dCwgc3R5bGVOb2RlQ2xvc2VUYWcoKSk7CiB9
CiAgICAgCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnJlbmRlcmVkVGV4dChjb25z
dCBOb2RlKiBub2RlLCBjb25zdCBSYW5nZSogcmFuZ2UpCkBAIC0yNDUsMzAgKzI4Niw0NiBAQCB2
b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtCiAKICAgICBOYW1lZE5vZGVN
YXAqIGF0dHJpYnV0ZXMgPSBlbGVtZW50LT5hdHRyaWJ1dGVzKCk7CiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gYXR0cmlidXRlcy0+bGVuZ3RoKCk7CisgICAgYm9vbCBzaG91bGRBbm5vdGF0ZU9yRm9y
Y2VJbmxpbmUgPSBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkg
fHwgYWRkRGlzcGxheUlubGluZSk7CisgICAgYm9vbCBzaG91bGRPdmVycmlkZVN0eWxlQXR0ciA9
IHNob3VsZEFubm90YXRlT3JGb3JjZUlubGluZSB8fCBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUo
ZWxlbWVudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewogICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0
ZW0oaSk7CiAgICAgICAgIC8vIFdlJ2xsIGhhbmRsZSB0aGUgc3R5bGUgYXR0cmlidXRlIHNlcGFy
YXRlbHksIGJlbG93LgotICAgICAgICBpZiAoYXR0cmlidXRlLT5uYW1lKCkgPT0gc3R5bGVBdHRy
ICYmIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBhZGRE
aXNwbGF5SW5saW5lKSkKKyAgICAgICAgaWYgKGF0dHJpYnV0ZS0+bmFtZSgpID09IHN0eWxlQXR0
ciAmJiBzaG91bGRPdmVycmlkZVN0eWxlQXR0cikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBhcHBlbmRBdHRyaWJ1dGUob3V0LCBlbGVtZW50LCAqYXR0cmlidXRlLCAwKTsKICAgICB9
CiAKLSAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgp
IHx8IGFkZERpc3BsYXlJbmxpbmUpKSB7Ci0gICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0
eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUodG9IVE1MRWxlbWVudChlbGVtZW50KS0+Z2V0SW5s
aW5lU3R5bGVEZWNsKCkpOwotICAgICAgICBpZiAoc2hvdWxkQW5ub3RhdGUoKSkKLSAgICAgICAg
ICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbih0b0hUTUxFbGVt
ZW50KGVsZW1lbnQpKTsKLSAgICAgICAgaWYgKGFkZERpc3BsYXlJbmxpbmUpCi0gICAgICAgICAg
ICBzdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1
ZUlubGluZSwgdHJ1ZSk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIG5vZGUgaXMgbm90IGZ1bGx5IHNl
bGVjdGVkIGJ5IHRoZSByYW5nZSwgdGhlbiB3ZSBkb24ndCB3YW50IHRvIGtlZXAgc3R5bGVzIHRo
YXQgYWZmZWN0IGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG5vZGVzIGFyb3VuZCBpdAotICAgICAg
ICAvLyBvbmx5IHRoZSBvbmVzIHRoYXQgYWZmZWN0IGl0IGFuZCB0aGUgbm9kZXMgd2l0aGluIGl0
LgotICAgICAgICBpZiAocmFuZ2VGdWxseVNlbGVjdHNOb2RlID09IERvZXNOb3RGdWxseVNlbGVj
dE5vZGUpCi0gICAgICAgICAgICBzdHlsZS0+c3R5bGUoKS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJv
cGVydHlGbG9hdCk7CisgICAgaWYgKHNob3VsZE92ZXJyaWRlU3R5bGVBdHRyKSB7CisgICAgICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlOwogCi0gICAgICAgIGlmICghc3R5
bGUtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoc2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxlKGVs
ZW1lbnQpKSB7CisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZSA9IG1fd3JhcHBpbmdTdHlsZS0+
Y29weSgpOworICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJbkVs
ZW1lbnREZWZhdWx0U3R5bGUoZWxlbWVudCk7CisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+
cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShlbGVtZW50KTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRl
KCk7CisKKyAgICAgICAgaWYgKGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpICYmIHN0YXRpY19j
YXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+aW5saW5lU3R5bGVEZWNsKCkpCisgICAgICAg
ICAgICBuZXdJbmxpbmVTdHlsZS0+b3ZlcnJpZGVXaXRoU3R5bGUoc3RhdGljX2Nhc3Q8U3R5bGVk
RWxlbWVudCo+KGVsZW1lbnQpLT5pbmxpbmVTdHlsZURlY2woKSk7CisKKyAgICAgICAgaWYgKHNo
b3VsZEFubm90YXRlT3JGb3JjZUlubGluZSkgeworICAgICAgICAgICAgaWYgKHNob3VsZEFubm90
YXRlKCkpCisgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPm1lcmdlU3R5bGVGcm9tUnVs
ZXNGb3JTZXJpYWxpemF0aW9uKHRvSFRNTEVsZW1lbnQoZWxlbWVudCkpOworCisgICAgICAgICAg
ICBpZiAoYWRkRGlzcGxheUlubGluZSkKKyAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+
Zm9yY2VJbmxpbmUoKTsKKworICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaXMgbm90IGZ1bGx5
IHNlbGVjdGVkIGJ5IHRoZSByYW5nZSwgdGhlbiB3ZSBkb24ndCB3YW50IHRvIGtlZXAgc3R5bGVz
IHRoYXQgYWZmZWN0IGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG5vZGVzIGFyb3VuZCBpdAorICAg
ICAgICAgICAgLy8gb25seSB0aGUgb25lcyB0aGF0IGFmZmVjdCBpdCBhbmQgdGhlIG5vZGVzIHdp
dGhpbiBpdC4KKyAgICAgICAgICAgIGlmIChyYW5nZUZ1bGx5U2VsZWN0c05vZGUgPT0gRG9lc05v
dEZ1bGx5U2VsZWN0Tm9kZSAmJiBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKSkKKyAgICAgICAgICAg
ICAgICBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlG
bG9hdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW5ld0lubGluZVN0eWxlLT5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHls
ZVByZWZpeCwgKCIgc3R5bGU9XCIiKSk7CiAgICAgICAgICAgICBhcHBlbmQob3V0LCBzdHlsZVBy
ZWZpeCk7Ci0gICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQsIHN0eWxlLT5zdHls
ZSgpLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKKyAgICAgICAgICAgIGFwcGVuZEF0dHJp
YnV0ZVZhbHVlKG91dCwgbmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSwgZG9jdW1l
bnRJc0hUTUwpOwogICAgICAgICAgICAgb3V0LmFwcGVuZCgnXCInKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTI3OCw2ICszMzUsMjkgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBw
ZW5kRWxlbQogCiBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c2VyaWFsaXplTm9kZXMo
Tm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kKQogeworICAgIGlmICghbV9oaWdoZXN0Tm9k
ZVRvQmVTZXJpYWxpemVkKSB7CisgICAgICAgIE5vZGUqIGxhc3RDbG9zZWQgPSB0cmF2ZXJzZU5v
ZGVzRm9yU2VyaWFsaXphdGlvbihzdGFydE5vZGUsIHBhc3RFbmQsIGZhbHNlKTsKKyAgICAgICAg
bV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID0gbGFzdENsb3NlZDsKKyAgICB9CisgICAgCisg
ICAgTm9kZSogcGFyZW50T2ZIaWdoZXN0Tm9kZSA9IG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXpl
ZCA/IG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZC0+cGFyZW50Tm9kZSgpIDogMDsKKyAgICBp
ZiAocGFyZW50T2ZIaWdoZXN0Tm9kZSkgeworICAgICAgICBtX3dyYXBwaW5nU3R5bGUgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZShwYXJlbnRPZkhpZ2hlc3ROb2RlLCBFZGl0aW5nU3R5bGU6OkVkaXRp
bmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk7CisKKyAg
ICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRlIHNob3VsZCBv
bmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLAorICAgICAgICAvLyB0byBoZWxw
IHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1c2VyIGhh
cyBhcHBsaWVkLgorICAgICAgICAvLyBUaGlzIGhlbHBzIHVzIGdldCB0aGUgY29sb3Igb2YgY29u
dGVudCBwYXN0ZWQgaW50byBibG9ja3F1b3RlcyByaWdodC4KKyAgICAgICAgbV93cmFwcGluZ1N0
eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3Np
dGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE9mSGlnaGVzdE5vZGUpLCBpc01haWxCbG9ja3F1b3Rl
LCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpOworCisgICAgICAgIC8vIENhbGwgY29sbGFwc2VU
ZXh0RGVjb3JhdGlvblByb3BlcnRpZXMgZmlyc3Qgb3Igb3RoZXJ3aXNlIGl0J2xsIGNvcHkgdGhl
IHZhbHVlIG92ZXIgZnJvbSBpbi1lZmZlY3QgdG8gdGV4dC1kZWNvcmF0aW9ucy4KKyAgICAgICAg
bV93cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcygpOworICAg
IH0KKworICAgIHJldHVybiB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihzdGFydE5vZGUs
IHBhc3RFbmQsIHRydWUpOworfQorCitOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJh
dmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5k
LCBib29sIHNob3VsZEVtaXQpCit7CiAgICAgVmVjdG9yPE5vZGUqPiBhbmNlc3RvcnNUb0Nsb3Nl
OwogICAgIE5vZGUqIG5leHQ7CiAgICAgTm9kZSogbGFzdENsb3NlZCA9IDA7CkBAIC0zMDQsMTEg
KzM4NCwxMyBAQCBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c2VyaWFsaXplCiAgICAg
ICAgICAgICAgICAgbmV4dCA9IHBhc3RFbmQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIG1hcmt1cCBpZiB3ZSdyZSBub3Qgc2tpcHBpbmcgdGhl
IGRlc2NlbmRhbnRzCi0gICAgICAgICAgICBhcHBlbmRTdGFydFRhZyhuKTsKKyAgICAgICAgICAg
IGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgIGFwcGVuZFN0YXJ0VGFnKG4pOwogCiAg
ICAgICAgICAgICAvLyBJZiBub2RlIGhhcyBubyBjaGlsZHJlbiwgY2xvc2UgdGhlIHRhZyBub3cu
CiAgICAgICAgICAgICBpZiAoIW4tPmNoaWxkTm9kZUNvdW50KCkpIHsKLSAgICAgICAgICAgICAg
ICBhcHBlbmRFbmRUYWcobik7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhuKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xv
c2VkID0gbjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgb3BlbmVkVGFn
ID0gdHJ1ZTsKQEAgLTMyNSw3ICs0MDcsOCBAQCBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6c2VyaWFsaXplCiAgICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFzdEVuZCAmJiBuZXh0
LT5pc0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIC8vIE5vdCBhdCB0aGUgZW5kIG9mIHRoZSByYW5nZSwgY2xvc2UgYW5j
ZXN0b3JzIHVwIHRvIHNpYmxpbmcgb2YgbmV4dCBub2RlLgotICAgICAgICAgICAgICAgIGFwcGVu
ZEVuZFRhZyhhbmNlc3Rvcik7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhhbmNlc3Rvcik7CiAgICAgICAgICAgICAgICAg
bGFzdENsb3NlZCA9IGFuY2VzdG9yOwogICAgICAgICAgICAgICAgIGFuY2VzdG9yc1RvQ2xvc2Uu
cmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgfQpAQCAtMzQwLDcgKzQyMyw4IEBAIE5vZGUqIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemUKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAvLyBvciBiKSBhbmNlc3RvcnMgdGhhdCB3
ZSBuZXZlciBlbmNvdW50ZXJlZCBkdXJpbmcgYSBwcmUtb3JkZXIgdHJhdmVyc2FsIHN0YXJ0aW5n
IGF0IHN0YXJ0Tm9kZToKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNE
ZXNjZW5kYW50T2YocGFyZW50KSk7Ci0gICAgICAgICAgICAgICAgICAgIHdyYXBXaXRoTm9kZShw
YXJlbnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHdyYXBXaXRoTm9kZShwYXJlbnQpOwogICAgICAgICAgICAgICAgICAgICBs
YXN0Q2xvc2VkID0gcGFyZW50OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAg
LTUxMyw3ICs1OTcsMTMgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2Us
IAogCiAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3Vs
ZFJlc29sdmVVUkxzLCBzaG91bGRBbm5vdGF0ZSwgdXBkYXRlZFJhbmdlLmdldCgpKTsKKyAgICBO
b2RlKiBib2R5ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21t
b25BbmNlc3RvciksIGJvZHlUYWcpOworICAgIE5vZGUqIGZ1bGx5U2VsZWN0ZWRSb290ID0gMDsK
KyAgICAvLyBGSVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90
IGp1c3QgdGhlIGJvZHkuCisgICAgaWYgKGJvZHkgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNl
bGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGJvZHkpLnRvTm9ybWFsaXplZFJh
bmdlKCkuZ2V0KCksIHJhbmdlKSkKKyAgICAgICAgZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5Owor
ICAgIE5vZGUqIHNwZWNpYWxDb21tb25BbmNlc3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1h
cmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCksIGZ1bGx5U2VsZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0
ZSk7CisgICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3Vs
ZFJlc29sdmVVUkxzLCBzaG91bGRBbm5vdGF0ZSwgdXBkYXRlZFJhbmdlLmdldCgpLCBzcGVjaWFs
Q29tbW9uQW5jZXN0b3IpOwogICAgIE5vZGUqIHBhc3RFbmQgPSB1cGRhdGVkUmFuZ2UtPnBhc3RM
YXN0Tm9kZSgpOwogCiAgICAgTm9kZSogc3RhcnROb2RlID0gdXBkYXRlZFJhbmdlLT5maXJzdE5v
ZGUoKTsKQEAgLTUzOSwxNCArNjI5LDYgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5n
ZSogcmFuZ2UsIAogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9CiAKLSAgICBOb2RlKiBib2R5
ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNlc3Rv
ciksIGJvZHlUYWcpOwotICAgIE5vZGUqIGZ1bGx5U2VsZWN0ZWRSb290ID0gMDsKLSAgICAvLyBG
SVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90IGp1c3QgdGhl
IGJvZHkuCi0gICAgaWYgKGJvZHkgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbjo6
c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGJvZHkpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0
KCksIHJhbmdlKSkKLSAgICAgICAgZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5OwotCi0gICAgTm9k
ZSogc3BlY2lhbENvbW1vbkFuY2VzdG9yID0gaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKHVw
ZGF0ZWRSYW5nZS5nZXQoKSwgZnVsbHlTZWxlY3RlZFJvb3QsIHNob3VsZEFubm90YXRlKTsKLQog
ICAgIE5vZGUqIGxhc3RDbG9zZWQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcyhzdGFydE5v
ZGUsIHBhc3RFbmQpOwogCiAgICAgaWYgKHNwZWNpYWxDb21tb25BbmNlc3RvciAmJiBsYXN0Q2xv
c2VkKSB7CkBAIC01ODYsMjAgKzY2OCw2IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFu
Z2UqIHJhbmdlLCAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIEFkZCBhIHdyYXBwZXIgc3Bh
biB3aXRoIHRoZSBzdHlsZXMgdGhhdCBhbGwgb2YgdGhlIG5vZGVzIGluIHRoZSBtYXJrdXAgaW5o
ZXJpdC4KLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPZkxhc3RDbG9zZWQgPSBsYXN0Q2xvc2Vk
ID8gbGFzdENsb3NlZC0+cGFyZW50Tm9kZSgpIDogMDsKLSAgICBpZiAocGFyZW50T2ZMYXN0Q2xv
c2VkICYmIHBhcmVudE9mTGFzdENsb3NlZC0+cmVuZGVyZXIoKSkgewotICAgICAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBhcmVudE9mTGFzdENs
b3NlZCwgRWRpdGluZ1N0eWxlOjpFZGl0aW5nSW5oZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dy
b3VuZENvbG9ySW5FZmZlY3QpOwotCi0gICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2tx
dW90ZXMgY29udHJpYnV0ZSBzaG91bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2tx
dW90ZSwgdG8gaGVscAotICAgICAgICAvLyB1cyBkaWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBm
cm9tIG9uZXMgdGhhdCB0aGUgdXNlciBoYXMgYXBwbGllZC4gIFRoaXMgaGVscHMgdXMKLSAgICAg
ICAgLy8gZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJp
Z2h0LgotICAgICAgICBzdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdOb2Rl
T2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk5vZGUocGFyZW50T2ZMYXN0Q2xvc2VkKSwgaXNNYWlsQmxv
Y2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKLQotICAgICAgICBpZiAoIXN0eWxl
LT5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhY2N1bXVsYXRvci53cmFwV2l0aFN0eWxlTm9kZShz
dHlsZS0+c3R5bGUoKSwgZG9jdW1lbnQpOwotICAgIH0KLQogICAgIC8vIEZJWE1FOiBUaGUgaW50
ZXJjaGFuZ2UgbmV3bGluZSBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBibG9jayB0aGF0IGl0J3Mg
aW4sIG5vdCBhZnRlciBhbGwgb2YgdGhlIGNvbnRlbnQsIHVuY29uZGl0aW9uYWxseS4KICAgICBp
ZiAoc2hvdWxkQW5ub3RhdGUgPT0gQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSAmJiBuZWVkSW50ZXJj
aGFuZ2VOZXdsaW5lQWZ0ZXIodmlzaWJsZUVuZC5wcmV2aW91cygpKSkKICAgICAgICAgYWNjdW11
bGF0b3IuYXBwZW5kU3RyaW5nKGludGVyY2hhbmdlTmV3bGluZVN0cmluZyk7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA5MjU0MikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDMyIEBACisyMDExLTA4LTA1ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgorCisgICAgICAgIENvcHlpbmcgY2FuIHJlc3VsdCBpbiBzcGFuIGFyb3VuZCBibG9jayBl
bGVtZW50cyBvbiB0aGUgY2xpcGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNDU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggb3ZlcmhhdWxlZCB0aGUgd2F5IHdlIHByZXNlcnZl
IHN0eWxlcyB3aGVuIGNvcHlpbmcgYW5kIHBhc3RpbmcgSFRNTCBjb250ZW50cy4KKworICAgICAg
ICAqIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRpbmctbGluZS1icmVhay1wcmVzZXJ2ZXMtdW5kZXJs
aW5lLWNvbG9yLWV4cGVjdGVkLnR4dDogU3R5bGUgYXR0cmlidXRlIG5vdworICAgICAgICBoYXMg
YW4gZXh0cmEgc3BhY2UgYXQgdGhlIGVuZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5k
L2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQ6IExpZ2h0
R3JheSBpcyBleHByZXNzZWQgYXMKKyAgICAgICAgcmdiKDIxMSwgMjExLCAyMTEpOworICAgICAg
ICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3BhZ2Utem9vbS1mb250LXNpemUtZXhwZWN0ZWQudHh0OiBT
dHlsZSBhdHRyaWJ1dGUgbm8gbG9uZ2VyIGhhcyBhIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAq
IGVkaXRpbmcvcGFzdGVib2FyZC81MDY1NjA1LWV4cGVjdGVkLnR4dDogTG9zdCB3cmFwcGluZyBz
cGFuIGFuZCBmb250LgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9pbnRlcmNoYW5nZS1u
ZXdsaW5lLTEtZXhwZWN0ZWQudHh0OiAiZm9vIiBpcyBtb3ZlZCBvdXRzaWRlIHRoZSBzcGFuIGJ1
dCB2aXN1YWxseSBpZGVudGljYWwuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdl
LWVuZC0xLWV4cGVjdGVkLnR4dDogU3BhbiBpcyBzcGxpdCBiZWZvcmUgImJhciIgYW5kICJiYXoi
IGJ1dCB2aXN1YWxseSBpZGVudGljYWwuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL21l
cmdlLWVuZC0yLWV4cGVjdGVkLnR4dDogU3BhbiBpcyBzcGxpdCBhZnRlciAiZm9vIGJhciIgYnV0
IHZpc3VhbGx5IGlkZW50aWNhbC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
NDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0OiBObyBsb25nZXIgZXJyb25lb3VzbHkgbmVzdHMgdWwg
d2l0aCBpdHNlbGY7CisgICAgICAgIGFsc28gQiBhbmQgQyBhcmUgbm8gbG9uZ2VyIGVycm9uZW91
c2x5IGFsaWduZWQgdG8gdGhlIHJpZ2h0LgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1hZnRlci1pbmxpbmUtc3R5bGUtZWxlbWVudC1leHBlY3RlZC50eHQ6ICJsaW5lIDIiIGlz
IG5vIGxvbmdlciBlcnJvbmVvdXNseSBib2xkZWQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dDogIExvc3QgdGhlIHdyYXBwaW5nIHNw
YW4gYXJvdW5kIHByZS4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAw
MS1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dDogTG9zdCB0aGUgd3JhcHBpbmcgc3BhbiBh
bmQgYjsgZm9udC1mYW1pbHkgYW5kIGZvbnQtd2VpZ2h0CisgICAgICAgIHByb3BlcnRpZXMgYXJl
IG5vdyBzZXQgb24gcC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0w
MTItZXhwZWN0ZWQudHh0OiBObyBsb25nZXIgYWRkcyByZWR1bmRhbnQgZm9udC1zaXplOiBtZWRp
dW0gYXJvdW5kCisgICAgICAgIGEgZGl2IHdpdGggaGFzIGZvbnQtc2l6ZSBwcm9wZXJ0eSBzZXQg
dG8gMjRweC4KKwogMjAxMS0wOC0wNSAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
IAogICAgICAgICByOTIzMzAgaGFzIGJlZW4gcm9sbGVkIG91dCBzbyBpdHMgcmViYXNlbGluZSBu
ZWVkcyB0byBiZSByZXZlcnRlZCBhcyB3ZWxsCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2Rl
bGV0aW5nL2RlbGV0aW5nLWxpbmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1jb2xvci1leHBl
Y3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxl
dGluZy1saW5lLWJyZWFrLXByZXNlcnZlcy11bmRlcmxpbmUtY29sb3ItZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA5MjU0MikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRpbmct
bGluZS1icmVhay1wcmVzZXJ2ZXMtdW5kZXJsaW5lLWNvbG9yLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMTMsNyArMTMsNyBAQCBBZnRlcjoKIHwgPGRpdj4KIHwgICAiVGhpcyBzaG91
bGQgbm90IGJlIHVuZGVybGluZWQuPCNzZWxlY3Rpb24tY2FyZXQ+IgogfCAgIDxzcGFuPgotfCAg
ICAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjogYmx1ZTsiCit8ICAg
ICBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiBibHVlOyAiCiB8ICAg
ICA8c3Bhbj4KIHwgICAgICAgc3R5bGU9ImNvbG9yOnJlZDsiCiB8ICAgICAgICJUaGlzIHNob3Vs
ZCBiZSB1bmRlcmxpbmVkLiIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQv
aW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgt
bm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNTQyKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxl
LWNvbnRlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQsNyBAQCBUaGlz
IHRlc3RzIGxpc3QgY3JlYXRpb24gaW4gYW4gZWRpdGFibGUgCiB8ICAgICAiRWRpdGFibDwjc2Vs
ZWN0aW9uLWFuY2hvcj5lIHBhcmFncmFwaCBjb250YWluaW5nIGEgIgogfCAgICAgPHNwYW4+CiB8
ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiCi18ICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5k
LWNvbG9yOiBMaWdodEdyYXk7IgorfCAgICAgICBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcmdi
KDIxMSwgMjExLCAyMTEpOyAiCiB8ICAgICAgICJub24tZWRpdGFibGUiCiB8ICAgICAiIGluIHRo
ZSBtaWRkbGUiCiB8ICAgICA8YnI+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGlu
Zy9wYWdlLXpvb20tZm9udC1zaXplLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2luc2VydGluZy9wYWdlLXpvb20tZm9udC1zaXplLWV4cGVjdGVkLnR4dAko
cmV2aXNpb24gOTI1NDIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2luc2VydGluZy9wYWdlLXpv
b20tZm9udC1zaXplLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw3ICsxLDcgQEAK
IFRlc3QgdG8gbWFrZSBzdXJlIHRoYXQgcGFzdGluZyB0ZXh0IHdpdGggYSBmb250IHNpemUgaW50
byBhIHF1aXJrcyBtb2RlIGRvY3VtZW50IHRoYXQgaXMgem9vbWVkIGRvZXMgbm90IGFsdGVyIHRo
ZSBmb250IHNpemUuCiAKIFBhc3RlIEhlcmU6VGhpcyBmb250IGlzIHNpemUgMTZweC4KLVBhc3Rl
IEhlcmU6PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogMTZweDsgIiBjbGFzcz0iQXBwbGUtc3R5bGUt
c3BhbiI+VGhpcyBmb250IGlzIHNpemUgMTZweC48L3NwYW4+CitQYXN0ZSBIZXJlOjxzcGFuIHN0
eWxlPSJmb250LXNpemU6IDE2cHgiIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIj5UaGlzIGZvbnQg
aXMgc2l6ZSAxNnB4Ljwvc3Bhbj4KIGRvY3VtZW50LmNvbXBhdE1vZGU6IEJhY2tDb21wYXQKIFBB
U1MKIApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzUwNjU2MDUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC81MDY1
NjA1LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI1NDIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvNTA2NTYwNS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIxLDcg
KzIxLDcgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdAogRURJVElO
RyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9u
CiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFnbWVudCBy
ZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG8gMCBvZiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBn
aXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51
bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyNCBvZiAjdGV4dCA+IEZPTlQgPiBESVYgPiBTUEFO
ID4gRk9OVCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDI0IG9mICN0
ZXh0ID4gRk9OVCA+IERJViA+IFNQQU4gPiBGT05UID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxT
ZWxlY3Rpbmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9N
UmFuZ2U6KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSAyNCBvZiAjdGV4dCA+IEZPTlQgPiBE
SVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyNCBvZiAjdGV4dCA+
IEZPTlQgPiBESVYgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0
eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdl
OldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpA
QCAtNDAsMTUgKzQwLDkgQEAgVGhpcyB0ZXN0cyBmb3IgYSBidWcgd2hlcmUgdGV4dCBjb3BpZWQg
dwogfCAgIDxmb250PgogfCAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCiB8ICAgICBjb2xv
cj0iI2ZmMDAwMCIKLXwgICAgIDxzcGFuPgorfCAgICAgIlRoaXMgdGV4dCBzaG91bGQgYmUgcmVk
LiIKK3wgICA8ZGl2PgorfCAgICAgPGZvbnQ+CiB8ICAgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1z
cGFuIgotfCAgICAgICBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgIgotfCAgICAgICA8Zm9u
dD4KLXwgICAgICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKLXwgICAgICAgICBjb2xvcj0i
I2ZmMDAwMCIKLXwgICAgICAgICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuIgotfCAgICAgICA8
ZGl2PgotfCAgICAgICAgIDxmb250PgotfCAgICAgICAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNw
YW4iCi18ICAgICAgICAgICBjb2xvcj0iI2ZmMDAwMCIKLXwgICAgICAgICAgICJUaGlzIHRleHQg
c2hvdWxkIGJlIHJlZC48I3NlbGVjdGlvbi1jYXJldD4iCit8ICAgICAgIGNvbG9yPSIjZmYwMDAw
IgorfCAgICAgICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuPCNzZWxlY3Rpb24tY2FyZXQ+IgpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ludGVyY2hhbmdlLW5ld2xpbmUt
MS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL2ludGVyY2hhbmdlLW5ld2xpbmUtMS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNTQyKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2ludGVyY2hhbmdlLW5ld2xpbmUtMS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEwLDggKzEwLDggQEAgRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZEVuZEVkaXRpbmc6VwogVGhlcmUgaXMgYW4gaW50ZXJjaGFuZ2UgbmV3
bGluZSBhdCB0aGUgZW5kIG9mIHRoZSBpbmNvbWluZyBmcmFnbWVudC4gImJhciIgYW5kICJ4IiBz
aG91bGQgYmUgaW4gc2VwYXJhdGUgcGFyYWdyYXBocwogVGhlIHBhcmFncmFwaCAiYmFyIiBpcyBp
bnNpZGUgYSBkaXYgd3JhcHBlZCBpbiBhIHNwYW4sIGFuZCB0aGUgb2xkIHBhc3RlIGNvZGUgdGhh
dCBoYW5kbGVkIGludGVyY2hhbmdlIG5ld2xpbmVzIGRpZCBub3QgaGFuZGxlIHRoaXMgY2FzZS4K
IHwgIngiCit8ICJmb28iCiB8IDxzcGFuPgotfCAgICJmb28iCiB8ICAgPGRpdj4KIHwgICAgICJi
YXIiCiB8ICI8I3NlbGVjdGlvbi1jYXJldD54IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL21lcmdlLWVuZC0xLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lv
biA5MjU0MikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtMS1l
eHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw5IEBAIFRoaXMgdGVzdHMgdGhl
IGxhc3QgcGFyYWdyYXBoIGluIHRoZSBwYXMKICJiYXoiIGFuZCAib28iIHNob3VsZCBiZSBpbiB0
aGUgc2FtZSBwYXJhZ3JhcGggYmVsb3cuCiB8IDxzcGFuPgogfCAgICJmIgotfCAgICJiYXIiCit8
ICJiYXIiCit8IDxzcGFuPgogfCAgIDxicj4KLXwgICAiYmF6PCNzZWxlY3Rpb24tY2FyZXQ+Igor
fCAiYmF6PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCA8c3Bhbj4KIHwgICAib28iCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLTItZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtMi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDkyNTQyKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL21lcmdlLWVuZC0yLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0LDcg
QEAgRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRETwogRURJVElORyBERUxF
R0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
Tm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6
IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlm
aWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpy
YW5nZSBmcm9tIDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgdG8gMyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0
b0RPTVJhbmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRN
TCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJh
bmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50
IHRvIDMgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdl
OnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRv
IDMgb2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1Nl
bGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZp
ZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtMTMs
OCArMTMsMTAgQEAgVGhpcyB0ZXN0cyB0aGUgbGFzdCBwYXJhZ3JhcGggaW4gdGhlIHBhcwogImJh
eiIgYW5kICJvb2JhciIgc2hvdWxkIGJlIGluIHRoZSBzYW1lIHBhcmFncmFwaCBiZWxvdwogfCA8
c3Bhbj4KIHwgICAiZiIKLXwgICAiYmFyIgorfCAiYmFyIgorfCA8c3Bhbj4KIHwgICA8YnI+Ci18
ICAgImJhejwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgImJhejwjc2VsZWN0aW9uLWNhcmV0PiIKK3wg
PHNwYW4+CiB8ICAgIm9vIgogfCAiYmFyIgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtNDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiA5MjU0MikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS00MDM5Nzc3LWZpeC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwx
MCBAQCBBY3R1YWwgcmVzdWx0OgogIgogfCA8dWw+CiB8ICAgc3R5bGU9InRleHQtYWxpZ246cmln
aHQ7IgotfCAgIDx1bD4KLXwgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgIgotfCAgICAg
PGxpPgotfCAgICAgICAiQSIKK3wgICA8bGk+Cit8ICAgICAiQSIKIHwgICA8ZGl2PgorfCAgICAg
c3R5bGU9InRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgIgogfCAgICAgPHVsPgogfCAgICAgICA8
bGk+CiB8ICAgICAgICAgPGE+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtYWZ0ZXItaW5saW5lLXN0eWxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1hZnRlci1pbmxpbmUtc3R5
bGUtZWxlbWVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNTQyKQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWFmdGVyLWlubGluZS1zdHlsZS1lbGVtZW50LWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw2ICs0LDcgQEAgVGhpcyB0ZXN0IGV4aGliaXRz
IGEgYnVnLiBUaGUgaW5zZXJ0ZWQgYwogfCAgIHR5cGU9ImNpdGUiCiB8ICAgPGI+CiB8ICAgICAi
bGluZSAxwqAiCi18ICAgICAibGluZSAyPCNzZWxlY3Rpb24tY2FyZXQ+IgotfCAgICAgIsKgIgor
fCAgICJsaW5lIDI8I3NlbGVjdGlvbi1jYXJldD4iCit8ICAgIsKgIgorfCAgIDxiPgogfCAgICAg
PGJyPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4t
cHJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjU0MikKKysr
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMTAgKzMsNyBAQCBZb3Ugc2hvdWxkIHNlZSBtYXJr
dXAgaW4gdGhlIGVkaXRhYmxlIHJlCiB8IDxwcmU+CiB8ICAgY29udGVudGVkaXRhYmxlPSJ0cnVl
IgogfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3Bh
biIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNwYWNlOiBub3JtYWw7
ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKLXwgICAgICAg
aWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxicj5iYXI8Yj5iYXo8
L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgIDxwcmU+Cit8ICAgICBjb250ZW50ZWRpdGFibGU9
InRydWUiCit8ICAgICBpZD0icHJlIgorfCAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxi
cj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gOTI1NDIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsNCArNyw0IEBAIGJh
cgogZm9vCiBiYXIKIGV4ZWNDdXRDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGlu
ZyI+IDxwcmU+PGJyPjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRl
c3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIg
c3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIj48cHJlPmZv
byBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2PgorZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBp
ZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxwcmU+Zm9vIGJhcjwvcHJlPjwvcHJlPiA8
L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAy
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNTQyKQorKysgTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0CSh3b3Jr
aW5nIGNvcHkpCkBAIC0yLDQgKzIsNCBAQCBUaGlzIGlzIGEgbGF5b3V0IHRlc3QgZm9yIHJkYXI6
Ly9wcm9ibGVtCiBmb28KIGJhcgogZXhlY0NvcHlDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFz
cz0iZWRpdGluZyI+IDxwcmU+Zm9vIGJhcjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6
IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3BhbiBjbGFzcz0iQXBwbGUt
c3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6IG5vcm1h
bDsgIj48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2PgorZXhlY1Bhc3RlQ29t
bWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxwcmU+Zm9vIGJhcjwv
cHJlPjwvcHJlPiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS10ZXh0LTAxMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI1
NDIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhw
ZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDcgKzYsNyBAQCBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hh
bmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3Vs
ZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZy
b20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9EWSA+IEhU
TUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAogRURJ
VElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdl
U2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxl
Y3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IEIg
PiBGT05UID4gUCA+IFNQQU4gPiBCID4gRk9OVCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVu
dCB0byA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gU1BBTiA+IEIgPiBGT05UID4gUCA+IEJP
RFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3Ry
ZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+
IEIgPiBGT05UID4gUCA+IEZPTlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBv
ZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IEZPTlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1l
bnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6
RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmll
d0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmll
d0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRF
OiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3Rp
ZmljYXRpb24KQEAgLTI5LDIwICsyOSwxOCBAQCBUaGUgY29udGVudCB3YXMgaW5zZXJ0ZWQgYXQg
dGhlIHN0YXJ0IG9mCiB8IDxwPgogfCAgIDxmb250PgogfCAgICAgZmFjZT0iTW9uYWNvIgotfCAg
ICAgPGI+Ci18ICAgICAgIDxzcGFuPgotfCAgICAgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFu
IgotfCAgICAgICAgIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IGZvbnQtd2VpZ2h0OiBub3Jt
YWw7ICIKLXwgICAgICAgICA8cD4KLXwgICAgICAgICAgIDxmb250PgotfCAgICAgICAgICAgICBm
YWNlPSJNb25hY28iCi18ICAgICAgICAgICAgIDxiPgotfCAgICAgICAgICAgICAgICJoZWxsbyIK
LXwgICAgICAgICA8cD4KLXwgICAgICAgICAgIDxmb250PgotfCAgICAgICAgICAgICBmYWNlPSJN
b25hY28iCi18ICAgICAgICAgICAgIDxiPgotfCAgICAgICAgICAgICAgICJ0aGVyZTwjc2VsZWN0
aW9uLWNhcmV0PiIKK3wgICAgIDxwPgorfCAgICAgICBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVz
OyAiCit8ICAgICAgIDxmb250PgorfCAgICAgICAgIGZhY2U9Ik1vbmFjbyIKK3wgICAgICAgICA8
Yj4KK3wgICAgICAgICAgICJoZWxsbyIKK3wgICAgIDxwPgorfCAgICAgICBzdHlsZT0iZm9udC1m
YW1pbHk6IFRpbWVzOyAiCit8ICAgICAgIDxmb250PgorfCAgICAgICAgIGZhY2U9Ik1vbmFjbyIK
K3wgICAgICAgICA8Yj4KK3wgICAgICAgICAgICJ0aGVyZTwjc2VsZWN0aW9uLWNhcmV0PiIKIHwg
IgogCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAx
Mi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI1NDIpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC02LDQgKzYsNCBAQCBmb28KIGZvbwogCiBleGVjQ29weUNvbW1hbmQ6
IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxv
Y2txdW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PC9kaXY+Ci1leGVjUGFz
dGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90
ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9ImVkaXRpbmciPjxzcGFu
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1zaXplOiBtZWRpdW07ICI+PGRp
diBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1
b3RlPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2Pjwvc3Bhbj48L2Rpdj4KK2V4ZWNQYXN0ZUNv
bW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZv
bzwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PGRpdiBpZD0i
dGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwv
ZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2PjwvZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103171</attachid>
            <date>2011-08-06 17:43:25 -0700</date>
            <delta_ts>2011-08-08 15:10:37 -0700</delta_ts>
            <desc>rebaselined more tests for chromium</desc>
            <filename>bug-34564-20110806174324.patch</filename>
            <type>text/plain</type>
            <size>69110</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNTQyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjYgQEAKKzIwMTEtMDgtMDUgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ29weWluZyBjYW4gcmVzdWx0IGluIDxzcGFuPiB0YWdzIGFyb3Vu
ZCBibG9jayBlbGVtZW50cyBvbiB0aGUgY2xpcGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDU2NAorCisgICAgICAgIENvbXBsZXRlbHkgb3Zl
cmhhdWxlZCB0aGUgd2F5IFdlYktpdCBwcmVzZXJ2ZXMgc3R5bGUgaW4gY29weSAmIHBhc3RlLgor
CisgICAgICAgIEluc3RlYWQgb2Ygd3JhcHBpbmcgdGhlIGVudGlyZSBzZXJpYWxpemVkIGNvbnRl
bnRzIGJ5IGEgQXBwbGUgc3R5bGUgc3Bhbiwgd2Ugbm93IGFkZCBpbmxpbmUgc3R5bGUKKyAgICAg
ICAgZGVjbGFyYXRpb24gdG8gdGhlIHRvcCBsZXZlbCBlbGVtZW50cywgd3JhcCB0b3AgbGV2ZWwg
dGV4dCBub2RlcyBieSBhIHN0eWxlIHNwYW4uCisKKyAgICAgICAgSW4gUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQsIHdlIGNsZWFudXAgdGhlc2UgaW5saW5lIHN0eWxlIGRlY2xhcmF0aW9ucyBmcm9t
IGVhY2ggbm9kZS4KKworICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50
KTogYXV0aG9yIGFuZCB1c2VyIHN0eWxlc2hlZXRzIG9ubHkgaWYKKyAgICAgICAgQXV0aG9yQ1NT
UnVsZXMgaXMgc2V0IGluIHJ1bGVzVG9JbmNsdWRlLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGlu
Z1N0eWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6Y29sbGFwc2VUZXh0
RGVjb3JhdGlvblByb3BlcnRpZXMpOiBSZW1vdmUgdGV4dC1kZWNvcmF0aW9uIHByb3BlcnR5IHdo
ZW4KKyAgICAgICAgdGhlIHZhbHVlIG9mIC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZl
Y3QgaXMgbm9uZS4KKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVs
ZW1lbnQpOiBUYWtlcyBydWxlc1RvSW5jbHVkZSBmb3Igc3R5bGVSdWxlc0ZvckVsZW1lbnQuCisg
ICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVGcm9tUnVsZXMpOiBDYWxs
cyBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVtZW50IHdpdGgKKyAgICAgICAgQ1NTU3R5bGVT
ZWxlY3Rvcjo6QXV0aG9yQ1NTUnVsZXMgfCBDU1NTdHlsZVNlbGVjdG9yOjpDcm9zc09yaWdpbkNT
U1J1bGVzIGFzIGl0IHVzZWQgdG8gZG8uCisgICAgICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6
OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQW5kQ29udGV4dCk6IEFkZGVkOyByZW1vdmVzIHJlZHVuZGFu
dCBzdHlsZSBpbgorICAgICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC4KKyAgICAgICAgKFdl
YkNvcmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1bHRTdHls
ZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpmb3JjZUlubGluZSk6
IEFkZGVkOyBhZGRzIGRpc3BsYXk6IGlubGluZTsKKyAgICAgICAgKFdlYkNvcmU6OmdldFByb3Bl
cnRpZXNOb3RJbik6IE5vIGxvbmdlciByZW1vdmVzIHByb3BlcnRpZXMgYmFzZVN0eWxlIGRpZG4n
dCBoYXZlLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0eWxlLmg6CisgICAgICAgICogZWRp
dGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHA6IFJlbW92ZWQgaGFuZGxlU3R5bGVTcGFu
c0JlZm9yZUluc2VydGlvbiwgaGFuZGxlU3R5bGVTcGFucywKKyAgICAgICAgYW5kIGNvcHlTdHls
ZVRvQ2hpbGRyZW4uCisgICAgICAgIChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6
cmVtb3ZlUmVkdW5kYW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZSk6IFJld3JpdHRlbjsK
KyAgICAgICAgQmVjYXVzZSB3ZSBmb3JjZSBzcGFucyB0byBiZSBpbmxpbmUgaW4gc2VyaWFsaXph
dGlvbiBjb2RlIChTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dCksCisgICAgICAg
IHdlIG5vIGxvbmdlciBoYXZlIHRvIGFkZCBkaXNwbGF5OiBpbmxpbmUgYW5kIGZsb2F0OiBub25l
IGhlcmUuIE1vdmVkIGxvZ2ljIHRvIGRlYWwgd2l0aCBwYXN0ZQorICAgICAgICBhcyBxdW90YXRp
b24gZnJvbSBoYW5kbGVTdHlsZVNwYW5zLiBBbHNvIHJlbW92ZXMgZW1wdHkgc3R5bGUgc3BhbnMg
bGlrZSB3ZSB1c2VkIHRvIGRvIGluCisgICAgICAgIGhhbmRsZVN0eWxlU3BhbnMuCisgICAgICAg
IChXZWJDb3JlOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSk6IEluIHRoZSBsb2dp
YyB0byBhdm9pZCBzdHlsZSBlbGVtZW50cywgZG9uJ3QgbGV0CisgICAgICAgIGlzSW5saW5lTm9k
ZVdpdGhTdHlsZSBnbyBwYXNzIGVuY2xvc2luZyBibG9jayBlbGVtZW50czsgbm8gbG9uZ2VyIGNh
bGxzIGhhbmRsZVN0eWxlU3BhbnMgb3IKKyAgICAgICAgaGFuZGxlU3R5bGVTcGFuc0JlZm9yZUlu
c2VydGlvbi4KKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmg6Cisg
ICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoaWdo
ZXN0RW5jbG9zaW5nTm9kZU9mVHlwZSk6IFRha2VzIG5vZGUgdG8gc3RheSB3aXRoaW4gbGlrZSBu
b2RlIHRyYXZlcnNhbCBmdW5jdGlvbnMuCisgICAgICAgICogZWRpdGluZy9odG1sZWRpdGluZy5o
OgorICAgICAgICAqIGVkaXRpbmcvbWFya3VwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjpzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUpOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvcik6IFRha2VzIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQuCisgICAgICAgIChXZWJD
b3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhTdHlsZU5vZGUpOiBDYWxscyBh
cHBlbmRTdHlsZU5vZGVPcGVuVGFnIGFuZCAKKyAgICAgICAgc3R5bGVOb2RlQ2xvc2VUYWcuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3R5bGVOb2Rl
T3BlblRhZyk6IEV4dHJhY3RlZCBmcm9tIHdyYXBXaXRoU3R5bGVOb2RlLgorICAgICAgICAoV2Vi
Q29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNsb3NlVGFnKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dCk6
IFdyYXBzIHRleHQgbm9kZSB3aXRoIGEgc3R5bGUgc3BhbiBpZiBuZWVkZWQuCisgICAgICAgIFNl
dCBkaXNwbGF5OiBpbmxpbmUgYW5kIGZsb2F0OiBub25lIHNvIHRoYXQgaXQgd29uJ3QgYmUgY29u
dmVydGVkIHRvIGEgYmxvY2sgb24gcGFzdGUgc2lkZS4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtZW50KTogQWRkIHdyYXBwaW5nIHN0eWxlIGlm
IGFwcHJvcHJpYXRlLgorICAgICAgICBXZSByZW1vdmUgYW55IHByb3BlcnRpZXMgdGhhdCBhcmUg
b3ZlcnJpZGRlbiBieSBkZWZhdWx0IHN0eWxlIGFuZCBhbnkgc3R5bGUgdGhhdCBtYXkgY29uZmxp
Y3QKKyAgICAgICAgd2l0aCB0aGUgY29tcHV0ZWQgc3R5bGUgb2Ygbm9kZSB0byBhdm9pZCBtb2Rp
ZnlpbmcgdGhlIGFwcGVhcmFuY2Ugb2Ygc2VyaWFsaXplZCBub2Rlcy4KKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2Rlcyk6IENvbXB1dGUgd3Jh
cHBpbmcgc3R5bGU7IGNvcGllcyBvZiB0aGlzCisgICAgICAgIHN0eWxlIGFyZSBtb2RpZmllZCBh
cyBuZWVkZWQgd2hlbiBzZXJpYWxpemluZyB0b3AtbGV2ZWwgZWxlbWVudHMgb3IgdGV4dCBub2Rl
cy4gV2UgY2FsbAorICAgICAgICB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbiB3aXRoIHNo
b3VsZEVtaXQgc2V0IGZhbHNlIGZpcnN0IHRvIGNvbXB1dGUgdGhlIGhpZ2hlc3Qgbm9kZSB0bwor
ICAgICAgICBiZSBzZXJpYWxpemVkLiBUaGUgc2Vjb25kIGNhbGwgdG8gdHJhdmVyc2VOb2Rlc0Zv
clNlcmlhbGl6YXRpb24gd2lsbCBzZXJpYWxpemUgdGhlIG5vZGVzLgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9u
KTogRXh0cmFjdGVkIGZyb20KKyAgICAgICAgc2VyaWFsaXplTm9kZXM7IG91dHB1dHMgc3RyaW5n
IG9ubHkgaWYgc2hvdWxkRW1pdCBpcyB0cnVlLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlTWFy
a3VwKTogTm8gbG9uZ2VyIGFkZHMgd3JhcHBpbmcgc3BhbnMuCisKIDIwMTEtMDgtMDUgIE1hcmsg
Um93ZSAgPG1yb3dlQGFwcGxlLmNvbT4KIAogICAgICAgICBBdHRlbXB0IHRvIGZpeCB0aGUgYnVp
bGQgYWZ0ZXIgcjkyNTM4LgpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0
b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9y
LmNwcAkocmV2aXNpb24gOTI1NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxl
Y3Rvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwNTgsNyArMjA1OCw3IEBAIFBhc3NSZWZQdHI8
Q1NTUnVsZUxpc3Q+IENTU1N0eWxlU2VsZWN0b3IKICAgICAgICAgfQogICAgIH0KIAotICAgIGlm
IChtX21hdGNoQXV0aG9yQW5kVXNlclN0eWxlcykgeworICAgIGlmIChtX21hdGNoQXV0aG9yQW5k
VXNlclN0eWxlcyAmJiBydWxlc1RvSW5jbHVkZSAmIEF1dGhvckNTU1J1bGVzKSB7CiAgICAgICAg
IG1fY2hlY2tlci5tX3NhbWVPcmlnaW5Pbmx5ID0gIShydWxlc1RvSW5jbHVkZSAmIENyb3NzT3Jp
Z2luQ1NTUnVsZXMpOwogCiAgICAgICAgIC8vIENoZWNrIHRoZSBydWxlcyBpbiBhdXRob3Igc2hl
ZXRzLgpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAkocmV2aXNp
b24gOTI1NDIpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTU1NCw3ICs1NTQsMTAgQEAgdm9pZCBFZGl0aW5nU3R5bGU6OmNvbGxh
cHNlVGV4dERlY29yYXRpbwogICAgIGlmICghdGV4dERlY29yYXRpb25zSW5FZmZlY3QpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0
eVRleHREZWNvcmF0aW9uLCB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdC0+Y3NzVGV4dCgpLCBtX211
dGFibGVTdHlsZS0+Z2V0UHJvcGVydHlQcmlvcml0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9u
KSk7CisgICAgaWYgKHRleHREZWNvcmF0aW9uc0luRWZmZWN0LT5pc1ZhbHVlTGlzdCgpKQorICAg
ICAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
biwgdGV4dERlY29yYXRpb25zSW5FZmZlY3QtPmNzc1RleHQoKSwgbV9tdXRhYmxlU3R5bGUtPmdl
dFByb3BlcnR5UHJpb3JpdHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikpOworICAgIGVsc2UK
KyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERl
Y29yYXRpb24pOwogICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0
eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0KTsKIH0KIApAQCAtODE4LDExICs4MjEsMTAg
QEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGUoQ1NTTXV0YWJsZQogICAgIH0KIH0KIAot
c3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1h
dGNoZWRSdWxlc0ZvckVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBQYXNzUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBzdHlsZUZyb21NYXRjaGVkUnVsZXNGb3JFbGVt
ZW50KEVsZW1lbnQqIGVsZW1lbnQsIHVuc2lnbmVkIHJ1bGVzVG9JbmNsdWRlKQogewogICAgIFJl
ZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVE
ZWNsYXJhdGlvbjo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPENTU1J1bGVMaXN0PiBtYXRjaGVkUnVs
ZXMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVjdG9yKCktPnN0eWxlUnVsZXNGb3JF
bGVtZW50KGVsZW1lbnQsCi0gICAgICAgIENTU1N0eWxlU2VsZWN0b3I6OkF1dGhvckNTU1J1bGVz
IHwgQ1NTU3R5bGVTZWxlY3Rvcjo6Q3Jvc3NPcmlnaW5DU1NSdWxlcyk7CisgICAgUmVmUHRyPENT
U1J1bGVMaXN0PiBtYXRjaGVkUnVsZXMgPSBlbGVtZW50LT5kb2N1bWVudCgpLT5zdHlsZVNlbGVj
dG9yKCktPnN0eWxlUnVsZXNGb3JFbGVtZW50KGVsZW1lbnQsIHJ1bGVzVG9JbmNsdWRlKTsKICAg
ICBpZiAobWF0Y2hlZFJ1bGVzKSB7CiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBt
YXRjaGVkUnVsZXMtPmxlbmd0aCgpOyBpKyspIHsKICAgICAgICAgICAgIGlmIChtYXRjaGVkUnVs
ZXMtPml0ZW0oaSktPnR5cGUoKSA9PSBDU1NSdWxlOjpTVFlMRV9SVUxFKSB7CkBAIC04MzcsNyAr
ODM5LDggQEAgc3RhdGljIFBhc3NSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYQogCiB2b2lk
IEVkaXRpbmdTdHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50KiBlbGVtZW50
KQogewotICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gc3R5bGVGcm9tTWF0
Y2hlZFJ1bGVzID0gc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudChlbGVtZW50KTsKKyAg
ICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxl
cyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwKKyAgICAgICAgQ1NT
U3R5bGVTZWxlY3Rvcjo6QXV0aG9yQ1NTUnVsZXMgfCBDU1NTdHlsZVNlbGVjdG9yOjpDcm9zc09y
aWdpbkNTU1J1bGVzKTsKICAgICAvLyBTdHlsZXMgZnJvbSB0aGUgaW5saW5lIHN0eWxlIGRlY2xh
cmF0aW9uLCBoZWxkIGluIHRoZSB2YXJpYWJsZSAic3R5bGUiLCB0YWtlIHByZWNlZGVuY2UgCiAg
ICAgLy8gb3ZlciB0aG9zZSBmcm9tIG1hdGNoZWQgcnVsZXMuCiAgICAgaWYgKG1fbXV0YWJsZVN0
eWxlKQpAQCAtODcwLDE2ICs4NzMsNTYgQEAgdm9pZCBFZGl0aW5nU3R5bGU6Om1lcmdlU3R5bGVG
cm9tUnVsZXNGbwogICAgIG1fbXV0YWJsZVN0eWxlLT5tZXJnZShmcm9tQ29tcHV0ZWRTdHlsZS5n
ZXQoKSk7CiB9CiAKLXZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlcyhTdHls
ZWRFbGVtZW50KiBlbGVtZW50KQordm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1
bGVzQW5kQ29udGV4dChTdHlsZWRFbGVtZW50KiBlbGVtZW50LCBOb2RlKiBjb250ZXh0KQogewor
ICAgIEFTU0VSVChlbGVtZW50KTsKICAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJv
bU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCk7
Ci0gICAgaWYgKCFzdHlsZUZyb21NYXRjaGVkUnVsZXMpCisgICAgLy8gMS4gUmVtb3ZlIHN0eWxl
IGZyb20gbWF0Y2hlZCBydWxlcyBiZWNhdXNlIHN0eWxlIHJlbWFpbiB3aXRob3V0IHJlcGVhdGlu
ZyBpdCBpbiBpbmxpbmUgc3R5bGUgZGVjbGFyYXRpb24KKyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0
eWxlRGVjbGFyYXRpb24+IHN0eWxlRnJvbU1hdGNoZWRSdWxlcyA9IHN0eWxlRnJvbU1hdGNoZWRS
dWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvcjo6QWxsQnV0RW1wdHlDU1NS
dWxlcyk7CisgICAgaWYgKHN0eWxlRnJvbU1hdGNoZWRSdWxlcyAmJiBzdHlsZUZyb21NYXRjaGVk
UnVsZXMtPmxlbmd0aCgpKQorICAgICAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNO
b3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLmdldCgpKTsK
KworICAgIC8vIDIuIFJlbW92ZSBzdHlsZSBwcmVzZW50IGluIGNvbnRleHQgYW5kIG5vdCBvdmVy
cmlkZW4gYnkgbWF0Y2hlZCBydWxlcy4KKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBjb21wdXRl
ZFN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoY29udGV4dCwgRWRpdGluZ0luaGVyaXRhYmxl
UHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKyAgICBpZiAoY29tcHV0ZWRT
dHlsZS0+bV9tdXRhYmxlU3R5bGUpIHsKKyAgICAgICAgY29tcHV0ZWRTdHlsZS0+cmVtb3ZlUHJv
cGVydGllc0luRWxlbWVudERlZmF1bHRTdHlsZShlbGVtZW50KTsKKyAgICAgICAgbV9tdXRhYmxl
U3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4obV9tdXRhYmxlU3R5bGUuZ2V0KCksIGNvbXB1dGVk
U3R5bGUtPm1fbXV0YWJsZVN0eWxlLmdldCgpKTsKKyAgICB9CisKKyAgICAvLyAzLiBJZiB0aGlz
IGVsZW1lbnQgaXMgYSBzcGFuIGFuZCBoYXMgZGlzcGxheTogaW5saW5lIG9yIGZsb2F0OiBub25l
LCByZW1vdmUgdGhlbSB1bmxlc3MgdGhleSBhcmUgb3ZlcnJpZGVuIGJ5IHJ1bGVzLgorICAgIC8v
IFRoZXNlIHJ1bGVzIGFyZSBhZGRlZCBieSBzZXJpYWxpemF0aW9uIGNvZGUgdG8gd3JhcCB0ZXh0
IG5vZGVzLgorICAgIGlmIChpc1N0eWxlU3BhbihlbGVtZW50KSkgeworICAgICAgICBpZiAoIXN0
eWxlRnJvbU1hdGNoZWRSdWxlcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpc3Bs
YXkpICYmIGdldElkZW50aWZpZXJWYWx1ZShtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTUHJvcGVy
dHlEaXNwbGF5KSA9PSBDU1NWYWx1ZUlubGluZSkKKyAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxl
LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXkpOworICAgICAgICBpZiAoIXN0eWxl
RnJvbU1hdGNoZWRSdWxlcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZsb2F0KSAm
JiBnZXRJZGVudGlmaWVyVmFsdWUobV9tdXRhYmxlU3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Rmxv
YXQpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0KTsKKyAgICB9Cit9CisKK3ZvaWQgRWRpdGluZ1N0eWxl
OjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKEVsZW1lbnQqIGVsZW1lbnQp
Cit7CisgICAgaWYgKCFtX211dGFibGVTdHlsZSB8fCAhbV9tdXRhYmxlU3R5bGUtPmxlbmd0aCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX211dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNO
b3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLmdldCgpKTsK
KyAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb24+IGRlZmF1bHRTdHlsZSA9IHN0
eWxlRnJvbU1hdGNoZWRSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgQ1NTU3R5bGVTZWxlY3Rvcjo6
VUFBbmRVc2VyQ1NTUnVsZXMpOworCisgICAgVmVjdG9yPGludD4gcHJvcGVydGllc1RvUmVtb3Zl
KGRlZmF1bHRTdHlsZS0+bGVuZ3RoKCkpOworICAgIHNpemVfdCBpID0gMDsKKyAgICBDU1NNdXRh
YmxlU3R5bGVEZWNsYXJhdGlvbjo6Y29uc3RfaXRlcmF0b3IgZW5kID0gZGVmYXVsdFN0eWxlLT5l
bmQoKTsKKyAgICBmb3IgKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjb25zdF9pdGVyYXRv
ciBpdCA9IGRlZmF1bHRTdHlsZS0+YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0LCArK2kpCisgICAg
ICAgIHByb3BlcnRpZXNUb1JlbW92ZVtpXSA9IGl0LT5pZCgpOworCisgICAgbV9tdXRhYmxlU3R5
bGUtPnJlbW92ZVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzVG9SZW1vdmUuZGF0YSgpLCBwcm9w
ZXJ0aWVzVG9SZW1vdmUuc2l6ZSgpKTsKK30KKwordm9pZCBFZGl0aW5nU3R5bGU6OmZvcmNlSW5s
aW5lKCkKK3sKKyAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQorICAgICAgICBtX211dGFibGVTdHls
ZSA9IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICBjb25zdCBib29s
IHByb3BlcnR5SXNJbXBvcnRhbnQgPSB0cnVlOworICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9w
ZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCBwcm9wZXJ0eUlzSW1wb3J0
YW50KTsKIH0KIAogc3RhdGljIHZvaWQgcmVjb25jaWxlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVz
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKQEAgLTEwODQsMTMgKzExMjcsMTMg
QEAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBnZXRQcgogICAgIGRpZmZUZXh0
RGVjb3JhdGlvbnMocmVzdWx0LmdldCgpLCBDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uLCBiYXNl
VGV4dERlY29yYXRpb25zSW5FZmZlY3QuZ2V0KCkpOwogICAgIGRpZmZUZXh0RGVjb3JhdGlvbnMo
cmVzdWx0LmdldCgpLCBDU1NQcm9wZXJ0eVdlYmtpdFRleHREZWNvcmF0aW9uc0luRWZmZWN0LCBi
YXNlVGV4dERlY29yYXRpb25zSW5FZmZlY3QuZ2V0KCkpOwogCi0gICAgaWYgKGZvbnRXZWlnaHRJ
c0JvbGQocmVzdWx0LmdldCgpKSA9PSBmb250V2VpZ2h0SXNCb2xkKGJhc2VTdHlsZSkpCisgICAg
aWYgKGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZvbnRTaXplKSAm
JiBmb250V2VpZ2h0SXNCb2xkKHJlc3VsdC5nZXQoKSkgPT0gZm9udFdlaWdodElzQm9sZChiYXNl
U3R5bGUpKQogICAgICAgICByZXN1bHQtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Rm9udFdl
aWdodCk7CiAKLSAgICBpZiAoZ2V0UkdCQUZvbnRDb2xvcihyZXN1bHQuZ2V0KCkpID09IGdldFJH
QkFGb250Q29sb3IoYmFzZVN0eWxlKSkKKyAgICBpZiAoYmFzZVN0eWxlLT5nZXRQcm9wZXJ0eUNT
U1ZhbHVlKENTU1Byb3BlcnR5Q29sb3IpICYmIGdldFJHQkFGb250Q29sb3IocmVzdWx0LmdldCgp
KSA9PSBnZXRSR0JBRm9udENvbG9yKGJhc2VTdHlsZSkpCiAgICAgICAgIHJlc3VsdC0+cmVtb3Zl
UHJvcGVydHkoQ1NTUHJvcGVydHlDb2xvcik7CiAKLSAgICBpZiAoZ2V0VGV4dEFsaWdubWVudChy
ZXN1bHQuZ2V0KCkpID09IGdldFRleHRBbGlnbm1lbnQoYmFzZVN0eWxlKSkKKyAgICBpZiAoYmFz
ZVN0eWxlLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5VGV4dEFsaWduKSAmJiBnZXRU
ZXh0QWxpZ25tZW50KHJlc3VsdC5nZXQoKSkgPT0gZ2V0VGV4dEFsaWdubWVudChiYXNlU3R5bGUp
KQogICAgICAgICByZXN1bHQtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5VGV4dEFsaWduKTsK
IAogICAgIHJldHVybiByZXN1bHQ7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0
eWxlLmgJKHJldmlzaW9uIDkyNTQyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuaAkod29ya2luZyBjb3B5KQpAQCAtNDcsNiArNDcsNyBAQCBjbGFzcyBDU1NNdXRhYmxl
U3R5bGVEZWNsYXJhdGlvbjsKIGNsYXNzIENTU1ByaW1pdGl2ZVZhbHVlOwogY2xhc3MgQ1NTVmFs
dWU7CiBjbGFzcyBEb2N1bWVudDsKK2NsYXNzIEVsZW1lbnQ7CiBjbGFzcyBIVE1MRWxlbWVudDsK
IGNsYXNzIE5vZGU7CiBjbGFzcyBQb3NpdGlvbjsKQEAgLTEyMiw3ICsxMjMsOSBAQCBwdWJsaWM6
CiAgICAgdm9pZCBtZXJnZUlubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqKTsKICAg
ICB2b2lkIG1lcmdlU3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxlbWVudCopOwogICAgIHZvaWQgbWVy
Z2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24oU3R5bGVkRWxlbWVudCopOwotICAgIHZv
aWQgcmVtb3ZlU3R5bGVGcm9tUnVsZXMoU3R5bGVkRWxlbWVudCopOworICAgIHZvaWQgcmVtb3Zl
U3R5bGVGcm9tUnVsZXNBbmRDb250ZXh0KFN0eWxlZEVsZW1lbnQqLCBOb2RlKiBjb250ZXh0KTsK
KyAgICB2b2lkIHJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoRWxlbWVudCop
OworICAgIHZvaWQgZm9yY2VJbmxpbmUoKTsKIAogICAgIGZsb2F0IGZvbnRTaXplRGVsdGEoKSBj
b25zdCB7IHJldHVybiBtX2ZvbnRTaXplRGVsdGE7IH0KICAgICBib29sIGhhc0ZvbnRTaXplRGVs
dGEoKSBjb25zdCB7IHJldHVybiBtX2ZvbnRTaXplRGVsdGEgIT0gTm9Gb250RGVsdGE7IH0KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1h
bmQuY3BwCShyZXZpc2lvbiA5MjU0MikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw3IEBAIHB1
YmxpYzoKICAgICAKICAgICBib29sIGhhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQoKSBjb25z
dCB7IHJldHVybiBtX2hhc0ludGVyY2hhbmdlTmV3bGluZUF0U3RhcnQ7IH0KICAgICBib29sIGhh
c0ludGVyY2hhbmdlTmV3bGluZUF0RW5kKCkgY29uc3QgeyByZXR1cm4gbV9oYXNJbnRlcmNoYW5n
ZU5ld2xpbmVBdEVuZDsgfQotICAgIAorCiAgICAgdm9pZCByZW1vdmVOb2RlKFBhc3NSZWZQdHI8
Tm9kZT4pOwogICAgIHZvaWQgcmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbihOb2RlKik7CiAK
QEAgLTQ3OCwzNCArNDc4LDM5IEBAIGJvb2wgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OnNob3Vs
ZE1lcmcKIC8vIGEgZGl2IGluc2VydGVkIGludG8gYSBkb2N1bWVudCB3aXRoIGRpdiB7IGRpc3Bs
YXk6aW5saW5lOyB9Lgogdm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6cmVtb3ZlUmVkdW5k
YW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZSgpCiB7Ci0gICAgZm9yIChSZWZQdHI8Tm9k
ZT4gbm9kZSA9IG1fZmlyc3ROb2RlSW5zZXJ0ZWQuZ2V0KCk7IG5vZGU7IG5vZGUgPSBub2RlLT50
cmF2ZXJzZU5leHROb2RlKCkpIHsKLSAgICAgICAgLy8gRklYTUU6IDxyZGFyOi8vcHJvYmxlbS81
MzcxNTM2PiBTdHlsZSBydWxlcyB0aGF0IG1hdGNoIHBhc3RlZCBjb250ZW50IGNhbiBjaGFuZ2Ug
aXQncyBhcHBlYXJhbmNlCi0gICAgICAgIGlmIChpc1N0eWxlU3Bhbihub2RlLmdldCgpKSkgewot
ICAgICAgICAgICAgSFRNTEVsZW1lbnQqIGUgPSB0b0hUTUxFbGVtZW50KG5vZGUuZ2V0KCkpOwot
ICAgICAgICAgICAgLy8gVGhlcmUgYXJlIG90aGVyIHN0eWxlcyB0aGF0IHN0eWxlIHJ1bGVzIGNh
biBnaXZlIHRvIHN0eWxlIHNwYW5zLAotICAgICAgICAgICAgLy8gYnV0IHRoZXNlIGFyZSB0aGUg
dHdvIGltcG9ydGFudCBvbmVzIGJlY2F1c2UgdGhleSdsbCBwcmV2ZW50Ci0gICAgICAgICAgICAv
LyBpbnNlcnRlZCBjb250ZW50IGZyb20gYXBwZWFyaW5nIGluIHRoZSByaWdodCBwYXJhZ3JhcGgu
Ci0gICAgICAgICAgICAvLyBGSVhNRTogSHlhdHQgaXMgY29uY2VybmVkIHRoYXQgc2VsZWN0aXZl
bHkgdXNpbmcgZGlzcGxheTppbmxpbmUgd2lsbCBnaXZlIGluY29uc2lzdGVudAotICAgICAgICAg
ICAgLy8gcmVzdWx0cy4gV2UgYWxyZWFkeSBrbm93IG9uZSBpc3N1ZSBiZWNhdXNlIHRkIGVsZW1l
bnRzIGlnbm9yZSB0aGVpciBkaXNwbGF5IHByb3BlcnR5Ci0gICAgICAgICAgICAvLyBpbiBxdWly
a3MgbW9kZSAod2hpY2ggTWFpbC5hcHAgaXMgYWx3YXlzIGluKS4gV2Ugc2hvdWxkIGxvb2sgZm9y
IGFuIGFsdGVybmF0aXZlLgotICAgICAgICAgICAgaWYgKGlzQmxvY2soZSkpCi0gICAgICAgICAg
ICAgICAgZS0+Z2V0SW5saW5lU3R5bGVEZWNsKCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlz
cGxheSwgQ1NTVmFsdWVJbmxpbmUpOwotICAgICAgICAgICAgaWYgKGUtPnJlbmRlcmVyKCkgJiYg
ZS0+cmVuZGVyZXIoKS0+c3R5bGUoKS0+aXNGbG9hdGluZygpKQotICAgICAgICAgICAgICAgIGUt
PmdldElubGluZVN0eWxlRGVjbCgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBDU1NW
YWx1ZU5vbmUpOwotICAgICAgICB9IGVsc2UgaWYgKG5vZGUtPmlzU3R5bGVkRWxlbWVudCgpKSB7
Ci0gICAgICAgICAgICBTdHlsZWRFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVk
RWxlbWVudCo+KG5vZGUuZ2V0KCkpOwotICAgICAgICAgICAgaWYgKENTU011dGFibGVTdHlsZURl
Y2xhcmF0aW9uKiBpbmxpbmVTdHlsZSA9IGVsZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpKSB7Ci0g
ICAgICAgICAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbmV3SW5saW5lU3R5bGUgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZShpbmxpbmVTdHlsZSk7Ci0gICAgICAgICAgICAgICAgbmV3SW5saW5l
U3R5bGUtPnJlbW92ZVN0eWxlRnJvbVJ1bGVzKGVsZW1lbnQpOwotICAgICAgICAgICAgICAgIGlm
ICghbmV3SW5saW5lU3R5bGUtPnN0eWxlKCkgfHwgIW5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5s
ZW5ndGgoKSkKLSAgICAgICAgICAgICAgICAgICAgcmVtb3ZlTm9kZUF0dHJpYnV0ZShlbGVtZW50
LCBzdHlsZUF0dHIpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKG5ld0lubGluZVN0eWxlLT5z
dHlsZSgpLT5sZW5ndGgoKSA8IGlubGluZVN0eWxlLT5sZW5ndGgoKSkKLSAgICAgICAgICAgICAg
ICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShlbGVtZW50LCBzdHlsZUF0dHIsIG5ld0lubGluZVN0eWxl
LT5zdHlsZSgpLT5jc3NUZXh0KCkpOyAgICAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICB9
CisgICAgUmVmUHRyPE5vZGU+IHBhc3RFbmROb2RlID0gbV9sYXN0TGVhZkluc2VydGVkID8gbV9s
YXN0TGVhZkluc2VydGVkLT50cmF2ZXJzZU5leHROb2RlKCkgOiAwOworICAgIFJlZlB0cjxOb2Rl
PiBuZXh0OworICAgIGZvciAoUmVmUHRyPE5vZGU+IG5vZGUgPSBtX2ZpcnN0Tm9kZUluc2VydGVk
LmdldCgpOyBub2RlICYmIG5vZGUgIT0gcGFzdEVuZE5vZGU7IG5vZGUgPSBuZXh0KSB7CisgICAg
ICAgIG5leHQgPSBub2RlLT50cmF2ZXJzZU5leHROb2RlKCk7CisgICAgICAgIGlmICghbm9kZS0+
aXNTdHlsZWRFbGVtZW50KCkpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBTdHls
ZWRFbGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KG5vZGUuZ2V0
KCkpOworCisgICAgICAgIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBpbmxpbmVTdHlsZSA9
IGVsZW1lbnQtPmlubGluZVN0eWxlRGVjbCgpOworICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxl
PiBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKGlubGluZVN0eWxlKTsKKyAg
ICAgICAgaWYgKGlubGluZVN0eWxlKSB7CisgICAgICAgICAgICBDb250YWluZXJOb2RlKiBjb250
ZXh0ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOworCisgICAgICAgICAgICAvLyBJZiBNYWlsIHdy
YXBzIHRoZSBmcmFnbWVudCB3aXRoIGEgUGFzdGUgYXMgUXVvdGF0aW9uIGJsb2NrcXVvdGUsIG9y
IGlmIHlvdSdyZSBwYXN0aW5nIGludG8gYSBxdW90ZWQgcmVnaW9uLAorICAgICAgICAgICAgLy8g
c3R5bGVzIGZyb20gYmxvY2txdW90ZU5vZGUgYXJlIGFsbG93ZWQgdG8gb3ZlcnJpZGUgdGhvc2Ug
ZnJvbSB0aGUgc291cmNlIGRvY3VtZW50LCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzQ5MzA5ODY+IGFu
ZCA8cmRhcjovL3Byb2JsZW0vNTA4OTMyNz4uCisgICAgICAgICAgICBOb2RlKiBibG9ja3F1b3Rl
Tm9kZSA9IGlzTWFpbFBhc3RlQXNRdW90YXRpb25Ob2RlKGNvbnRleHQpID8gY29udGV4dCA6IGVu
Y2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlvbkluTm9kZShjb250ZXh0KSwgaXNNYWlsQmxv
Y2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpOworICAgICAgICAgICAgaWYgKGJsb2Nr
cXVvdGVOb2RlKQorICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUZy
b21SdWxlc0FuZENvbnRleHQoZWxlbWVudCwgZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCkp
OworCisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRD
b250ZXh0KGVsZW1lbnQsIGNvbnRleHQpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKG5vZGUg
PT0gbV9sYXN0TGVhZkluc2VydGVkKQotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICgh
aW5saW5lU3R5bGUgfHwgbmV3SW5saW5lU3R5bGUtPmlzRW1wdHkoKSkgeworICAgICAgICAgICAg
aWYgKGlzU3R5bGVTcGFuKG5vZGUuZ2V0KCkpKSAvLyBGSVhNRTogc2hvdWxkIGNhbGwgaXNTcGFu
V2l0aG91dEF0dHJpYnV0ZXNPclVuc3R5bGVTdHlsZVNwYW4gaW5zdGVhZAorICAgICAgICAgICAg
ICAgIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4obm9kZS5nZXQoKSk7CisgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgcmVtb3ZlTm9kZUF0dHJpYnV0ZShlbGVtZW50LCBzdHls
ZUF0dHIpOworICAgICAgICB9IGVsc2UgaWYgKG5ld0lubGluZVN0eWxlLT5zdHlsZSgpLT5sZW5n
dGgoKSAhPSBpbmxpbmVTdHlsZS0+bGVuZ3RoKCkpCisgICAgICAgICAgICBzZXROb2RlQXR0cmli
dXRlKGVsZW1lbnQsIHN0eWxlQXR0ciwgbmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmNzc1RleHQo
KSk7CisKKyAgICAgICAgaWYgKGlzU3R5bGVTcGFuKG5vZGUuZ2V0KCkpICYmICFub2RlLT5maXJz
dENoaWxkKCkpCisgICAgICAgICAgICByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKG5vZGUu
Z2V0KCkpOwogICAgIH0KIH0KIApAQCAtNTgyLDEyMSArNTg3LDYgQEAgc3RhdGljIHZvaWQgcmVt
b3ZlSGVhZENvbnRlbnRzKFJlcGxhY2VtZQogICAgIH0KIH0KIAotLy8gUmVtb3ZlIHN0eWxlIHNw
YW5zIGJlZm9yZSBpbnNlcnRpb24gaWYgdGhleSBhcmUgdW5uZWNlc3NhcnkuICBJdCdzIGZhc3Rl
ciBiZWNhdXNlIHdlJ2xsIAotLy8gYXZvaWQgZG9pbmcgYSBsYXlvdXQuCi1zdGF0aWMgYm9vbCBo
YW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKFJlcGxhY2VtZW50RnJhZ21lbnQmIGZyYWdt
ZW50LCBjb25zdCBQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zKQotewotICAgIE5vZGUqIHRvcE5vZGUg
PSBmcmFnbWVudC5maXJzdENoaWxkKCk7Ci0KLSAgICAvLyBIYW5kbGluZyB0aGUgY2FzZSB3aGVy
ZSB3ZSBhcmUgZG9pbmcgUGFzdGUgYXMgUXVvdGF0aW9uIG9yIHBhc3RpbmcgaW50byBxdW90ZWQg
Y29udGVudCBpcyBtb3JlIGNvbXBsaWNhdGVkIChzZWUgaGFuZGxlU3R5bGVTcGFucykKLSAgICAv
LyBhbmQgZG9lc24ndCByZWNlaXZlIHRoZSBvcHRpbWl6YXRpb24uCi0gICAgaWYgKGlzTWFpbFBh
c3RlQXNRdW90YXRpb25Ob2RlKHRvcE5vZGUpIHx8IGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQ
b3NpdGlvbkluT3JCZWZvcmVOb2RlKHRvcE5vZGUpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9z
c0VkaXRpbmdCb3VuZGFyeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIC8vIEVpdGhl
ciB0aGVyZSBhcmUgbm8gc3R5bGUgc3BhbnMgaW4gdGhlIGZyYWdtZW50IG9yIGEgV2ViS2l0IGNs
aWVudCBoYXMgYWRkZWQgY29udGVudCB0byB0aGUgZnJhZ21lbnQKLSAgICAvLyBiZWZvcmUgaW5z
ZXJ0aW5nIGl0LiAgTG9vayBmb3IgYW5kIGhhbmRsZSBzdHlsZSBzcGFucyBhZnRlciBpbnNlcnRp
b24uCi0gICAgaWYgKCFpc1N0eWxlU3Bhbih0b3BOb2RlKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgTm9kZSogd3JhcHBpbmdTdHlsZVNwYW4gPSB0b3BOb2RlOwotICAgIFJlZlB0cjxF
ZGl0aW5nU3R5bGU+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShp
bnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIFN0cmluZyBzdHls
ZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5jc3NUZXh0KCk7Ci0KLSAgICAv
LyBGSVhNRTogVGhpcyBzdHJpbmcgY29tcGFyaXNvbiBpcyBhIG5haXZlIHdheSBvZiBjb21wYXJp
bmcgdHdvIHN0eWxlcy4KLSAgICAvLyBXZSBzaG91bGQgYmUgdGFraW5nIHRoZSBkaWZmIGFuZCBj
aGVjayB0aGF0IHRoZSBkaWZmIGlzIGVtcHR5LgotICAgIGlmIChzdHlsZVRleHQgIT0gc3RhdGlj
X2Nhc3Q8RWxlbWVudCo+KHdyYXBwaW5nU3R5bGVTcGFuKS0+Z2V0QXR0cmlidXRlKHN0eWxlQXR0
cikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZyYWdtZW50LnJlbW92ZU5vZGVQcmVz
ZXJ2aW5nQ2hpbGRyZW4od3JhcHBpbmdTdHlsZVNwYW4pOwotICAgIHJldHVybiB0cnVlOwotfQot
Ci0vLyBBdCBjb3B5IHRpbWUsIFdlYktpdCB3cmFwcyBjb3BpZWQgY29udGVudCBpbiBhIHNwYW4g
dGhhdCBjb250YWlucyB0aGUgc291cmNlIGRvY3VtZW50J3MgCi0vLyBkZWZhdWx0IHN0eWxlcy4g
IElmIHRoZSBjb3BpZWQgUmFuZ2UgaW5oZXJpdHMgYW55IG90aGVyIHN0eWxlcyBmcm9tIGl0cyBh
bmNlc3RvcnMsIHdlIHB1dCAKLS8vIHRob3NlIHN0eWxlcyBvbiBhIHNlY29uZCBzcGFuLgotLy8g
VGhpcyBmdW5jdGlvbiByZW1vdmVzIHJlZHVuZGFudCBzdHlsZXMgZnJvbSB0aG9zZSBzcGFucywg
YW5kIHJlbW92ZXMgdGhlIHNwYW5zIGlmIGFsbCB0aGVpciAKLS8vIHN0eWxlcyBhcmUgcmVkdW5k
YW50LiAKLS8vIFdlIHNob3VsZCByZW1vdmUgdGhlIEFwcGxlLXN0eWxlLXNwYW4gY2xhc3Mgd2hl
biB3ZSdyZSBkb25lLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzU2ODU2MDA+LgotLy8gV2Ugc2hvdWxk
IHJlbW92ZSBzdHlsZXMgZnJvbSBzcGFucyB0aGF0IGFyZSBvdmVycmlkZGVuIGJ5IGFsbCBvZiB0
aGVpciBjaGlsZHJlbiwgZWl0aGVyIGhlcmUKLS8vIG9yIGF0IGNvcHkgdGltZS4KLXZvaWQgUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoKQotewotICAgIEhUTUxFbGVt
ZW50KiB3cmFwcGluZ1N0eWxlU3BhbiA9IDA7Ci0gICAgLy8gVGhlIHN0eWxlIHNwYW4gdGhhdCBj
b250YWlucyB0aGUgc291cmNlIGRvY3VtZW50J3MgZGVmYXVsdCBzdHlsZSBzaG91bGQgYmUgYXQK
LSAgICAvLyB0aGUgdG9wIG9mIHRoZSBmcmFnbWVudCwgYnV0IE1haWwgc29tZXRpbWVzIGFkZHMg
YSB3cmFwcGVyIChmb3IgUGFzdGUgQXMgUXVvdGF0aW9uKSwKLSAgICAvLyBzbyBzZWFyY2ggZm9y
IHRoZSB0b3AgbGV2ZWwgc3R5bGUgc3BhbiBpbnN0ZWFkIG9mIGFzc3VtaW5nIGl0J3MgYXQgdGhl
IHRvcC4KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX2ZpcnN0Tm9kZUluc2VydGVkLmdldCgpOyBu
b2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAgICAgIGlmIChpc1N0
eWxlU3Bhbihub2RlKSkgewotICAgICAgICAgICAgd3JhcHBpbmdTdHlsZVNwYW4gPSB0b0hUTUxF
bGVtZW50KG5vZGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAg
Ci0gICAgLy8gVGhlcmUgbWlnaHQgbm90IGJlIGFueSBzdHlsZSBzcGFucyBpZiB3ZSdyZSBwYXN0
aW5nIGZyb20gYW5vdGhlciBhcHBsaWNhdGlvbiBvciBpZiAKLSAgICAvLyB3ZSBhcmUgaGVyZSBi
ZWNhdXNlIG9mIGEgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwiLCAuLi4pIGNhbGwu
Ci0gICAgaWYgKCF3cmFwcGluZ1N0eWxlU3BhbikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVm
UHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSh3cmFwcGluZ1N0
eWxlU3Bhbi0+Z2V0SW5saW5lU3R5bGVEZWNsKCkpOwotICAgIENvbnRhaW5lck5vZGUqIGNvbnRl
eHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwotCi0gICAgLy8gSWYgTWFpbCB3
cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBibG9ja3F1b3RlLCBv
ciBpZiB5b3UncmUgcGFzdGluZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKLSAgICAvLyBzdHlsZXMg
ZnJvbSBibG9ja3F1b3RlTm9kZSBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSB0aG9zZSBmcm9tIHRo
ZSBzb3VyY2UgZG9jdW1lbnQsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDkzMDk4Nj4gYW5kIDxyZGFy
Oi8vcHJvYmxlbS81MDg5MzI3Pi4KLSAgICBOb2RlKiBibG9ja3F1b3RlTm9kZSA9IGlzTWFpbFBh
c3RlQXNRdW90YXRpb25Ob2RlKGNvbnRleHQpID8gY29udGV4dCA6IGVuY2xvc2luZ05vZGVPZlR5
cGUoZmlyc3RQb3NpdGlvbkluTm9kZShjb250ZXh0KSwgaXNNYWlsQmxvY2txdW90ZSwgQ2FuQ3Jv
c3NFZGl0aW5nQm91bmRhcnkpOwotICAgIGlmIChibG9ja3F1b3RlTm9kZSkKLSAgICAgICAgY29u
dGV4dCA9IGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotCi0gICAgLy8gVGhpcyBvcGVy
YXRpb24gcmVxdWlyZXMgdGhhdCBvbmx5IGVkaXRpbmcgc3R5bGVzIHRvIGJlIHJlbW92ZWQgZnJv
bSBzb3VyY2VEb2N1bWVudFN0eWxlLgotICAgIHN0eWxlLT5wcmVwYXJlVG9BcHBseUF0KGZpcnN0
UG9zaXRpb25Jbk5vZGUoY29udGV4dCkpOwotCi0gICAgLy8gUmVtb3ZlIGJsb2NrIHByb3BlcnRp
ZXMgaW4gdGhlIHNwYW4ncyBzdHlsZS4gVGhpcyBwcmV2ZW50cyBwcm9wZXJ0aWVzIHRoYXQgcHJv
YmFibHkgaGF2ZSBubyBlZmZlY3QgCi0gICAgLy8gY3VycmVudGx5IGZyb20gYWZmZWN0aW5nIGJs
b2NrcyBsYXRlciBpZiB0aGUgc3R5bGUgaXMgY2xvbmVkIGZvciBhIG5ldyBibG9jayBlbGVtZW50
IGR1cmluZyBhIGZ1dHVyZSAKLSAgICAvLyBlZGl0aW5nIG9wZXJhdGlvbi4KLSAgICAvLyBGSVhN
RTogVGhleSAqY2FuKiBoYXZlIGFuIGVmZmVjdCBjdXJyZW50bHkgaWYgYmxvY2tzIGJlbmVhdGgg
dGhlIHN0eWxlIHNwYW4gYXJlbid0IGluZGl2aWR1YWxseSBtYXJrZWQKLSAgICAvLyB3aXRoIGJs
b2NrIHN0eWxlcyBieSB0aGUgZWRpdGluZyBlbmdpbmUgdXNlZCB0byBzdHlsZSB0aGVtLiAgV2Vi
S2l0IGRvZXNuJ3QgZG8gdGhpcywgYnV0IG90aGVycyBtaWdodC4KLSAgICBzdHlsZS0+cmVtb3Zl
QmxvY2tQcm9wZXJ0aWVzKCk7Ci0KLSAgICBpZiAoc3R5bGUtPmlzRW1wdHkoKSB8fCAhd3JhcHBp
bmdTdHlsZVNwYW4tPmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgcmVtb3ZlTm9kZVByZXNlcnZpbmdD
aGlsZHJlbih3cmFwcGluZ1N0eWxlU3Bhbik7Ci0gICAgZWxzZQotICAgICAgICBzZXROb2RlQXR0
cmlidXRlKHdyYXBwaW5nU3R5bGVTcGFuLCBzdHlsZUF0dHIsIHN0eWxlLT5zdHlsZSgpLT5jc3NU
ZXh0KCkpOwotfQotCi0vLyBUYWtlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgb2YgYSBzcGFuIGFuZCBh
cHBseSBpdCB0byBpdCdzIGNoaWxkcmVuIGluc3RlYWQuICBUaGlzIGFsbG93cyB1cyB0bwotLy8g
Y29udmVydCBpbnZhbGlkIEhUTUwgd2hlcmUgYSBzcGFuIGNvbnRhaW5zIGJsb2NrIGVsZW1lbnRz
IGludG8gdmFsaWQgSFRNTCB3aGlsZSBwcmVzZXJ2aW5nCi0vLyBzdHlsZXMuCi12b2lkIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kOjpjb3B5U3R5bGVUb0NoaWxkcmVuKE5vZGUqIHBhcmVudE5vZGUs
IGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBwYXJlbnRTdHlsZSkKLXsKLSAgICBB
U1NFUlQocGFyZW50Tm9kZS0+aGFzVGFnTmFtZShzcGFuVGFnKSk7Ci0gICAgTm9kZVZlY3RvciBj
aGlsZE5vZGVzOwotICAgIGZvciAoUmVmUHRyPE5vZGU+IGNoaWxkTm9kZSA9IHBhcmVudE5vZGUt
PmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5vZGUtPm5leHRTaWJs
aW5nKCkpCi0gICAgICAgIGNoaWxkTm9kZXMuYXBwZW5kKGNoaWxkTm9kZSk7Ci0gICAgICAgIAot
ICAgIGZvciAoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGlsZE5vZGVzLmJlZ2lu
KCk7IGl0ICE9IGNoaWxkTm9kZXMuZW5kKCk7IGl0KyspIHsKLSAgICAgICAgTm9kZSogY2hpbGRO
b2RlID0gaXQtPmdldCgpOwotICAgICAgICBpZiAoY2hpbGROb2RlLT5pc1RleHROb2RlKCkgfHwg
IWlzQmxvY2soY2hpbGROb2RlKSB8fCBjaGlsZE5vZGUtPmhhc1RhZ05hbWUocHJlVGFnKSkgewot
ICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBwdXQgYSBzcGFuIHRhZyBhcm91bmQgdGhlIGNo
aWxkIG5vZGUuCi0gICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV3Tm9kZSA9IHBhcmVudE5vZGUt
PmNsb25lTm9kZShmYWxzZSk7Ci0gICAgICAgICAgICBBU1NFUlQobmV3Tm9kZS0+aGFzVGFnTmFt
ZShzcGFuVGFnKSk7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogbmV3U3BhbiA9IHRvSFRNTEVs
ZW1lbnQobmV3Tm9kZS5nZXQoKSk7Ci0gICAgICAgICAgICBzZXROb2RlQXR0cmlidXRlKG5ld1Nw
YW4sIHN0eWxlQXR0ciwgcGFyZW50U3R5bGUtPmNzc1RleHQoKSk7Ci0gICAgICAgICAgICBpbnNl
cnROb2RlQWZ0ZXIobmV3U3BhbiwgY2hpbGROb2RlKTsKLSAgICAgICAgICAgIEV4Y2VwdGlvbkNv
ZGUgZWMgPSAwOwotICAgICAgICAgICAgbmV3U3Bhbi0+YXBwZW5kQ2hpbGQoY2hpbGROb2RlLCBl
Yyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgICAgIGNoaWxkTm9kZSA9IG5l
d1NwYW47Ci0gICAgICAgIH0gZWxzZSBpZiAoY2hpbGROb2RlLT5pc0hUTUxFbGVtZW50KCkpIHsK
LSAgICAgICAgICAgIC8vIENvcHkgdGhlIHN0eWxlIGF0dHJpYnV0ZSBhbmQgbWVyZ2UgdGhlbSBp
bnRvIHRoZSBjaGlsZCBub2RlLiAgV2UgZG9uJ3Qgd2FudCB0byBvdmVycmlkZQotICAgICAgICAg
ICAgLy8gZXhpc3Rpbmcgc3R5bGVzLCBzbyBkb24ndCBjbG9iYmVyIG9uIG1lcmdlLgotICAgICAg
ICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBuZXdTdHlsZSA9IHBhcmVu
dFN0eWxlLT5jb3B5KCk7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogY2hpbGRFbGVtZW50ID0g
dG9IVE1MRWxlbWVudChjaGlsZE5vZGUpOwotICAgICAgICAgICAgUmVmUHRyPENTU011dGFibGVT
dHlsZURlY2xhcmF0aW9uPiBleGlzdGluZ1N0eWxlcyA9IGNoaWxkRWxlbWVudC0+Z2V0SW5saW5l
U3R5bGVEZWNsKCktPmNvcHkoKTsKLSAgICAgICAgICAgIGV4aXN0aW5nU3R5bGVzLT5tZXJnZShu
ZXdTdHlsZS5nZXQoKSwgZmFsc2UpOwotICAgICAgICAgICAgc2V0Tm9kZUF0dHJpYnV0ZShjaGls
ZEVsZW1lbnQsIHN0eWxlQXR0ciwgZXhpc3RpbmdTdHlsZXMtPmNzc1RleHQoKSk7Ci0gICAgICAg
IH0KLSAgICB9Ci19Ci0KIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Om1lcmdlRW5kSWZO
ZWVkZWQoKQogewogICAgIGlmICghbV9zaG91bGRNZXJnZUVuZCkKQEAgLTc4Nyw3ICs2NzcsNyBA
QCBzdGF0aWMgYm9vbCBpc0lubGluZU5vZGVXaXRoU3R5bGUoY29uc3QgCiAKICAgICByZXR1cm4g
ZmFsc2U7CiB9Ci0gICAgCisKIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHko
KQogewogICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gZW5kaW5nU2VsZWN0aW9uKCk7
CkBAIC05MjksMjQgKzgxOSwyMyBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0Fw
cGx5KCkKICAgICAvLyBQYXN0ZSBpbnRvIHJ1biBvZiB0YWJzIHNwbGl0cyB0aGUgdGFiIHNwYW4u
CiAgICAgaW5zZXJ0aW9uUG9zID0gcG9zaXRpb25PdXRzaWRlVGFiU3BhbihpbnNlcnRpb25Qb3Mp
OwogCi0gICAgYm9vbCBoYW5kbGVkU3R5bGVTcGFucyA9IGhhbmRsZVN0eWxlU3BhbnNCZWZvcmVJ
bnNlcnRpb24oZnJhZ21lbnQsIGluc2VydGlvblBvcyk7Ci0KICAgICAvLyBJZiB3ZSBhcmUgbm90
IHRyeWluZyB0byBtYXRjaCB0aGUgZGVzdGluYXRpb24gc3R5bGUgd2UgcHJlZmVyIGEgcG9zaXRp
b24KICAgICAvLyB0aGF0IGlzIG91dHNpZGUgaW5saW5lIGVsZW1lbnRzIHRoYXQgcHJvdmlkZSBz
dHlsZS4KICAgICAvLyBUaGlzIHdheSB3ZSBjYW4gcHJvZHVjZSBhIGxlc3MgdmVyYm9zZSBtYXJr
dXAuCiAgICAgLy8gV2UgY2FuIHNraXAgdGhpcyBvcHRpbWl6YXRpb24gZm9yIGZyYWdtZW50cyBu
b3Qgd3JhcHBlZCBpbiBvbmUgb2YKICAgICAvLyBvdXIgc3R5bGUgc3BhbnMgYW5kIGZvciBwb3Np
dGlvbnMgaW5zaWRlIGxpc3QgaXRlbXMKICAgICAvLyBzaW5jZSBpbnNlcnRBc0xpc3RJdGVtcyBh
bHJlYWR5IGRvZXMgdGhlIHJpZ2h0IHRoaW5nLgotICAgIGlmICghbV9tYXRjaFN0eWxlICYmICFl
bmNsb3NpbmdMaXN0KGluc2VydGlvblBvcy5jb250YWluZXJOb2RlKCkpICYmIGlzU3R5bGVTcGFu
KGZyYWdtZW50LmZpcnN0Q2hpbGQoKSkpIHsKKyAgICBpZiAoIW1fbWF0Y2hTdHlsZSAmJiAhZW5j
bG9zaW5nTGlzdChpbnNlcnRpb25Qb3MuY29udGFpbmVyTm9kZSgpKSkgewogICAgICAgICBpZiAo
aW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKS0+aXNUZXh0Tm9kZSgpICYmIGluc2VydGlvblBv
cy5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSAmJiAhaW5zZXJ0aW9uUG9zLmF0TGFzdEVkaXRpbmdQ
b3NpdGlvbkZvck5vZGUoKSkgewotICAgICAgICAgICAgc3BsaXRUZXh0Tm9kZUNvbnRhaW5pbmdF
bGVtZW50KGluc2VydGlvblBvcy5jb250YWluZXJUZXh0KCksIGluc2VydGlvblBvcy5vZmZzZXRJ
bkNvbnRhaW5lck5vZGUoKSk7CisgICAgICAgICAgICBzcGxpdFRleHROb2RlKGluc2VydGlvblBv
cy5jb250YWluZXJUZXh0KCksIGluc2VydGlvblBvcy5vZmZzZXRJbkNvbnRhaW5lck5vZGUoKSk7
CiAgICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBmaXJzdFBvc2l0aW9uSW5Ob2RlKGluc2VydGlv
blBvcy5jb250YWluZXJOb2RlKCkpOwogICAgICAgICB9CiAKICAgICAgICAgLy8gRklYTUU6IGlz
SW5saW5lTm9kZVdpdGhTdHlsZSBkb2VzIG5vdCBjaGVjayBlZGl0YWJpbGl0eS4KLSAgICAgICAg
aWYgKFJlZlB0cjxOb2RlPiBub2RlVG9TcGxpdFRvID0gaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5
cGUoaW5zZXJ0aW9uUG9zLCBpc0lubGluZU5vZGVXaXRoU3R5bGUpKSB7Ci0gICAgICAgICAgICBp
ZiAoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKSAhPSBub2RlVG9TcGxpdFRvKSB7Ci0gICAg
ICAgICAgICAgICAgbm9kZVRvU3BsaXRUbyA9IHNwbGl0VHJlZVRvTm9kZShpbnNlcnRpb25Qb3Mu
YW5jaG9yTm9kZSgpLCBub2RlVG9TcGxpdFRvLmdldCgpLCB0cnVlKS5nZXQoKTsKKyAgICAgICAg
aWYgKFJlZlB0cjxOb2RlPiBub2RlVG9TcGxpdFRvID0gaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5
cGUoaW5zZXJ0aW9uUG9zLCBpc0lubGluZU5vZGVXaXRoU3R5bGUsCisgICAgICAgICAgICBDYW5u
b3RDcm9zc0VkaXRpbmdCb3VuZGFyeSwgZW5jbG9zaW5nQmxvY2soaW5zZXJ0aW9uUG9zLmNvbnRh
aW5lck5vZGUoKSkpKSB7CisgICAgICAgICAgICBpZiAoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5v
ZGUoKSAhPSBub2RlVG9TcGxpdFRvLT5wYXJlbnROb2RlKCkpIHsKKyAgICAgICAgICAgICAgICBu
b2RlVG9TcGxpdFRvID0gc3BsaXRUcmVlVG9Ob2RlKGluc2VydGlvblBvcy5hbmNob3JOb2RlKCks
IG5vZGVUb1NwbGl0VG8tPnBhcmVudE5vZGUoKSkuZ2V0KCk7CiAgICAgICAgICAgICAgICAgaW5z
ZXJ0aW9uUG9zID0gcG9zaXRpb25JblBhcmVudEJlZm9yZU5vZGUobm9kZVRvU3BsaXRUby5nZXQo
KSk7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTEwMDgsOSArODk3LDYgQEAgdm9pZCBS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAgICAgCiAgICAgcmVtb3ZlUmVkdW5k
YW50U3R5bGVzQW5kS2VlcFN0eWxlU3BhbklubGluZSgpOwogICAgIAotICAgIGlmICghaGFuZGxl
ZFN0eWxlU3BhbnMpCi0gICAgICAgIGhhbmRsZVN0eWxlU3BhbnMoKTsKLSAgICAKICAgICAvLyBN
dXRhdGlvbiBldmVudHMgKGJ1ZyAyMDE2MSkgbWF5IGhhdmUgYWxyZWFkeSByZW1vdmVkIHRoZSBp
bnNlcnRlZCBjb250ZW50CiAgICAgaWYgKCFtX2ZpcnN0Tm9kZUluc2VydGVkIHx8ICFtX2ZpcnN0
Tm9kZUluc2VydGVkLT5pbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgJKHJldmlz
aW9uIDkyNTQyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5oCSh3b3JraW5nIGNvcHkpCkBAIC03OCw4ICs3OCw2IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCByZW1vdmVVbnJlbmRlcmVkVGV4dE5vZGVzQXRFbmRzKCk7CiAgICAgCiAgICAgdm9pZCByZW1v
dmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKCk7Ci0gICAgdm9pZCBoYW5k
bGVTdHlsZVNwYW5zKCk7Ci0gICAgdm9pZCBjb3B5U3R5bGVUb0NoaWxkcmVuKE5vZGUqIHBhcmVu
dE5vZGUsIGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBwYXJlbnRTdHlsZSk7CiAg
ICAgdm9pZCBoYW5kbGVQYXN0ZUFzUXVvdGF0aW9uTm9kZSgpOwogICAgIAogICAgIHZpcnR1YWwg
dm9pZCByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuKE5vZGUqKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCShyZXZpc2lvbiA5MjU0MikKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02MDcsMTEg
KzYwNywxMSBAQCBOb2RlKiBlbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBvc2l0aW9uCiAgICAg
cmV0dXJuIDA7CiB9CiAKLU5vZGUqIGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0IFBv
c2l0aW9uJiBwLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25zdCBOb2RlKiksIEVkaXRpbmdCb3Vu
ZGFyeUNyb3NzaW5nUnVsZSBydWxlKQorTm9kZSogaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUo
Y29uc3QgUG9zaXRpb24mIHAsIGJvb2wgKCpub2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUqKSwgRWRp
dGluZ0JvdW5kYXJ5Q3Jvc3NpbmdSdWxlIHJ1bGUsIE5vZGUqIHN0YXlXaXRoaW4pCiB7CiAgICAg
Tm9kZSogaGlnaGVzdCA9IDA7CiAgICAgTm9kZSogcm9vdCA9IHJ1bGUgPT0gQ2Fubm90Q3Jvc3NF
ZGl0aW5nQm91bmRhcnkgPyBoaWdoZXN0RWRpdGFibGVSb290KHApIDogMDsKLSAgICBmb3IgKE5v
ZGUqIG4gPSBwLmNvbnRhaW5lck5vZGUoKTsgbjsgbiA9IG4tPnBhcmVudE5vZGUoKSkgeworICAg
IGZvciAoTm9kZSogbiA9IHAuY29udGFpbmVyTm9kZSgpOyBuICYmIG4gIT0gc3RheVdpdGhpbjsg
biA9IG4tPnBhcmVudE5vZGUoKSkgewogICAgICAgICBpZiAocm9vdCAmJiAhbi0+cmVuZGVyZXJJ
c0VkaXRhYmxlKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgaWYgKG5vZGVJc09m
VHlwZShuKSkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgJKHJldmlzaW9u
IDkyNTQyKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5oCSh3b3JraW5n
IGNvcHkpCkBAIC01NSw3ICs1NSw3IEBAIGNsYXNzIFZpc2libGVTZWxlY3Rpb247CiAKIE5vZGUq
IGhpZ2hlc3RBbmNlc3RvcihOb2RlKik7CiBOb2RlKiBoaWdoZXN0RWRpdGFibGVSb290KGNvbnN0
IFBvc2l0aW9uJik7Ci1Ob2RlKiBoaWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3Np
dGlvbiYsIGJvb2wgKCpub2RlSXNPZlR5cGUpKGNvbnN0IE5vZGUqKSwgRWRpdGluZ0JvdW5kYXJ5
Q3Jvc3NpbmdSdWxlID0gQ2Fubm90Q3Jvc3NFZGl0aW5nQm91bmRhcnkpOworTm9kZSogaGlnaGVz
dEVuY2xvc2luZ05vZGVPZlR5cGUoY29uc3QgUG9zaXRpb24mLCBib29sICgqbm9kZUlzT2ZUeXBl
KShjb25zdCBOb2RlKiksIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3Nz
RWRpdGluZ0JvdW5kYXJ5LCBOb2RlKiBzdGF5V2l0aGluID0gMCk7CiBOb2RlKiBsb3dlc3RFZGl0
YWJsZUFuY2VzdG9yKE5vZGUqKTsgICAKIAogTm9kZSogZW5jbG9zaW5nQmxvY2soTm9kZSosIEVk
aXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHJldmlzaW9uIDkyNTQyKQorKysgU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjAsMTIg
KzEyMCw3IEBAIGNsYXNzIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yIDogcHVibGljIE0KIHB1Ymxp
YzoKICAgICBlbnVtIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSB7IERvZXNGdWxseVNlbGVjdE5vZGUs
IERvZXNOb3RGdWxseVNlbGVjdE5vZGUgfTsKIAotICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9y
KFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzIHNob3VsZFJlc29sdmVVUkxzLCBF
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBzaG91bGRBbm5vdGF0ZSwgY29uc3QgUmFuZ2UqIHJhbmdl
KQotICAgIDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCByYW5n
ZSkKLSAgICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5ub3RhdGUpCi0gICAgewotICAgIH0K
LQorICAgIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJz
b2x1dGVVUkxzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSwgY29uc3QgUmFuZ2UqLCBOb2RlKiBo
aWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID0gMCk7CiAgICAgTm9kZSogc2VyaWFsaXplTm9kZXMo
Tm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5k
U3RyaW5nKGNvbnN0IFN0cmluZyYgcykgeyByZXR1cm4gTWFya3VwQWNjdW11bGF0b3I6OmFwcGVu
ZFN0cmluZyhzKTsgfQogICAgIHZvaWQgd3JhcFdpdGhOb2RlKE5vZGUqLCBib29sIGNvbnZlcnRC
bG9ja3NUb0lubGluZXMgPSBmYWxzZSwgUmFuZ2VGdWxseVNlbGVjdHNOb2RlID0gRG9lc0Z1bGx5
U2VsZWN0Tm9kZSk7CkBAIC0xMzMsMTggKzEyOCwzNyBAQCBwdWJsaWM6CiAgICAgU3RyaW5nIHRh
a2VSZXN1bHRzKCk7CiAKIHByaXZhdGU6CisgICAgdm9pZCBhcHBlbmRTdHlsZU5vZGVPcGVuVGFn
KFZlY3RvcjxVQ2hhcj4mLCBDU1NTdHlsZURlY2xhcmF0aW9uKiwgRG9jdW1lbnQqLCBib29sIGlz
QmxvY2sgPSBmYWxzZSk7CisgICAgY29uc3QgU3RyaW5nIHN0eWxlTm9kZUNsb3NlVGFnKGJvb2wg
aXNCbG9jayA9IGZhbHNlKTsKICAgICB2aXJ0dWFsIHZvaWQgYXBwZW5kVGV4dChWZWN0b3I8VUNo
YXI+JiBvdXQsIFRleHQqKTsKICAgICBTdHJpbmcgcmVuZGVyZWRUZXh0KGNvbnN0IE5vZGUqLCBj
b25zdCBSYW5nZSopOwogICAgIFN0cmluZyBzdHJpbmdWYWx1ZUZvclJhbmdlKGNvbnN0IE5vZGUq
LCBjb25zdCBSYW5nZSopOwogICAgIHZvaWQgYXBwZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBv
dXQsIEVsZW1lbnQqIGVsZW1lbnQsIGJvb2wgYWRkRGlzcGxheUlubGluZSwgUmFuZ2VGdWxseVNl
bGVjdHNOb2RlKTsKICAgICB2b2lkIGFwcGVuZEVsZW1lbnQoVmVjdG9yPFVDaGFyPiYgb3V0LCBF
bGVtZW50KiBlbGVtZW50LCBOYW1lc3BhY2VzKikgeyBhcHBlbmRFbGVtZW50KG91dCwgZWxlbWVu
dCwgZmFsc2UsIERvZXNGdWxseVNlbGVjdE5vZGUpOyB9CiAKKyAgICBOb2RlKiB0cmF2ZXJzZU5v
ZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQsIGJvb2wg
c2hvdWxkRW1pdCk7CisKICAgICBib29sIHNob3VsZEFubm90YXRlKCkgeyByZXR1cm4gbV9zaG91
bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlOyB9CisgICAgYm9vbCBzaG91bGRB
cHBseVdyYXBwaW5nU3R5bGUoTm9kZSogbm9kZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgJiYgbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxp
emVkLT5wYXJlbnROb2RlKCkgPT0gbm9kZS0+cGFyZW50Tm9kZSgpCisgICAgICAgICAgICAmJiBt
X3dyYXBwaW5nU3R5bGUgJiYgbV93cmFwcGluZ1N0eWxlLT5zdHlsZSgpOworICAgIH0KIAogICAg
IFZlY3RvcjxTdHJpbmc+IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXA7CiAgICAgY29uc3QgRUFu
bm90YXRlRm9ySW50ZXJjaGFuZ2UgbV9zaG91bGRBbm5vdGF0ZTsKKyAgICBOb2RlKiBtX2hpZ2hl
c3ROb2RlVG9CZVNlcmlhbGl6ZWQ7CisgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbV93cmFwcGlu
Z1N0eWxlOwogfTsKIAoraW5saW5lIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcyBzaG91bGRS
ZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsCisgICAg
Y29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBoaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkKQorICAg
IDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNob3VsZFJlc29sdmVVUkxzLCByYW5nZSkKKyAg
ICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5ub3RhdGUpCisgICAgLCBtX2hpZ2hlc3ROb2Rl
VG9CZVNlcmlhbGl6ZWQoaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCkKK3sKK30KKwogdm9pZCBT
dHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhOb2RlKE5vZGUqIG5vZGUsIGJvb2wgY29u
dmVydEJsb2Nrc1RvSW5saW5lcywgUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHJhbmdlRnVsbHlTZWxl
Y3RzTm9kZSkKIHsKICAgICBWZWN0b3I8VUNoYXI+IG1hcmt1cDsKQEAgLTE2MCwyMCArMTc0LDMw
IEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OndyYXBXaXRoTm8KIAogdm9pZCBTdHls
ZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhTdHlsZU5vZGUoQ1NTU3R5bGVEZWNsYXJhdGlv
biogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpc0Jsb2NrKQogeworICAgIFZlY3Rv
cjxVQ2hhcj4gb3BlblRhZzsKKyAgICBhcHBlbmRTdHlsZU5vZGVPcGVuVGFnKG9wZW5UYWcsIHN0
eWxlLCBkb2N1bWVudCwgaXNCbG9jayk7CisgICAgbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cC5h
cHBlbmQoU3RyaW5nOjphZG9wdChvcGVuVGFnKSk7CisgICAgYXBwZW5kU3RyaW5nKHN0eWxlTm9k
ZUNsb3NlVGFnKGlzQmxvY2spKTsKK30KKwordm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6
YXBwZW5kU3R5bGVOb2RlT3BlblRhZyhWZWN0b3I8VUNoYXI+JiBvdXQsIENTU1N0eWxlRGVjbGFy
YXRpb24qIHN0eWxlLCBEb2N1bWVudCogZG9jdW1lbnQsIGJvb2wgaXNCbG9jaykKK3sKICAgICAv
LyBBbGwgdGV4dC1kZWNvcmF0aW9uLXJlbGF0ZWQgZWxlbWVudHMgc2hvdWxkIGhhdmUgYmVlbiB0
cmVhdGVkIGFzIHNwZWNpYWwgYW5jZXN0b3JzCiAgICAgLy8gSWYgd2UgZXZlciBoaXQgdGhpcyBB
U1NFUlQsIHdlIHNob3VsZCBleHBvcnQgU3R5bGVDaGFuZ2UgaW4gQXBwbHlTdHlsZUNvbW1hbmQg
YW5kIHVzZSBpdCBoZXJlCiAgICAgQVNTRVJUKHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUo
c3R5bGUsIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pICYmIHByb3BlcnR5TWlzc2luZ09yRXF1
YWxUb05vbmUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3Qp
KTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2U3R5bGUsICgiPGRp
diBzdHlsZT1cIiIpKTsKLSAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2
Q2xvc2UsICgiPC9kaXY+IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBzdHlsZVNwYW5PcGVuLCAoIjxzcGFuIGNsYXNzPVwiIiBBcHBsZVN0eWxlU3BhbkNsYXNzICJc
IiBzdHlsZT1cIiIpKTsKKyAgICBhcHBlbmQob3V0LCBpc0Jsb2NrID8gZGl2U3R5bGUgOiBzdHls
ZVNwYW5PcGVuKTsKKyAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQsIHN0eWxlLT5jc3NUZXh0
KCksIGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKKyAgICBvdXQuYXBwZW5kKCdcIicpOwor
ICAgIG91dC5hcHBlbmQoJz4nKTsKK30KKworY29uc3QgU3RyaW5nIFN0eWxlZE1hcmt1cEFjY3Vt
dWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlzQmxvY2spCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGRpdkNsb3NlLCAoIjwvZGl2PiIpKTsKICAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5bGVTcGFuQ2xvc2UsICgiPC9zcGFuPiIp
KTsKLSAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7Ci0gICAgYXBwZW5kKG9wZW5UYWcsIGlzQmxv
Y2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOwotICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVl
KG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsK
LSAgICBvcGVuVGFnLmFwcGVuZCgnXCInKTsKLSAgICBvcGVuVGFnLmFwcGVuZCgnPicpOwotICAg
IG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5kKFN0cmluZzo6YWRvcHQob3BlblRhZykp
OwotICAgIGFwcGVuZFN0cmluZyhpc0Jsb2NrID8gZGl2Q2xvc2UgOiBzdHlsZVNwYW5DbG9zZSk7
CisgICAgcmV0dXJuIGlzQmxvY2sgPyBkaXZDbG9zZSA6IHN0eWxlU3BhbkNsb3NlOwogfQogCiBT
dHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRha2VSZXN1bHRzKCkKQEAgLTE5MSwxNyAr
MjE1LDM0IEBAIFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dGFrZVJlc3UKIH0KIAog
dm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChWZWN0b3I8VUNoYXI+JiBv
dXQsIFRleHQqIHRleHQpCi17Ci0gICAgaWYgKCFzaG91bGRBbm5vdGF0ZSgpIHx8ICh0ZXh0LT5w
YXJlbnRFbGVtZW50KCkgJiYgdGV4dC0+cGFyZW50RWxlbWVudCgpLT50YWdRTmFtZSgpID09IHRl
eHRhcmVhVGFnKSkgeworeyAgICAKKyAgICBib29sIHBhcmVudElzVGV4dGFyZWEgPSB0ZXh0LT5w
YXJlbnRFbGVtZW50KCkgJiYgdGV4dC0+cGFyZW50RWxlbWVudCgpLT50YWdRTmFtZSgpID09IHRl
eHRhcmVhVGFnOworICAgIGJvb2wgd3JhcHBpbmdTcGFuID0gc2hvdWxkQXBwbHlXcmFwcGluZ1N0
eWxlKHRleHQpICYmICFwYXJlbnRJc1RleHRhcmVhOworICAgIGlmICh3cmFwcGluZ1NwYW4pIHsK
KyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gd3JhcHBpbmdTdHlsZSA9IG1fd3JhcHBpbmdT
dHlsZS0+Y29weSgpOworICAgICAgICAvLyA8cmRhcjovL3Byb2JsZW0vNTM3MTUzNj4KKyAgICAg
ICAgLy8gTWFrZSBzdXJlIHNwYW5zIGFyZSBpbmxpbmUgc3R5bGUgaW4gcGFzdGUgc2lkZSBlLmcu
IHNwYW4geyBkaXNwbGF5OiBibG9jayB9CisgICAgICAgIHdyYXBwaW5nU3R5bGUtPmZvcmNlSW5s
aW5lKCk7CisgICAgICAgIC8vIEZJWE1FOiBzaG91bGQgdGhpcyBiZSBpbmNsdWRlZCBpbiBmb3Jj
ZUlubGluZT8KKyAgICAgICAgd3JhcHBpbmdTdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NT
UHJvcGVydHlGbG9hdCwgQ1NTVmFsdWVOb25lKTsKKworICAgICAgICBWZWN0b3I8VUNoYXI+IG9w
ZW5UYWc7CisgICAgICAgIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcob3BlblRhZywgd3JhcHBpbmdT
dHlsZS0+c3R5bGUoKSwgdGV4dC0+ZG9jdW1lbnQoKSk7CisgICAgICAgIGFwcGVuZChvdXQsIFN0
cmluZzo6YWRvcHQob3BlblRhZykpOworICAgIH0KKworICAgIGlmICghc2hvdWxkQW5ub3RhdGUo
KSB8fCBwYXJlbnRJc1RleHRhcmVhKQogICAgICAgICBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5k
VGV4dChvdXQsIHRleHQpOwotICAgICAgICByZXR1cm47CisgICAgZWxzZSB7CisgICAgICAgIGJv
b2wgdXNlUmVuZGVyZWRUZXh0ID0gIWVuY2xvc2luZ05vZGVXaXRoVGFnKGZpcnN0UG9zaXRpb25J
bk5vZGUodGV4dCksIHNlbGVjdFRhZyk7CisgICAgICAgIFN0cmluZyBjb250ZW50ID0gdXNlUmVu
ZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRleHQsIG1fcmFuZ2UpIDogc3RyaW5nVmFsdWVGb3JS
YW5nZSh0ZXh0LCBtX3JhbmdlKTsKKyAgICAgICAgVmVjdG9yPFVDaGFyPiBidWZmZXI7CisgICAg
ICAgIGFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyhidWZmZXIsIGNvbnRlbnQuY2hh
cmFjdGVycygpLCBjb250ZW50Lmxlbmd0aCgpLCBFbnRpdHlNYXNrSW5QQ0RBVEEpOworICAgICAg
ICBhcHBlbmQob3V0LCBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KFN0cmluZzo6
YWRvcHQoYnVmZmVyKSwgdGV4dCkpOwogICAgIH0KIAotICAgIGJvb2wgdXNlUmVuZGVyZWRUZXh0
ID0gIWVuY2xvc2luZ05vZGVXaXRoVGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dCksIHNlbGVj
dFRhZyk7Ci0gICAgU3RyaW5nIGNvbnRlbnQgPSB1c2VSZW5kZXJlZFRleHQgPyByZW5kZXJlZFRl
eHQodGV4dCwgbV9yYW5nZSkgOiBzdHJpbmdWYWx1ZUZvclJhbmdlKHRleHQsIG1fcmFuZ2UpOwot
ICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOwotICAgIGFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdF
bnRpdGllcyhidWZmZXIsIGNvbnRlbnQuY2hhcmFjdGVycygpLCBjb250ZW50Lmxlbmd0aCgpLCBF
bnRpdHlNYXNrSW5QQ0RBVEEpOwotICAgIGFwcGVuZChvdXQsIGNvbnZlcnRIVE1MVGV4dFRvSW50
ZXJjaGFuZ2VGb3JtYXQoU3RyaW5nOjphZG9wdChidWZmZXIpLCB0ZXh0KSk7CisgICAgaWYgKHdy
YXBwaW5nU3BhbikKKyAgICAgICAgYXBwZW5kKG91dCwgc3R5bGVOb2RlQ2xvc2VUYWcoKSk7CiB9
CiAgICAgCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnJlbmRlcmVkVGV4dChjb25z
dCBOb2RlKiBub2RlLCBjb25zdCBSYW5nZSogcmFuZ2UpCkBAIC0yNDUsMzAgKzI4Niw0NiBAQCB2
b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtCiAKICAgICBOYW1lZE5vZGVN
YXAqIGF0dHJpYnV0ZXMgPSBlbGVtZW50LT5hdHRyaWJ1dGVzKCk7CiAgICAgdW5zaWduZWQgbGVu
Z3RoID0gYXR0cmlidXRlcy0+bGVuZ3RoKCk7CisgICAgYm9vbCBzaG91bGRBbm5vdGF0ZU9yRm9y
Y2VJbmxpbmUgPSBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkg
fHwgYWRkRGlzcGxheUlubGluZSk7CisgICAgYm9vbCBzaG91bGRPdmVycmlkZVN0eWxlQXR0ciA9
IHNob3VsZEFubm90YXRlT3JGb3JjZUlubGluZSB8fCBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUo
ZWxlbWVudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykg
ewogICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0
ZW0oaSk7CiAgICAgICAgIC8vIFdlJ2xsIGhhbmRsZSB0aGUgc3R5bGUgYXR0cmlidXRlIHNlcGFy
YXRlbHksIGJlbG93LgotICAgICAgICBpZiAoYXR0cmlidXRlLT5uYW1lKCkgPT0gc3R5bGVBdHRy
ICYmIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBhZGRE
aXNwbGF5SW5saW5lKSkKKyAgICAgICAgaWYgKGF0dHJpYnV0ZS0+bmFtZSgpID09IHN0eWxlQXR0
ciAmJiBzaG91bGRPdmVycmlkZVN0eWxlQXR0cikKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICBhcHBlbmRBdHRyaWJ1dGUob3V0LCBlbGVtZW50LCAqYXR0cmlidXRlLCAwKTsKICAgICB9
CiAKLSAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgp
IHx8IGFkZERpc3BsYXlJbmxpbmUpKSB7Ci0gICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0
eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUodG9IVE1MRWxlbWVudChlbGVtZW50KS0+Z2V0SW5s
aW5lU3R5bGVEZWNsKCkpOwotICAgICAgICBpZiAoc2hvdWxkQW5ub3RhdGUoKSkKLSAgICAgICAg
ICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbih0b0hUTUxFbGVt
ZW50KGVsZW1lbnQpKTsKLSAgICAgICAgaWYgKGFkZERpc3BsYXlJbmxpbmUpCi0gICAgICAgICAg
ICBzdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1
ZUlubGluZSwgdHJ1ZSk7Ci0KLSAgICAgICAgLy8gSWYgdGhlIG5vZGUgaXMgbm90IGZ1bGx5IHNl
bGVjdGVkIGJ5IHRoZSByYW5nZSwgdGhlbiB3ZSBkb24ndCB3YW50IHRvIGtlZXAgc3R5bGVzIHRo
YXQgYWZmZWN0IGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG5vZGVzIGFyb3VuZCBpdAotICAgICAg
ICAvLyBvbmx5IHRoZSBvbmVzIHRoYXQgYWZmZWN0IGl0IGFuZCB0aGUgbm9kZXMgd2l0aGluIGl0
LgotICAgICAgICBpZiAocmFuZ2VGdWxseVNlbGVjdHNOb2RlID09IERvZXNOb3RGdWxseVNlbGVj
dE5vZGUpCi0gICAgICAgICAgICBzdHlsZS0+c3R5bGUoKS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJv
cGVydHlGbG9hdCk7CisgICAgaWYgKHNob3VsZE92ZXJyaWRlU3R5bGVBdHRyKSB7CisgICAgICAg
IFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxlOwogCi0gICAgICAgIGlmICghc3R5
bGUtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoc2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxlKGVs
ZW1lbnQpKSB7CisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZSA9IG1fd3JhcHBpbmdTdHlsZS0+
Y29weSgpOworICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVByb3BlcnRpZXNJbkVs
ZW1lbnREZWZhdWx0U3R5bGUoZWxlbWVudCk7CisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+
cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9kZShlbGVtZW50KTsKKyAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRl
KCk7CisKKyAgICAgICAgaWYgKGVsZW1lbnQtPmlzU3R5bGVkRWxlbWVudCgpICYmIHN0YXRpY19j
YXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+aW5saW5lU3R5bGVEZWNsKCkpCisgICAgICAg
ICAgICBuZXdJbmxpbmVTdHlsZS0+b3ZlcnJpZGVXaXRoU3R5bGUoc3RhdGljX2Nhc3Q8U3R5bGVk
RWxlbWVudCo+KGVsZW1lbnQpLT5pbmxpbmVTdHlsZURlY2woKSk7CisKKyAgICAgICAgaWYgKHNo
b3VsZEFubm90YXRlT3JGb3JjZUlubGluZSkgeworICAgICAgICAgICAgaWYgKHNob3VsZEFubm90
YXRlKCkpCisgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPm1lcmdlU3R5bGVGcm9tUnVs
ZXNGb3JTZXJpYWxpemF0aW9uKHRvSFRNTEVsZW1lbnQoZWxlbWVudCkpOworCisgICAgICAgICAg
ICBpZiAoYWRkRGlzcGxheUlubGluZSkKKyAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+
Zm9yY2VJbmxpbmUoKTsKKworICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUgaXMgbm90IGZ1bGx5
IHNlbGVjdGVkIGJ5IHRoZSByYW5nZSwgdGhlbiB3ZSBkb24ndCB3YW50IHRvIGtlZXAgc3R5bGVz
IHRoYXQgYWZmZWN0IGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG5vZGVzIGFyb3VuZCBpdAorICAg
ICAgICAgICAgLy8gb25seSB0aGUgb25lcyB0aGF0IGFmZmVjdCBpdCBhbmQgdGhlIG5vZGVzIHdp
dGhpbiBpdC4KKyAgICAgICAgICAgIGlmIChyYW5nZUZ1bGx5U2VsZWN0c05vZGUgPT0gRG9lc05v
dEZ1bGx5U2VsZWN0Tm9kZSAmJiBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKSkKKyAgICAgICAgICAg
ICAgICBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlG
bG9hdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW5ld0lubGluZVN0eWxlLT5pc0VtcHR5
KCkpIHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHls
ZVByZWZpeCwgKCIgc3R5bGU9XCIiKSk7CiAgICAgICAgICAgICBhcHBlbmQob3V0LCBzdHlsZVBy
ZWZpeCk7Ci0gICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQsIHN0eWxlLT5zdHls
ZSgpLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKKyAgICAgICAgICAgIGFwcGVuZEF0dHJp
YnV0ZVZhbHVlKG91dCwgbmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSwgZG9jdW1l
bnRJc0hUTUwpOwogICAgICAgICAgICAgb3V0LmFwcGVuZCgnXCInKTsKICAgICAgICAgfQogICAg
IH0KQEAgLTI3OCw2ICszMzUsMjkgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBw
ZW5kRWxlbQogCiBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c2VyaWFsaXplTm9kZXMo
Tm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kKQogeworICAgIGlmICghbV9oaWdoZXN0Tm9k
ZVRvQmVTZXJpYWxpemVkKSB7CisgICAgICAgIE5vZGUqIGxhc3RDbG9zZWQgPSB0cmF2ZXJzZU5v
ZGVzRm9yU2VyaWFsaXphdGlvbihzdGFydE5vZGUsIHBhc3RFbmQsIGZhbHNlKTsKKyAgICAgICAg
bV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID0gbGFzdENsb3NlZDsKKyAgICB9CisgICAgCisg
ICAgTm9kZSogcGFyZW50T2ZIaWdoZXN0Tm9kZSA9IG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXpl
ZCA/IG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZC0+cGFyZW50Tm9kZSgpIDogMDsKKyAgICBp
ZiAocGFyZW50T2ZIaWdoZXN0Tm9kZSkgeworICAgICAgICBtX3dyYXBwaW5nU3R5bGUgPSBFZGl0
aW5nU3R5bGU6OmNyZWF0ZShwYXJlbnRPZkhpZ2hlc3ROb2RlLCBFZGl0aW5nU3R5bGU6OkVkaXRp
bmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk7CisKKyAg
ICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRlIHNob3VsZCBv
bmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLAorICAgICAgICAvLyB0byBoZWxw
IHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1c2VyIGhh
cyBhcHBsaWVkLgorICAgICAgICAvLyBUaGlzIGhlbHBzIHVzIGdldCB0aGUgY29sb3Igb2YgY29u
dGVudCBwYXN0ZWQgaW50byBibG9ja3F1b3RlcyByaWdodC4KKyAgICAgICAgbV93cmFwcGluZ1N0
eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3Np
dGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE9mSGlnaGVzdE5vZGUpLCBpc01haWxCbG9ja3F1b3Rl
LCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpOworCisgICAgICAgIC8vIENhbGwgY29sbGFwc2VU
ZXh0RGVjb3JhdGlvblByb3BlcnRpZXMgZmlyc3Qgb3Igb3RoZXJ3aXNlIGl0J2xsIGNvcHkgdGhl
IHZhbHVlIG92ZXIgZnJvbSBpbi1lZmZlY3QgdG8gdGV4dC1kZWNvcmF0aW9ucy4KKyAgICAgICAg
bV93cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcygpOworICAg
IH0KKworICAgIHJldHVybiB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihzdGFydE5vZGUs
IHBhc3RFbmQsIHRydWUpOworfQorCitOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJh
dmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5k
LCBib29sIHNob3VsZEVtaXQpCit7CiAgICAgVmVjdG9yPE5vZGUqPiBhbmNlc3RvcnNUb0Nsb3Nl
OwogICAgIE5vZGUqIG5leHQ7CiAgICAgTm9kZSogbGFzdENsb3NlZCA9IDA7CkBAIC0zMDQsMTEg
KzM4NCwxMyBAQCBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6c2VyaWFsaXplCiAgICAg
ICAgICAgICAgICAgbmV4dCA9IHBhc3RFbmQ7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAg
ICAvLyBBZGQgdGhlIG5vZGUgdG8gdGhlIG1hcmt1cCBpZiB3ZSdyZSBub3Qgc2tpcHBpbmcgdGhl
IGRlc2NlbmRhbnRzCi0gICAgICAgICAgICBhcHBlbmRTdGFydFRhZyhuKTsKKyAgICAgICAgICAg
IGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgIGFwcGVuZFN0YXJ0VGFnKG4pOwogCiAg
ICAgICAgICAgICAvLyBJZiBub2RlIGhhcyBubyBjaGlsZHJlbiwgY2xvc2UgdGhlIHRhZyBub3cu
CiAgICAgICAgICAgICBpZiAoIW4tPmNoaWxkTm9kZUNvdW50KCkpIHsKLSAgICAgICAgICAgICAg
ICBhcHBlbmRFbmRUYWcobik7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhuKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xv
c2VkID0gbjsKICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgb3BlbmVkVGFn
ID0gdHJ1ZTsKQEAgLTMyNSw3ICs0MDcsOCBAQCBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6c2VyaWFsaXplCiAgICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFzdEVuZCAmJiBuZXh0
LT5pc0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgICAgIC8vIE5vdCBhdCB0aGUgZW5kIG9mIHRoZSByYW5nZSwgY2xvc2UgYW5j
ZXN0b3JzIHVwIHRvIHNpYmxpbmcgb2YgbmV4dCBub2RlLgotICAgICAgICAgICAgICAgIGFwcGVu
ZEVuZFRhZyhhbmNlc3Rvcik7CisgICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAg
ICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhhbmNlc3Rvcik7CiAgICAgICAgICAgICAgICAg
bGFzdENsb3NlZCA9IGFuY2VzdG9yOwogICAgICAgICAgICAgICAgIGFuY2VzdG9yc1RvQ2xvc2Uu
cmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgfQpAQCAtMzQwLDcgKzQyMyw4IEBAIE5vZGUqIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemUKICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAgICAgICAgICAgICAvLyBvciBiKSBhbmNlc3RvcnMgdGhhdCB3
ZSBuZXZlciBlbmNvdW50ZXJlZCBkdXJpbmcgYSBwcmUtb3JkZXIgdHJhdmVyc2FsIHN0YXJ0aW5n
IGF0IHN0YXJ0Tm9kZToKICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKHN0YXJ0Tm9kZS0+aXNE
ZXNjZW5kYW50T2YocGFyZW50KSk7Ci0gICAgICAgICAgICAgICAgICAgIHdyYXBXaXRoTm9kZShw
YXJlbnQpOworICAgICAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHdyYXBXaXRoTm9kZShwYXJlbnQpOwogICAgICAgICAgICAgICAgICAgICBs
YXN0Q2xvc2VkID0gcGFyZW50OwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAg
LTUxMyw3ICs1OTcsMTMgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2Us
IAogCiAgICAgZG9jdW1lbnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygp
OwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3Vs
ZFJlc29sdmVVUkxzLCBzaG91bGRBbm5vdGF0ZSwgdXBkYXRlZFJhbmdlLmdldCgpKTsKKyAgICBO
b2RlKiBib2R5ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21t
b25BbmNlc3RvciksIGJvZHlUYWcpOworICAgIE5vZGUqIGZ1bGx5U2VsZWN0ZWRSb290ID0gMDsK
KyAgICAvLyBGSVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90
IGp1c3QgdGhlIGJvZHkuCisgICAgaWYgKGJvZHkgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNl
bGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGJvZHkpLnRvTm9ybWFsaXplZFJh
bmdlKCkuZ2V0KCksIHJhbmdlKSkKKyAgICAgICAgZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5Owor
ICAgIE5vZGUqIHNwZWNpYWxDb21tb25BbmNlc3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1h
cmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCksIGZ1bGx5U2VsZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0
ZSk7CisgICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IgYWNjdW11bGF0b3Iobm9kZXMsIHNob3Vs
ZFJlc29sdmVVUkxzLCBzaG91bGRBbm5vdGF0ZSwgdXBkYXRlZFJhbmdlLmdldCgpLCBzcGVjaWFs
Q29tbW9uQW5jZXN0b3IpOwogICAgIE5vZGUqIHBhc3RFbmQgPSB1cGRhdGVkUmFuZ2UtPnBhc3RM
YXN0Tm9kZSgpOwogCiAgICAgTm9kZSogc3RhcnROb2RlID0gdXBkYXRlZFJhbmdlLT5maXJzdE5v
ZGUoKTsKQEAgLTUzOSwxNCArNjI5LDYgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5n
ZSogcmFuZ2UsIAogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9CiAKLSAgICBOb2RlKiBib2R5
ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZShjb21tb25BbmNlc3Rv
ciksIGJvZHlUYWcpOwotICAgIE5vZGUqIGZ1bGx5U2VsZWN0ZWRSb290ID0gMDsKLSAgICAvLyBG
SVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nrcywgbm90IGp1c3QgdGhl
IGJvZHkuCi0gICAgaWYgKGJvZHkgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbjo6
c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGJvZHkpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0
KCksIHJhbmdlKSkKLSAgICAgICAgZnVsbHlTZWxlY3RlZFJvb3QgPSBib2R5OwotCi0gICAgTm9k
ZSogc3BlY2lhbENvbW1vbkFuY2VzdG9yID0gaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKHVw
ZGF0ZWRSYW5nZS5nZXQoKSwgZnVsbHlTZWxlY3RlZFJvb3QsIHNob3VsZEFubm90YXRlKTsKLQog
ICAgIE5vZGUqIGxhc3RDbG9zZWQgPSBhY2N1bXVsYXRvci5zZXJpYWxpemVOb2RlcyhzdGFydE5v
ZGUsIHBhc3RFbmQpOwogCiAgICAgaWYgKHNwZWNpYWxDb21tb25BbmNlc3RvciAmJiBsYXN0Q2xv
c2VkKSB7CkBAIC01ODYsMjAgKzY2OCw2IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFu
Z2UqIHJhbmdlLCAKICAgICAgICAgfQogICAgIH0KIAotICAgIC8vIEFkZCBhIHdyYXBwZXIgc3Bh
biB3aXRoIHRoZSBzdHlsZXMgdGhhdCBhbGwgb2YgdGhlIG5vZGVzIGluIHRoZSBtYXJrdXAgaW5o
ZXJpdC4KLSAgICBDb250YWluZXJOb2RlKiBwYXJlbnRPZkxhc3RDbG9zZWQgPSBsYXN0Q2xvc2Vk
ID8gbGFzdENsb3NlZC0+cGFyZW50Tm9kZSgpIDogMDsKLSAgICBpZiAocGFyZW50T2ZMYXN0Q2xv
c2VkICYmIHBhcmVudE9mTGFzdENsb3NlZC0+cmVuZGVyZXIoKSkgewotICAgICAgICBSZWZQdHI8
RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBhcmVudE9mTGFzdENs
b3NlZCwgRWRpdGluZ1N0eWxlOjpFZGl0aW5nSW5oZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dy
b3VuZENvbG9ySW5FZmZlY3QpOwotCi0gICAgICAgIC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2tx
dW90ZXMgY29udHJpYnV0ZSBzaG91bGQgb25seSBiZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2tx
dW90ZSwgdG8gaGVscAotICAgICAgICAvLyB1cyBkaWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBm
cm9tIG9uZXMgdGhhdCB0aGUgdXNlciBoYXMgYXBwbGllZC4gIFRoaXMgaGVscHMgdXMKLSAgICAg
ICAgLy8gZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJp
Z2h0LgotICAgICAgICBzdHlsZS0+cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdOb2Rl
T2ZUeXBlKGZpcnN0UG9zaXRpb25Jbk5vZGUocGFyZW50T2ZMYXN0Q2xvc2VkKSwgaXNNYWlsQmxv
Y2txdW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKLQotICAgICAgICBpZiAoIXN0eWxl
LT5pc0VtcHR5KCkpCi0gICAgICAgICAgICBhY2N1bXVsYXRvci53cmFwV2l0aFN0eWxlTm9kZShz
dHlsZS0+c3R5bGUoKSwgZG9jdW1lbnQpOwotICAgIH0KLQogICAgIC8vIEZJWE1FOiBUaGUgaW50
ZXJjaGFuZ2UgbmV3bGluZSBzaG91bGQgYmUgcGxhY2VkIGluIHRoZSBibG9jayB0aGF0IGl0J3Mg
aW4sIG5vdCBhZnRlciBhbGwgb2YgdGhlIGNvbnRlbnQsIHVuY29uZGl0aW9uYWxseS4KICAgICBp
ZiAoc2hvdWxkQW5ub3RhdGUgPT0gQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSAmJiBuZWVkSW50ZXJj
aGFuZ2VOZXdsaW5lQWZ0ZXIodmlzaWJsZUVuZC5wcmV2aW91cygpKSkKICAgICAgICAgYWNjdW11
bGF0b3IuYXBwZW5kU3RyaW5nKGludGVyY2hhbmdlTmV3bGluZVN0cmluZyk7CkluZGV4OiBMYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiA5MjU2NikKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDM3IEBACisyMDExLTA4LTA2ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQu
b3JnPgorCisgICAgICAgIENvcHlpbmcgY2FuIHJlc3VsdCBpbiBzcGFuIGFyb3VuZCBibG9jayBl
bGVtZW50cyBvbiB0aGUgY2xpcGJvYXJkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0zNDU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggb3ZlcmhhdWxlZCB0aGUgd2F5IHdlIHByZXNlcnZl
IHN0eWxlcyB3aGVuIGNvcHlpbmcgYW5kIHBhc3RpbmcgSFRNTCBjb250ZW50cy4KKworICAgICAg
ICAqIGVkaXRpbmcvZGVsZXRpbmcvZGVsZXRpbmctbGluZS1icmVhay1wcmVzZXJ2ZXMtdW5kZXJs
aW5lLWNvbG9yLWV4cGVjdGVkLnR4dDogU3R5bGUgYXR0cmlidXRlIG5vdworICAgICAgICBoYXMg
YW4gZXh0cmEgc3BhY2UgYXQgdGhlIGVuZC4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5k
L2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQ6IExpZ2h0
R3JheSBpcyBleHByZXNzZWQgYXMKKyAgICAgICAgcmdiKDIxMSwgMjExLCAyMTEpOworICAgICAg
ICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3BhZ2Utem9vbS1mb250LXNpemUtZXhwZWN0ZWQudHh0OiBT
dHlsZSBhdHRyaWJ1dGUgbm8gbG9uZ2VyIGhhcyBhIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAq
IGVkaXRpbmcvcGFzdGVib2FyZC81MDY1NjA1LWV4cGVjdGVkLnR4dDogTG9zdCB3cmFwcGluZyBz
cGFuIGFuZCBmb250LgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVy
LWl0ZW1zLWV4cGVjdGVkLnR4dDogRGlmZmVyZW50IENTUyBwcm9wZXJ0aWVzIGFyZSBzZXJpYWxp
emVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9pbnRlcmNoYW5nZS1uZXdsaW5lLTEt
ZXhwZWN0ZWQudHh0OiAiZm9vIiBpcyBtb3ZlZCBvdXRzaWRlIHRoZSBzcGFuIGJ1dCB2aXN1YWxs
eSBpZGVudGljYWwuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVuZC0xLWV4
cGVjdGVkLnR4dDogU3BhbiBpcyBzcGxpdCBiZWZvcmUgImJhciIgYW5kICJiYXoiIGJ1dCB2aXN1
YWxseSBpZGVudGljYWwuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVuZC0y
LWV4cGVjdGVkLnR4dDogU3BhbiBpcyBzcGxpdCBhZnRlciAiZm9vIGJhciIgYnV0IHZpc3VhbGx5
IGlkZW50aWNhbC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0
bWwtZXhwZWN0ZWQudHh0OiBEaWZmZXJlbnQgQ1NTIHByb3BlcnRpZXMgYXJlIHNlcmlhbGl6ZWQu
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVk
LnR4dDogTm8gbG9uZ2VyIGVycm9uZW91c2x5IG5lc3RzIHVsIHdpdGggaXRzZWxmOworICAgICAg
ICBhbHNvIEIgYW5kIEMgYXJlIG5vIGxvbmdlciBlcnJvbmVvdXNseSBhbGlnbmVkIHRvIHRoZSBy
aWdodC4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYWZ0ZXItaW5saW5lLXN0
eWxlLWVsZW1lbnQtZXhwZWN0ZWQudHh0OiAibGluZSAyIiBpcyBubyBsb25nZXIgZXJyb25lb3Vz
bHkgYm9sZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXBy
ZS1leHBlY3RlZC50eHQ6ICBMb3N0IHRoZSB3cmFwcGluZyBzcGFuIGFyb3VuZCBwcmUuCisgICAg
ICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0OiBEaXR0
by4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50
eHQ6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMS1l
eHBlY3RlZC50eHQ6IExvc3QgdGhlIHdyYXBwaW5nIHNwYW4gYW5kIGI7IGZvbnQtZmFtaWx5IGFu
ZCBmb250LXdlaWdodAorICAgICAgICBwcm9wZXJ0aWVzIGFyZSBub3cgc2V0IG9uIHAuCisgICAg
ICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dDogTm8g
bG9uZ2VyIGFkZHMgcmVkdW5kYW50IGZvbnQtc2l6ZTogbWVkaXVtIGFyb3VuZAorICAgICAgICBh
IGRpdiB3aXRoIGhhcyBmb250LXNpemUgcHJvcGVydHkgc2V0IHRvIDI0cHguCisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4
cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4
dC0wMTEtZXhwZWN0ZWQudHh0OiBTYW1lIGNoYW5nZSBhcyBvbmUgaW4gZWRpdGluZy9wYXN0ZWJv
YXJkLgorCiAyMDExLTA4LTA2ICBCYWxhenMgS2VsZW1lbiAgPGtiYWxhenNAd2Via2l0Lm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkIGdhcmRlbmluZy4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvZGVsZXRpbmcvZGVsZXRpbmctbGluZS1icmVhay1wcmVzZXJ2ZXMtdW5kZXJsaW5lLWNvbG9y
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5n
L2RlbGV0aW5nLWxpbmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1jb2xvci1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDkyNTQyKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxl
dGluZy1saW5lLWJyZWFrLXByZXNlcnZlcy11bmRlcmxpbmUtY29sb3ItZXhwZWN0ZWQudHh0CSh3
b3JraW5nIGNvcHkpCkBAIC0xMyw3ICsxMyw3IEBAIEFmdGVyOgogfCA8ZGl2PgogfCAgICJUaGlz
IHNob3VsZCBub3QgYmUgdW5kZXJsaW5lZC48I3NlbGVjdGlvbi1jYXJldD4iCiB8ICAgPHNwYW4+
Ci18ICAgICBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiBibHVlOyIK
K3wgICAgIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgY29sb3I6IGJsdWU7ICIK
IHwgICAgIDxzcGFuPgogfCAgICAgICBzdHlsZT0iY29sb3I6cmVkOyIKIHwgICAgICAgIlRoaXMg
c2hvdWxkIGJlIHVuZGVybGluZWQuIgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29t
bWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qt
d2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI1NDIpCisr
KyBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRp
dGFibGUtY29udGVudC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTQsNyArNCw3IEBA
IFRoaXMgdGVzdHMgbGlzdCBjcmVhdGlvbiBpbiBhbiBlZGl0YWJsZSAKIHwgICAgICJFZGl0YWJs
PCNzZWxlY3Rpb24tYW5jaG9yPmUgcGFyYWdyYXBoIGNvbnRhaW5pbmcgYSAiCiB8ICAgICA8c3Bh
bj4KIHwgICAgICAgY29udGVudGVkaXRhYmxlPSJmYWxzZSIKLXwgICAgICAgc3R5bGU9ImJhY2tn
cm91bmQtY29sb3I6IExpZ2h0R3JheTsiCit8ICAgICAgIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMjExLCAyMTEsIDIxMSk7ICIKIHwgICAgICAgIm5vbi1lZGl0YWJsZSIKIHwgICAgICIg
aW4gdGhlIG1pZGRsZSIKIHwgICAgIDxicj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvaW5z
ZXJ0aW5nL3BhZ2Utem9vbS1mb250LXNpemUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3BhZ2Utem9vbS1mb250LXNpemUtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5MjU0MikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3Bh
Z2Utem9vbS1mb250LXNpemUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDcgKzEs
NyBAQAogVGVzdCB0byBtYWtlIHN1cmUgdGhhdCBwYXN0aW5nIHRleHQgd2l0aCBhIGZvbnQgc2l6
ZSBpbnRvIGEgcXVpcmtzIG1vZGUgZG9jdW1lbnQgdGhhdCBpcyB6b29tZWQgZG9lcyBub3QgYWx0
ZXIgdGhlIGZvbnQgc2l6ZS4KIAogUGFzdGUgSGVyZTpUaGlzIGZvbnQgaXMgc2l6ZSAxNnB4Lgot
UGFzdGUgSGVyZTo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNnB4OyAiIGNsYXNzPSJBcHBsZS1z
dHlsZS1zcGFuIj5UaGlzIGZvbnQgaXMgc2l6ZSAxNnB4Ljwvc3Bhbj4KK1Bhc3RlIEhlcmU6PHNw
YW4gc3R5bGU9ImZvbnQtc2l6ZTogMTZweCIgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iPlRoaXMg
Zm9udCBpcyBzaXplIDE2cHguPC9zcGFuPgogZG9jdW1lbnQuY29tcGF0TW9kZTogQmFja0NvbXBh
dAogUEFTUwogCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTA2NTYwNS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
LzUwNjU2MDUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjU0MikKKysrIExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC81MDY1NjA1LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MjEsNyArMjEsNyBAQCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0CiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmlj
YXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdt
ZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBESVYgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IGdpdmVuQWN0aW9uOldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQKIEVESVRJTkcgREVMRUdB
VEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5v
dGlmaWNhdGlvbgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5n
ZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDI0IG9mICN0ZXh0ID4gRk9OVCA+IERJViA+
IFNQQU4gPiBGT05UID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMjQg
b2YgI3RleHQgPiBGT05UID4gRElWID4gU1BBTiA+IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZID4g
SFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBz
dGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0
ZWRET01SYW5nZToobnVsbCkgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDI0IG9mICN0ZXh0ID4gRk9O
VCA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDI0IG9mICN0
ZXh0ID4gRk9OVCA+IERJViA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFm
ZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNF
CiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCkBAIC00MCwxNSArNDAsOSBAQCBUaGlzIHRlc3RzIGZvciBhIGJ1ZyB3aGVyZSB0ZXh0IGNv
cGllZCB3CiB8ICAgPGZvbnQ+CiB8ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKIHwgICAg
IGNvbG9yPSIjZmYwMDAwIgotfCAgICAgPHNwYW4+Cit8ICAgICAiVGhpcyB0ZXh0IHNob3VsZCBi
ZSByZWQuIgorfCAgIDxkaXY+Cit8ICAgICA8Zm9udD4KIHwgICAgICAgY2xhc3M9IkFwcGxlLXN0
eWxlLXNwYW4iCi18ICAgICAgIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyAiCi18ICAgICAg
IDxmb250PgotfCAgICAgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgotfCAgICAgICAgIGNv
bG9yPSIjZmYwMDAwIgotfCAgICAgICAgICJUaGlzIHRleHQgc2hvdWxkIGJlIHJlZC4iCi18ICAg
ICAgIDxkaXY+Ci18ICAgICAgICAgPGZvbnQ+Ci18ICAgICAgICAgICBjbGFzcz0iQXBwbGUtc3R5
bGUtc3BhbiIKLXwgICAgICAgICAgIGNvbG9yPSIjZmYwMDAwIgotfCAgICAgICAgICAgIlRoaXMg
dGV4dCBzaG91bGQgYmUgcmVkLjwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICAgICAgY29sb3I9IiNm
ZjAwMDAiCit8ICAgICAgICJUaGlzIHRleHQgc2hvdWxkIGJlIHJlZC48I3NlbGVjdGlvbi1jYXJl
dD4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1p
dGVtcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0
ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjU0MikK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjAsNiArMjAsNiBAQCBUZXN0aW5nIGlmIERh
dGFUcmFuc2Zlckl0ZW1zIGNhbiBiZSBhY2NlCiBEYXRhVHJhbnNmZXJJdGVtIGFjY2Vzc2VkIG91
dHNpZGUgZXZlbnQgaGFuZGxlciEKIGNvcHk6IGl0ZW1zWzBdIHZhbHVlOiBIZWxsbyBXb3JsZCEK
IGNvcHk6IGl0ZW1zWzFdIHZhbHVlOiA8Yj5IZWxsbyBXb3JsZCEKLXBhc3RlOiBpdGVtc1swXSB2
YWx1ZTogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJjb2xvcjogcmdiKDAs
IDAsIDApOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdl
aWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFs
OyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiAtd2Via2l0LWF1dG87IHRleHQtaW5kZW50OiAwcHg7
IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdv
cmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0OiBub25l
OyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lk
dGg6IDBweDsgZm9udC1zaXplOiBtZWRpdW07ICI+VGhpcyBmaWxlIHRlc3RzIHRoZSBiYXNpYyBm
dW5jdGlvbmFsaXR5IGFuZCBwcm9wZXJ0aWVzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLiBUaGlzIHRl
c3QgcmVxdWlyZXMgRFJULjwvc3Bhbj4KK3Bhc3RlOiBpdGVtc1swXSB2YWx1ZTogPHNwYW4gY2xh
c3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LXN0
eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBs
ZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0
ZXh0LWFsaWduOiAtd2Via2l0LWF1dG87IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3Jt
OiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4
OyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lk
dGg6IDBweDsgZm9udC1zaXplOiBtZWRpdW07IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyBm
bG9hdDogbm9uZTsgIj5UaGlzIGZpbGUgdGVzdHMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYW5k
IHByb3BlcnRpZXMgb2YgRGF0YVRyYW5zZmVySXRlbXMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQu
PC9zcGFuPgogcGFzdGU6IGl0ZW1zWzFdIHZhbHVlOiBUaGlzIGZpbGUgdGVzdHMgdGhlIGJhc2lj
IGZ1bmN0aW9uYWxpdHkgYW5kIHByb3BlcnRpZXMgb2YgRGF0YVRyYW5zZmVySXRlbXMuIFRoaXMg
dGVzdCByZXF1aXJlcyBEUlQuCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9pbnRlcmNoYW5nZS1uZXdsaW5lLTEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9pbnRlcmNoYW5nZS1uZXdsaW5lLTEtZXhwZWN0ZWQu
dHh0CShyZXZpc2lvbiA5MjU0MikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9p
bnRlcmNoYW5nZS1uZXdsaW5lLTEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xMCw4
ICsxMCw4IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRFbmRFZGl0aW5nOlcKIFRoZXJl
IGlzIGFuIGludGVyY2hhbmdlIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGUgaW5jb21pbmcgZnJh
Z21lbnQuICJiYXIiIGFuZCAieCIgc2hvdWxkIGJlIGluIHNlcGFyYXRlIHBhcmFncmFwaHMKIFRo
ZSBwYXJhZ3JhcGggImJhciIgaXMgaW5zaWRlIGEgZGl2IHdyYXBwZWQgaW4gYSBzcGFuLCBhbmQg
dGhlIG9sZCBwYXN0ZSBjb2RlIHRoYXQgaGFuZGxlZCBpbnRlcmNoYW5nZSBuZXdsaW5lcyBkaWQg
bm90IGhhbmRsZSB0aGlzIGNhc2UuCiB8ICJ4IgorfCAiZm9vIgogfCA8c3Bhbj4KLXwgICAiZm9v
IgogfCAgIDxkaXY+CiB8ICAgICAiYmFyIgogfCAiPCNzZWxlY3Rpb24tY2FyZXQ+eCIKSW5kZXg6
IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtMS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVuZC0x
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI1NDIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvbWVyZ2UtZW5kLTEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDcg
KzIsOSBAQCBUaGlzIHRlc3RzIHRoZSBsYXN0IHBhcmFncmFwaCBpbiB0aGUgcGFzCiAiYmF6IiBh
bmQgIm9vIiBzaG91bGQgYmUgaW4gdGhlIHNhbWUgcGFyYWdyYXBoIGJlbG93LgogfCA8c3Bhbj4K
IHwgICAiZiIKLXwgICAiYmFyIgorfCAiYmFyIgorfCA8c3Bhbj4KIHwgICA8YnI+Ci18ICAgImJh
ejwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgImJhejwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgPHNwYW4+
CiB8ICAgIm9vIgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVu
ZC0yLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvbWVyZ2UtZW5kLTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjU0MikKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtMi1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTQsNyArNCw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNl
bGVjdGVkRE8KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdE
aWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENo
YW5nZVNlbGVjdGVkRE9NUmFuZ2U6cmFuZ2UgZnJvbSAzIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9E
WSA+IEhUTUwgPiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBT
UEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMyBvZiAjdGV4dCA+IFNQQU4g
PiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlvbkFmZmlu
aXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQorRURJVElORyBERUxFR0FURTogc2hv
dWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBESVYgPiBC
T0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwg
PiAjZG9jdW1lbnQgdG9ET01SYW5nZTpyYW5nZSBmcm9tIDMgb2YgI3RleHQgPiBESVYgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAzIG9mICN0ZXh0ID4gRElWID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxl
Y3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246
V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERF
TEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rp
b25Ob3RpZmljYXRpb24KQEAgLTEzLDggKzEzLDEwIEBAIFRoaXMgdGVzdHMgdGhlIGxhc3QgcGFy
YWdyYXBoIGluIHRoZSBwYXMKICJiYXoiIGFuZCAib29iYXIiIHNob3VsZCBiZSBpbiB0aGUgc2Ft
ZSBwYXJhZ3JhcGggYmVsb3cKIHwgPHNwYW4+CiB8ICAgImYiCi18ICAgImJhciIKK3wgImJhciIK
K3wgPHNwYW4+CiB8ICAgPGJyPgotfCAgICJiYXo8I3NlbGVjdGlvbi1jYXJldD4iCit8ICJiYXo8
I3NlbGVjdGlvbi1jYXJldD4iCit8IDxzcGFuPgogfCAgICJvbyIKIHwgImJhciIKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUt
dGV4dC1odG1sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI1NDIpCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiB0ZXh0L3Bs
YWluOiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRo
ZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuIAotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDIzOiB0ZXh0L2h0bWw6IDxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0i
Y29sb3I6IHJnYigwLCAwLCAwKTsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBu
b3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUt
aGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgdGV4
dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7
IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1p
bi1lZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsgLXdlYmtpdC10
ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgIj5UaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5n
IGFuIG9ucGFzdGUgZXZlbnQuPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8
L3NwYW4+PC9zcGFuPgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiB0ZXh0L2h0bWw6IDxzcGFu
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgIGZv
bnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3Jt
YWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6
IDI7IHRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu
c2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5n
OiAwcHg7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsgLXdlYmtpdC10ZXh0LXN0cm9r
ZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgZGlzcGxheTogaW5saW5lICFpbXBvcnRh
bnQ7IGZsb2F0OiBub25lOyAiPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4
dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC48c3BhbiBj
bGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj7CoDwvc3Bhbj48L3NwYW4+CiBUaGlzIHRlc3Qg
dmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVy
aW5nIGFuIG9ucGFzdGUgZXZlbnQuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCiBQYXN0ZSBjb250
ZW50IGluIHRoaXMgZGl2LlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9o
dG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC7CoAogUEFTUwpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtNDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjU0MikKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5Nzc3LWZpeC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMCBAQCBBY3R1YWwgcmVzdWx0OgogIgogfCA8
dWw+CiB8ICAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7IgotfCAgIDx1bD4KLXwgICAgIHN0eWxl
PSJ0ZXh0LWFsaWduOiByaWdodDsgIgotfCAgICAgPGxpPgotfCAgICAgICAiQSIKK3wgICA8bGk+
Cit8ICAgICAiQSIKIHwgICA8ZGl2PgorfCAgICAgc3R5bGU9InRleHQtYWxpZ246IC13ZWJraXQt
YXV0bzsgIgogfCAgICAgPHVsPgogfCAgICAgICA8bGk+CiB8ICAgICAgICAgPGE+CkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYWZ0ZXItaW5saW5lLXN0eWxlLWVs
ZW1lbnQtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1hZnRlci1pbmxpbmUtc3R5bGUtZWxlbWVudC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDkyNTQyKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWFm
dGVyLWlubGluZS1zdHlsZS1lbGVtZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
NCw2ICs0LDcgQEAgVGhpcyB0ZXN0IGV4aGliaXRzIGEgYnVnLiBUaGUgaW5zZXJ0ZWQgYwogfCAg
IHR5cGU9ImNpdGUiCiB8ICAgPGI+CiB8ICAgICAibGluZSAxwqAiCi18ICAgICAibGluZSAyPCNz
ZWxlY3Rpb24tY2FyZXQ+IgotfCAgICAgIsKgIgorfCAgICJsaW5lIDI8I3NlbGVjdGlvbi1jYXJl
dD4iCit8ICAgIsKgIgorfCAgIDxiPgogfCAgICAgPGJyPgpJbmRleDogTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA5MjU0MikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMs
MTAgKzMsNyBAQCBZb3Ugc2hvdWxkIHNlZSBtYXJrdXAgaW4gdGhlIGVkaXRhYmxlIHJlCiB8IDxw
cmU+CiB8ICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgogfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+
Ci18ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKLXwgICAgIHN0eWxlPSJmb250LWZhbWls
eTogVGltZXM7IHdoaXRlLXNwYWNlOiBub3JtYWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNv
bnRlbnRlZGl0YWJsZT0idHJ1ZSIKLXwgICAgICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0
eXBlPSdidXR0b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAg
IDxwcmU+Cit8ICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCit8ICAgICBpZD0icHJlIgorfCAg
ICAgIjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24t
Y2FyZXQ+IgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0w
MDEtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI1NDIpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTcsNCArNyw0IEBAIGJhcgogZm9vCiBiYXIKIGV4ZWNDdXRDb21tYW5k
OiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PGJyPjwvcHJlPiA8L2Rpdj4K
LWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48
c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsg
d2hpdGUtc3BhY2U6IG5vcm1hbDsgIj48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwv
ZGl2PgorZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8
cHJlPjxwcmU+Zm9vIGJhcjwvcHJlPjwvcHJlPiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50
eHQJKHJldmlzaW9uIDkyNTQyKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLXByZS0wMDItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDQgKzIsNCBAQCBU
aGlzIGlzIGEgbGF5b3V0IHRlc3QgZm9yIHJkYXI6Ly9wcm9ibGVtCiBmb28KIGJhcgogZXhlY0Nv
cHlDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+Zm9vIGJhcjwv
cHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0
aW5nIj4gPHByZT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFt
aWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIj48cHJlPmZvbyBiYXI8L3ByZT48L3Nw
YW4+PC9wcmU+IDwvZGl2PgorZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9
ImVkaXRpbmciPiA8cHJlPjxwcmU+Zm9vIGJhcjwvcHJlPjwvcHJlPiA8L2Rpdj4KSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMS1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQt
MDExLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI1NDIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC02LDcgKzYsNyBAQCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0CiBF
RElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmlj
YXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNob3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdt
ZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAj
ZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246
V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENo
YW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElU
SU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJh
bmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IFNQQU4gPiBCID4gRk9O
VCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gQiA+IEZPTlQg
PiBQID4gU1BBTiA+IEIgPiBGT05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmlu
aXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitF
RElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RP
TVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IEZPTlQgPiBQID4g
Qk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IEZP
TlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZp
bml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdl
YlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNh
dGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdl
Tm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9u
OldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KQEAgLTI5LDIwICsyOSwxOCBA
QCBUaGUgY29udGVudCB3YXMgaW5zZXJ0ZWQgYXQgdGhlIHN0YXJ0IG9mCiB8IDxwPgogfCAgIDxm
b250PgogfCAgICAgZmFjZT0iTW9uYWNvIgotfCAgICAgPGI+Ci18ICAgICAgIDxzcGFuPgotfCAg
ICAgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgotfCAgICAgICAgIHN0eWxlPSJmb250LWZh
bWlseTogVGltZXM7IGZvbnQtd2VpZ2h0OiBub3JtYWw7ICIKLXwgICAgICAgICA8cD4KLXwgICAg
ICAgICAgIDxmb250PgotfCAgICAgICAgICAgICBmYWNlPSJNb25hY28iCi18ICAgICAgICAgICAg
IDxiPgotfCAgICAgICAgICAgICAgICJoZWxsbyIKLXwgICAgICAgICA8cD4KLXwgICAgICAgICAg
IDxmb250PgotfCAgICAgICAgICAgICBmYWNlPSJNb25hY28iCi18ICAgICAgICAgICAgIDxiPgot
fCAgICAgICAgICAgICAgICJ0aGVyZTwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICAgIDxwPgorfCAg
ICAgICBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyAiCit8ICAgICAgIDxmb250PgorfCAgICAg
ICAgIGZhY2U9Ik1vbmFjbyIKK3wgICAgICAgICA8Yj4KK3wgICAgICAgICAgICJoZWxsbyIKK3wg
ICAgIDxwPgorfCAgICAgICBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyAiCit8ICAgICAgIDxm
b250PgorfCAgICAgICAgIGZhY2U9Ik1vbmFjbyIKK3wgICAgICAgICA8Yj4KK3wgICAgICAgICAg
ICJ0aGVyZTwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgIgogCiAKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gOTI1NDIpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtdGV4dC0wMTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDQgKzYsNCBA
QCBmb28KIGZvbwogCiBleGVjQ29weUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0
aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBj
bGFzcz0iZWRpdGluZyI+PC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBj
bGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+PC9k
aXY+IDxkaXYgY2xhc3M9ImVkaXRpbmciPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBz
dHlsZT0iZm9udC1zaXplOiBtZWRpdW07ICI+PGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmci
PjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+PGJyPjwvZGl2Pjwv
ZGl2Pjwvc3Bhbj48L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNz
PSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4g
PGRpdiBjbGFzcz0iZWRpdGluZyI+PGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+
PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2Pjwv
ZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0w
MDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjU0MikKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAotVGVzdHM6IAotQ29weWluZyBhbmQg
cGFzdGluZyBjb250ZW50IGluc2lkZSBvZiBhIFBSRSB0YWcuIFRoaXMgdGVzdCB3YXMgY3JlYXRl
ZCBhZnRlciBmaXhpbmcgMzkxODA1Ni4KLUV4cGVjdGVkIFJlc3VsdHM6IAotVGhlIFBSRSB0YWcg
YW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSB0ZXh0IGluc2lkZSBvZiB0aGUgUFJFIHNob3VsZCBi
ZSBtYWludGFpbmVkLiBTaG91bGQgc2VlIHRoaXMgY29udGVudCBpbiB0aGUgcmVkIGJveCBiZWxv
dzoKLWZvbwotYmFyCi1mb28KLWJhcgotZXhlY0N1dENvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNs
YXNzPSJlZGl0aW5nIj4gPHByZT48YnI+PC9wcmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDog
PGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1z
dHlsZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1pbHk6ICd0aW1lcyBuZXcgcm9tYW4nOyB3aGl0ZS1z
cGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9vIGJhcjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+Cklu
ZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3Bs
YXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDkyNTQyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21p
dW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICswLDAgQEAKLVRoaXMgaXMgYSBsYXlvdXQgdGVzdCBmb3IgcmRh
cjovL3Byb2JsZW0vNDM3MDIwOSAiUmVwcm9kdWNpYmxlIGNyYXNoIHdoZW4gcGFzdGluZyBvdmVy
IHdoaXRlc3BhY2U6cHJlIHRleHQiLiBUaGUgdGV4dCBiZWxvdyBpcyBzZWxlY3RlZCwgY29waWVk
LCBhbmQgcGFzdGVkIG92ZXIgaXRzZWxmLiBZb3UnbGwgc2VlIGZvby9uYmFyIGlmIHN1Y2Nlc3Nm
dWwuCi1mb28KLWJhcgotZXhlY0NvcHlDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRp
dGluZyI+IDxwcmU+Zm9vIGJhcjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYg
aWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUt
c3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAndGltZXMgbmV3IHJvbWFuJzsgd2hpdGUtc3BhY2U6
IG5vcm1hbDsgIj48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2PgpJbmRleDog
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS10ZXh0LTAxMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMS1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDkyNTQyKQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0t
d2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMS1leHBlY3RlZC50eHQJKHdvcmtp
bmcgY29weSkKQEAgLTYsNyArNiw3IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3QKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENo
YW5nZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9j
dW1lbnQtZnJhZ21lbnQgcmVwbGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIFAgPiBCT0RZ
ID4gSFRNTCA+ICNkb2N1bWVudCB0byAwIG9mIFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBn
aXZlbkFjdGlvbjpXZWJWaWV3SW5zZXJ0QWN0aW9uUGFzdGVkCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KLUVESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6KG51
bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gU1BB
TiA+IEIgPiBGT05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQg
PiBCID4gRk9OVCA+IFAgPiBTUEFOID4gQiA+IEZPTlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rp
bmc6RkFMU0UKK0VESVRJTkcgREVMRUdBVEU6IHNob3VsZENoYW5nZVNlbGVjdGVkRE9NUmFuZ2U6
KG51bGwpIHRvRE9NUmFuZ2U6cmFuZ2UgZnJvbSA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4g
Rk9OVCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byA1IG9mICN0ZXh0ID4gQiA+IEZP
TlQgPiBQID4gRk9OVCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1Nl
bGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBE
RUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0
aW9uTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZp
ZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFu
Z2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtMjks
MjAgKzI5LDE4IEBAIFRoZSBjb250ZW50IHdhcyBpbnNlcnRlZCBhdCB0aGUgc3RhcnQgb2YKIHwg
PHA+CiB8ICAgPGZvbnQ+CiB8ICAgICBmYWNlPSJNb25hY28iCi18ICAgICA8Yj4KLXwgICAgICAg
PHNwYW4+Ci18ICAgICAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCi18ICAgICAgICAgc3R5
bGU9ImZvbnQtZmFtaWx5OiAndGltZXMgbmV3IHJvbWFuJzsgZm9udC13ZWlnaHQ6IG5vcm1hbDsg
IgotfCAgICAgICAgIDxwPgotfCAgICAgICAgICAgPGZvbnQ+Ci18ICAgICAgICAgICAgIGZhY2U9
Ik1vbmFjbyIKLXwgICAgICAgICAgICAgPGI+Ci18ICAgICAgICAgICAgICAgImhlbGxvIgotfCAg
ICAgICAgIDxwPgotfCAgICAgICAgICAgPGZvbnQ+Ci18ICAgICAgICAgICAgIGZhY2U9Ik1vbmFj
byIKLXwgICAgICAgICAgICAgPGI+Ci18ICAgICAgICAgICAgICAgInRoZXJlPCNzZWxlY3Rpb24t
Y2FyZXQ+IgorfCAgICAgPHA+Cit8ICAgICAgIHN0eWxlPSJmb250LWZhbWlseTogJ3RpbWVzIG5l
dyByb21hbic7ICIKK3wgICAgICAgPGZvbnQ+Cit8ICAgICAgICAgZmFjZT0iTW9uYWNvIgorfCAg
ICAgICAgIDxiPgorfCAgICAgICAgICAgImhlbGxvIgorfCAgICAgPHA+Cit8ICAgICAgIHN0eWxl
PSJmb250LWZhbWlseTogJ3RpbWVzIG5ldyByb21hbic7ICIKK3wgICAgICAgPGZvbnQ+Cit8ICAg
ICAgICAgZmFjZT0iTW9uYWNvIgorfCAgICAgICAgIDxiPgorfCAgICAgICAgICAgInRoZXJlPCNz
ZWxlY3Rpb24tY2FyZXQ+IgogfCAiCiAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103299</attachid>
            <date>2011-08-08 15:10:42 -0700</date>
            <delta_ts>2011-08-09 16:07:35 -0700</delta_ts>
            <desc>updated after r92620</desc>
            <filename>bug-34564-20110808151041.patch</filename>
            <type>text/plain</type>
            <size>65594</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTI2MzIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAyNzA0N2IzZTA1YmMwYzM5N2IzODA0
OTE3ZWE0ZmYwZDU5ZmIwNDE1Li41MjA4ODdmMDE0OWJiMTI3Njg2MTFjODNkNWE1OGU3ZWRhOTAy
OWM2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMzggQEAKKzIwMTEtMDgtMDggIFJ5b3N1a2UgTml3YSAgPHJu
aXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29weWluZyBjYW4gcmVzdWx0IGluIHNwYW4gYXJv
dW5kIGJsb2NrIGVsZW1lbnRzIG9uIHRoZSBjbGlwYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBvdmVyaGF1bGVkIHRoZSB3YXkg
d2UgcHJlc2VydmUgc3R5bGVzIHdoZW4gY29weWluZyBhbmQgcGFzdGluZyBIVE1MIGNvbnRlbnRz
LgorCisgICAgICAgICogZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFrLXByZXNl
cnZlcy11bmRlcmxpbmUtY29sb3ItZXhwZWN0ZWQudHh0OiBTdHlsZSBhdHRyaWJ1dGUgbm93IGhh
cworICAgICAgICBhIHRyYWlsaW5nIHNwYWNlIGF0IHRoZSBlbmQuCisgICAgICAgICogZWRpdGlu
Zy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0
ZWQudHh0OiBMaWdodEdyYXkgaXMgZXhwcmVzc2VkIGFzCisgICAgICAgIHJnYigyMTEsIDIxMSwg
MjExKS4KKyAgICAgICAgKiBlZGl0aW5nL2luc2VydGluZy9wYWdlLXpvb20tZm9udC1zaXplLWV4
cGVjdGVkLnR4dDogU3R5bGUgYXR0cmlidXRlIG5vIGxvbmdlciBoYXMgYSB0cmFpbGluZyBzcGFj
ZS4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvNDkzMDk4Ni0yLWV4cGVjdGVkLnR4dDog
QSBzdHlsZSBhdHRyaWJ1dGUgbG9zdCB0aGUgdHJhaWxpbmcgc3BhY2UuCisgICAgICAgICogZWRp
dGluZy9wYXN0ZWJvYXJkLzUwNjU2MDUtZXhwZWN0ZWQudHh0OiBMb3N0IHdyYXBwaW5nIHNwYW4g
YW5kIGZvbnQuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRl
bXMtZXhwZWN0ZWQudHh0OiBEaWZmZXJlbnQgQ1NTIHByb3BlcnRpZXMgYXJlIHNlcmlhbGl6ZWQu
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLWV4cGVjdGVk
LnR4dDogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVuZC0xLWV4
cGVjdGVkLnR4dDogU3BhbiBpcyBzcGxpdCBidXQgdmlzdWFsbHkgaWRlbnRpY2FsLgorICAgICAg
ICAqIGVkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtMi1leHBlY3RlZC50eHQ6IERpdHRvLgor
ICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5Nzc3LWZpeC1leHBlY3RlZC50
eHQKKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYWZ0ZXItaW5saW5lLXN0eWxl
LWVsZW1lbnQtZXhwZWN0ZWQudHh0OiAibGluZSAyIiBpcyBubyBsb25nZXIgZXJyb25lb3VzbHkg
Ym9sZGVkLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1l
eHBlY3RlZC50eHQ6IExvc3QgdGhlIHdyYXBwaW5nIHNwYW4gYXJvdW5kIHByZS4KKyAgICAgICAg
KiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQ6IERpdHRvLgor
ICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dDog
RGl0dG8uCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDExLWV4cGVj
dGVkLnR4dDogTG9zdCB0aGUgd3JhcHBpbmcgc3BhbiBhbmQgYjsgZm9udC1mYW1pbHkgYW5kIGZv
bnQtd2VpZ2h0CisgICAgICAgIHByb3BlcnRpZXMgYXJlIG5vdyBzZXQgb24gcC4KKyAgICAgICAg
KiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0ZWQudHh0OiBObyBsb25n
ZXIgYWRkcyByZWR1bmRhbnQgZm9udC1zaXplOiBtZWRpdW0gYXJvdW5kIGEgZGl2IHdpdGgKKyAg
ICAgICAgaGFzIGZvbnQtc2l6ZSBwcm9wZXJ0eSBzZXQgdG8gMjRweC4KKyAgICAgICAgKiBlZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtd2l0aC1yZWR1bmRhbnQtc3R5bGUtZXhwZWN0ZWQudHh0OiBX
cmFwcGluZyBlbSBiIGlzIHJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2lu
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LXByZS0wMDItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0OiBS
ZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0OiBTYW1lIGNoYW5nZSBhcyBvbmUgaW4gZWRp
dGluZy9wYXN0ZWJvYXJkLgorCiAyMDExLTA4LTA4ICBUb255IENoYW5nICA8dG9ueUBjaHJvbWl1
bS5vcmc+CiAKICAgICAgICAgaW1wbGVtZW50IGJhc2ljIGhvcml6b250YWwgZmxleGluZwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFr
LXByZXNlcnZlcy11bmRlcmxpbmUtY29sb3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFrLXByZXNlcnZlcy11bmRlcmxpbmUtY29s
b3ItZXhwZWN0ZWQudHh0CmluZGV4IDk1MDk2ODk2ZTBkMGNhNGZiNjM4OGZmMWI3MTRhMjRkMmUw
YTkwOWQuLjhkMmM3OWNmOTA1MTY1NzM4YjczOTI0YjhlYjNhZGU3NDM1ZThmYjMgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRpbmctbGluZS1icmVhay1wcmVz
ZXJ2ZXMtdW5kZXJsaW5lLWNvbG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL2RlbGV0aW5nL2RlbGV0aW5nLWxpbmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1jb2xv
ci1leHBlY3RlZC50eHQKQEAgLTEzLDcgKzEzLDcgQEAgQWZ0ZXI6CiB8IDxkaXY+CiB8ICAgIlRo
aXMgc2hvdWxkIG5vdCBiZSB1bmRlcmxpbmVkLjwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgICA8c3Bh
bj4KLXwgICAgIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgY29sb3I6IGJsdWU7
IgorfCAgICAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjogYmx1ZTsg
IgogfCAgICAgPHNwYW4+CiB8ICAgICAgIHN0eWxlPSJjb2xvcjpyZWQ7IgogfCAgICAgICAiVGhp
cyBzaG91bGQgYmUgdW5kZXJsaW5lZC4iCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgt
bm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQKaW5kZXggNDE4OTMwYzJlNzE1NjNiMzZk
OTNkMmI1NjI3NzE4Yjk0MDIwNjY0YS4uN2FhNjU2ZjAwMzRhY2IzZWUwNWZiOWNjZTJjM2VmNjYz
OTJiYzg0ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNl
cnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1j
b250ZW50LWV4cGVjdGVkLnR4dApAQCAtNCw3ICs0LDcgQEAgVGhpcyB0ZXN0cyBsaXN0IGNyZWF0
aW9uIGluIGFuIGVkaXRhYmxlIGNvbnRleHQgYnV0IGFjcm9zcyBub24tZWRpdGFibGUgY29udGVu
dC4KIHwgICAgICJFZGl0YWJsPCNzZWxlY3Rpb24tYW5jaG9yPmUgcGFyYWdyYXBoIGNvbnRhaW5p
bmcgYSAiCiB8ICAgICA8c3Bhbj4KIHwgICAgICAgY29udGVudGVkaXRhYmxlPSJmYWxzZSIKLXwg
ICAgICAgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IExpZ2h0R3JheTsiCit8ICAgICAgIHN0eWxl
PSJiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjExLCAyMTEsIDIxMSk7ICIKIHwgICAgICAgIm5vbi1l
ZGl0YWJsZSIKIHwgICAgICIgaW4gdGhlIG1pZGRsZSIKIHwgICAgIDxicj4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2VkaXRpbmcvaW5zZXJ0aW5nL3BhZ2Utem9vbS1mb250LXNpemUtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcGFnZS16b29tLWZvbnQtc2l6
ZS1leHBlY3RlZC50eHQKaW5kZXggMzJiZTcyZGM5ODc2MzQxNzMwNTUyOWQ0ZWU4ZjAyOTYxYzgx
NGUyNi4uMzQwYzUxZTllYzVkMzk4ZWNiMTMzMzE3ZTk4YTRhMTg3MThiMTE0NyAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcGFnZS16b29tLWZvbnQtc2l6ZS1leHBl
Y3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcGFnZS16b29tLWZv
bnQtc2l6ZS1leHBlY3RlZC50eHQKQEAgLTEsNyArMSw3IEBACiBUZXN0IHRvIG1ha2Ugc3VyZSB0
aGF0IHBhc3RpbmcgdGV4dCB3aXRoIGEgZm9udCBzaXplIGludG8gYSBxdWlya3MgbW9kZSBkb2N1
bWVudCB0aGF0IGlzIHpvb21lZCBkb2VzIG5vdCBhbHRlciB0aGUgZm9udCBzaXplLgogCiBQYXN0
ZSBIZXJlOlRoaXMgZm9udCBpcyBzaXplIDE2cHguCi1QYXN0ZSBIZXJlOjxzcGFuIHN0eWxlPSJm
b250LXNpemU6IDE2cHg7ICIgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iPlRoaXMgZm9udCBpcyBz
aXplIDE2cHguPC9zcGFuPgorUGFzdGUgSGVyZTo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNnB4
IiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiI+VGhpcyBmb250IGlzIHNpemUgMTZweC48L3NwYW4+
CiBkb2N1bWVudC5jb21wYXRNb2RlOiBCYWNrQ29tcGF0CiBQQVNTCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC80OTMwOTg2LTItZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkLzQ5MzA5ODYtMi1leHBlY3RlZC50eHQKaW5kZXgg
YzBiZDgzMDE3OWFlOWQ5MmZlYzA1NWUwNjUxNGZkMGFhZTFmNjIxMS4uODg1M2RiMTZiMDcwNTc3
NjcyOTk0MTQzM2FhMjhjMmE4ZWFiYTM1OSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkLzQ5MzA5ODYtMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkLzQ5MzA5ODYtMi1leHBlY3RlZC50eHQKQEAgLTEsMiArMSwyIEBACiBU
aGlzIHRlc3RzIHRvIG1ha2Ugc3VyZSB0aGF0IGNvbnRlbnQgdGhhdCBpcyBjb2xvcmVkIGJ5IHRo
ZSB1c2VyIGlzIHBhc3RlZCB3aXRoIHRoYXQgY29sb3IgZHVyaW5nIGEgUGFzdGUgYXMgUXVvdGF0
aW9uLgotPGJsb2NrcXVvdGU+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJj
b2xvcjogcmVkOyAiPlRoaXMgdGV4dCBzaG91bGQgYmUgcmVkIChpdCBzaG91bGQgYmUgd3JhcHBl
ZCBpbiBhIHN0eWxlIHNwYW4pLjwvc3Bhbj48L2Jsb2NrcXVvdGU+Cis8YmxvY2txdW90ZT48c3Bh
biBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImNvbG9yOiByZWQ7Ij5UaGlzIHRleHQg
c2hvdWxkIGJlIHJlZCAoaXQgc2hvdWxkIGJlIHdyYXBwZWQgaW4gYSBzdHlsZSBzcGFuKS48L3Nw
YW4+PC9ibG9ja3F1b3RlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkLzUwNjU2MDUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
LzUwNjU2MDUtZXhwZWN0ZWQudHh0CmluZGV4IDUxY2NkMDg3ZmNmY2VjYmM3MGY5NWI1OGM5OTc5
ZjlmZTE4N2EwNTMuLjNmNWI2N2QxZmM4MWMwY2YyNzliYmE0MDAyYWNjMGYwMWQwNzRjOTMgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC81MDY1NjA1LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvNTA2NTYwNS1leHBlY3Rl
ZC50eHQKQEAgLTIxLDcgKzIxLDcgQEAgRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5n
ZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW8KIEVESVRJTkcg
REVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5nZU5vdGlmaWNhdGlvbgog
RURJVElORyBERUxFR0FURTogc2hvdWxkSW5zZXJ0Tm9kZTojZG9jdW1lbnQtZnJhZ21lbnQgcmVw
bGFjaW5nRE9NUmFuZ2U6cmFuZ2UgZnJvbSAwIG9mIERJViA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDAgb2YgRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgZ2l2
ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0
aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOihudWxs
KSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMjQgb2YgI3RleHQgPiBGT05UID4gRElWID4gU1BBTiA+
IEZPTlQgPiBESVYgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0byAyNCBvZiAjdGV4
dCA+IEZPTlQgPiBESVYgPiBTUEFOID4gRk9OVCA+IERJViA+IERJViA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2Vs
ZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJh
bmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMjQgb2YgI3RleHQgPiBGT05UID4gRElW
ID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMjQgb2YgI3RleHQgPiBG
T05UID4gRElWID4gRElWID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgYWZmaW5pdHk6
TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rpbmc6RkFMU0UKIEVESVRJ
TkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNl
bGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpX
ZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KQEAg
LTQwLDE1ICs0MCw5IEBAIFRoaXMgdGVzdHMgZm9yIGEgYnVnIHdoZXJlIHRleHQgY29waWVkIHdp
dGggU2VsZWN0IEFsbCArIENvcHkgd291bGQgbG9zZSBpdHMgY29sCiB8ICAgPGZvbnQ+CiB8ICAg
ICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKIHwgICAgIGNvbG9yPSIjZmYwMDAwIgotfCAgICAg
PHNwYW4+Cit8ICAgICAiVGhpcyB0ZXh0IHNob3VsZCBiZSByZWQuIgorfCAgIDxkaXY+Cit8ICAg
ICA8Zm9udD4KIHwgICAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCi18ICAgICAgIHN0eWxl
PSJjb2xvcjogcmdiKDAsIDAsIDApOyAiCi18ICAgICAgIDxmb250PgotfCAgICAgICAgIGNsYXNz
PSJBcHBsZS1zdHlsZS1zcGFuIgotfCAgICAgICAgIGNvbG9yPSIjZmYwMDAwIgotfCAgICAgICAg
ICJUaGlzIHRleHQgc2hvdWxkIGJlIHJlZC4iCi18ICAgICAgIDxkaXY+Ci18ICAgICAgICAgPGZv
bnQ+Ci18ICAgICAgICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKLXwgICAgICAgICAgIGNv
bG9yPSIjZmYwMDAwIgotfCAgICAgICAgICAgIlRoaXMgdGV4dCBzaG91bGQgYmUgcmVkLjwjc2Vs
ZWN0aW9uLWNhcmV0PiIKK3wgICAgICAgY29sb3I9IiNmZjAwMDAiCit8ICAgICAgICJUaGlzIHRl
eHQgc2hvdWxkIGJlIHJlZC48I3NlbGVjdGlvbi1jYXJldD4iCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1leHBl
Y3RlZC50eHQKaW5kZXggNjQyNzhiOWU5ZjIwZjAwOTcwNThkZWU3Y2UyODJhNzg1YTEwOTI1Ni4u
NzA3NjE1YjdjYWUwNjBjYmFhZTk2ODdlNDNlNGEzMzRhOGNmNTA0MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtZXhwZWN0ZWQu
dHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0
ZW1zLWV4cGVjdGVkLnR4dApAQCAtMjAsNiArMjAsNiBAQCBUZXN0aW5nIGlmIERhdGFUcmFuc2Zl
ckl0ZW1zIGNhbiBiZSBhY2Nlc3NlZCBvdXRzaWRlIGFuIGV2ZW50IGhhbmRsZXIuLi4KIERhdGFU
cmFuc2Zlckl0ZW0gYWNjZXNzZWQgb3V0c2lkZSBldmVudCBoYW5kbGVyIQogY29weTogaXRlbXNb
MF0gdmFsdWU6IEhlbGxvIFdvcmxkIQogY29weTogaXRlbXNbMV0gdmFsdWU6IDxiPkhlbGxvIFdv
cmxkIQotcGFzdGU6IGl0ZW1zWzBdIHZhbHVlOiA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3Bh
biIgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12
YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3Jt
YWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IC13ZWJraXQt
YXV0bzsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNl
OiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1kZWNv
cmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsg
LXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgIj5UaGlz
IGZpbGUgdGVzdHMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYW5kIHByb3BlcnRpZXMgb2YgRGF0
YVRyYW5zZmVySXRlbXMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuPC9zcGFuPgorcGFzdGU6IGl0
ZW1zWzBdIHZhbHVlOiA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImNvbG9y
OiByZ2IoMCwgMCwgMCk7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7
IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0
OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgdGV4dC1pbmRl
bnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93
czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsg
LXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgZGlzcGxh
eTogaW5saW5lICFpbXBvcnRhbnQ7IGZsb2F0OiBub25lOyAiPlRoaXMgZmlsZSB0ZXN0cyB0aGUg
YmFzaWMgZnVuY3Rpb25hbGl0eSBhbmQgcHJvcGVydGllcyBvZiBEYXRhVHJhbnNmZXJJdGVtcy4g
VGhpcyB0ZXN0IHJlcXVpcmVzIERSVC48L3NwYW4+CiBwYXN0ZTogaXRlbXNbMV0gdmFsdWU6IFRo
aXMgZmlsZSB0ZXN0cyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBhbmQgcHJvcGVydGllcyBvZiBE
YXRhVHJhbnNmZXJJdGVtcy4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVuZC0xLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtMS1leHBlY3RlZC50eHQK
aW5kZXggOTJlMmYyODc1MDdiMTA3YjFhNjE2ZWU1MTk0YmM4MjhkNGFlODE2NC4uYjU5MTZmYzRl
NGE4MjAxYmM0OWViNWJmN2ZjYTk0ZGVmMDI1MmU0NSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVuZC0xLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLTEtZXhwZWN0ZWQudHh0CkBAIC0yLDcg
KzIsOSBAQCBUaGlzIHRlc3RzIHRoZSBsYXN0IHBhcmFncmFwaCBpbiB0aGUgcGFzdGVkIGZyYWdt
ZW50IGlzIG1lcmdlZCB3aXRoIHRoZSBjb250ZW50CiAiYmF6IiBhbmQgIm9vIiBzaG91bGQgYmUg
aW4gdGhlIHNhbWUgcGFyYWdyYXBoIGJlbG93LgogfCA8c3Bhbj4KIHwgICAiZiIKLXwgICAiYmFy
IgorfCAiYmFyIgorfCA8c3Bhbj4KIHwgICA8YnI+Ci18ICAgImJhejwjc2VsZWN0aW9uLWNhcmV0
PiIKK3wgImJhejwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgPHNwYW4+CiB8ICAgIm9vIgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVuZC0yLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9tZXJnZS1lbmQtMi1leHBlY3Rl
ZC50eHQKaW5kZXggYzY1Y2MyZDY2OWZiNjRhYWEwZjJlYzE2M2I5MzQ3NmI1NDFjMzhhMS4uNGQ5
ZWZkODk2MjVjYjg3YjJiYzZkODdiMjUzNGI0Zjk0ODMzOTcyYyAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL21lcmdlLWVuZC0yLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvbWVyZ2UtZW5kLTItZXhwZWN0ZWQudHh0CkBA
IC00LDcgKzQsNyBAQCBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJh
bmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gMCBvZgogRURJVElORyBERUxFR0FURTog
d2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZp
Y2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZp
ZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlv
bgotRURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZTpyYW5nZSBm
cm9tIDMgb2YgI3RleHQgPiBTUEFOID4gRElWID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
MyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJh
bmdlOnJhbmdlIGZyb20gMyBvZiAjdGV4dCA+IFNQQU4gPiBESVYgPiBCT0RZID4gSFRNTCA+ICNk
b2N1bWVudCB0byAzIG9mICN0ZXh0ID4gU1BBTiA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3Vt
ZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5n
OkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VTZWxlY3RlZERPTVJhbmdlOnJh
bmdlIGZyb20gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMg
b2YgI3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCB0b0RPTVJhbmdlOnJhbmdl
IGZyb20gMyBvZiAjdGV4dCA+IERJViA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDMgb2Yg
I3RleHQgPiBESVYgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZpbml0eTpOU1NlbGVjdGlv
bkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQogRURJVElORyBERUxFR0FU
RTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90
aWZpY2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlkQ2hhbmdlOldlYlZpZXdEaWRD
aGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxl
Y3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgpAQCAtMTMsOCArMTMs
MTAgQEAgVGhpcyB0ZXN0cyB0aGUgbGFzdCBwYXJhZ3JhcGggaW4gdGhlIHBhc3RlZCBmcmFnbWVu
dCBpcyBtZXJnZWQgd2l0aCB0aGUgY29udGVudAogImJheiIgYW5kICJvb2JhciIgc2hvdWxkIGJl
IGluIHRoZSBzYW1lIHBhcmFncmFwaCBiZWxvdwogfCA8c3Bhbj4KIHwgICAiZiIKLXwgICAiYmFy
IgorfCAiYmFyIgorfCA8c3Bhbj4KIHwgICA8YnI+Ci18ICAgImJhejwjc2VsZWN0aW9uLWNhcmV0
PiIKK3wgImJhejwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgPHNwYW4+CiB8ICAgIm9vIgogfCAiYmFy
IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4
dC1odG1sLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBh
c3RlLXRleHQtaHRtbC1leHBlY3RlZC50eHQKaW5kZXggNTA0ZmQ5ZWJmNWI5NmM2Njg3OWMwNDI5
Yjk0YjQ5ODRmMTdjOTE1MS4uZGIwODM3M2RjYWUwNWY3NzdlNDYyOTg3MDA1NDE0ZWNjYzY3Mzc5
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4
dC1odG1sLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
b25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsNSBAQAogQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDIxOiB0ZXh0L3BsYWluOiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBj
YW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZl
bnQuIAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiB0ZXh0L2h0bWw6IDxzcGFuIGNsYXNzPSJB
cHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgIGZvbnQtc3R5bGU6
IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRl
ci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQt
YWxpZ246IC13ZWJraXQtYXV0bzsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v
bmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13
ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1zaXpl
LWFkanVzdDogYXV0bzsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6
IG1lZGl1bTsgIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBm
cm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuPHNwYW4gY2xhc3M9IkFw
cGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+PC9zcGFuPgorQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDIzOiB0ZXh0L2h0bWw6IDxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0i
Y29sb3I6IHJnYigwLCAwLCAwKTsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBu
b3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUt
aGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgdGV4
dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7
IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDog
YXV0bzsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsg
ZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IGZsb2F0OiBub25lOyAiPlRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcg
YW4gb25wYXN0ZSBldmVudC48c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj7CoDwv
c3Bhbj48L3NwYW4+CiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRt
bCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuIFRoaXMgdGVzdCBy
ZXF1aXJlcyBEUlQuCiBQYXN0ZSBjb250ZW50IGluIHRoaXMgZGl2LlRoaXMgdGVzdCB2ZXJpZmll
cyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4g
b25wYXN0ZSBldmVudC7CoAogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5Nzc3LWZpeC1leHBlY3RlZC50eHQKaW5kZXggNzhk
YzRjNmNiYzZjYTJmNmMyNzdkYmZhMTI1ZWU1ZWRmNmI4Njg3Zi4uMmEyM2Q3NDAyMzBlMDUxNDky
NWQxZWY3NGRmODQ2YmUzMGQ2NjA4NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtNDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CkBAIC01
MSwxMSArNTEsMTAgQEAgQWN0dWFsIHJlc3VsdDoKICIKIHwgPHVsPgogfCAgIHN0eWxlPSJ0ZXh0
LWFsaWduOnJpZ2h0OyIKLXwgICA8dWw+Ci18ICAgICBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7
ICIKLXwgICAgIDxsaT4KLXwgICAgICAgIkEiCit8ICAgPGxpPgorfCAgICAgIkEiCiB8ICAgPGRp
dj4KK3wgICAgIHN0eWxlPSJ0ZXh0LWFsaWduOiAtd2Via2l0LWF1dG87ICIKIHwgICAgIDx1bD4K
IHwgICAgICAgPGxpPgogfCAgICAgICAgIDxhPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWFmdGVyLWlubGluZS1zdHlsZS1lbGVtZW50LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1hZnRlci1pbmxpbmUt
c3R5bGUtZWxlbWVudC1leHBlY3RlZC50eHQKaW5kZXggYzYyNzViNTZlNmU4Yjk2NTYwMzZhMGUy
YjZkZjRjOGQzMTk0YjYwZC4uNTk0NGQ1MzRhZTZiMDQyNjRmNWI3N2FjZDM4OTVjNGYzMWQ2YTc3
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWFmdGVy
LWlubGluZS1zdHlsZS1lbGVtZW50LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtYWZ0ZXItaW5saW5lLXN0eWxlLWVsZW1lbnQtZXhwZWN0ZWQu
dHh0CkBAIC00LDYgKzQsNyBAQCBUaGlzIHRlc3QgZXhoaWJpdHMgYSBidWcuIFRoZSBpbnNlcnRl
ZCBjb250ZW50IHNob3VsZCBiZSBvbiBhIHNlcGFyYXRlIGxpbmUgYnV0CiB8ICAgdHlwZT0iY2l0
ZSIKIHwgICA8Yj4KIHwgICAgICJsaW5lIDHCoCIKLXwgICAgICJsaW5lIDI8I3NlbGVjdGlvbi1j
YXJldD4iCi18ICAgICAiwqAiCit8ICAgImxpbmUgMjwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICAi
wqAiCit8ICAgPGI+CiB8ICAgICA8YnI+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAppbmRleCBh
YzgwOTdiMjVlOGU0M2MyMDEwZjY0MTIyMzdhZjEzNGQ5MWY1MzZmLi4xNDk0ZTIyZDNjMGM3M2Qw
YTYzYjdhMGRhNGFhYmQwMjYyMmZjMzAzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQKQEAg
LTMsMTAgKzMsNyBAQCBZb3Ugc2hvdWxkIHNlZSBtYXJrdXAgaW4gdGhlIGVkaXRhYmxlIHJlZ2lv
biBiZWxvdy4gU2VlIDxyZGFyOi8vNTAyNzg1Nz4uCiB8IDxwcmU+CiB8ICAgY29udGVudGVkaXRh
YmxlPSJ0cnVlIgogfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFzcz0iQXBwbGUt
c3R5bGUtc3BhbiIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNwYWNl
OiBub3JtYWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIK
LXwgICAgICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxicj5i
YXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgIDxwcmU+Cit8ICAgICBjb250ZW50
ZWRpdGFibGU9InRydWUiCit8ICAgICBpZD0icHJlIgorfCAgICAgIjxpbnB1dCB0eXBlPSdidXR0
b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQu
dHh0CmluZGV4IDYzOTcxYTQ0NDIyOGIyMDg1ZTJiMzczM2NlNTZkNDAwM2E1Zjc2OGIuLjNmMWYy
ZmY2NGRjNzY0OGUzNjliOWVlYmIxNzUxNTQxYWEyYTZiYzggMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dAorKysgYi9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQK
QEAgLTcsNCArNyw0IEBAIGJhcgogZm9vCiBiYXIKIGV4ZWNDdXRDb21tYW5kOiA8ZGl2IGlkPSJ0
ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PGJyPjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNv
bW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3BhbiBjbGFzcz0i
QXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6
IG5vcm1hbDsgIj48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2PgorZXhlY1Bh
c3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxwcmU+Zm9v
IGJhcjwvcHJlPjwvcHJlPiA8L2Rpdj4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAppbmRleCA1ODNmYTg5OGE5
NWU4MzhjZTJmNWMwYmJiYzQxZTY0NTA2MjRiOGU5Li40NGM2YTZiNDE5NmFjZWI3ZmZiMjU3OGVh
YWFjYzFmM2RjMjViYTYwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0CkBAIC0yLDQgKzIsNCBAQCBUaGlz
IGlzIGEgbGF5b3V0IHRlc3QgZm9yIHJkYXI6Ly9wcm9ibGVtLzQzNzAyMDkgIlJlcHJvZHVjaWJs
ZSBjcmFzaCB3aGVuIHBhc3RpbgogZm9vCiBiYXIKIGV4ZWNDb3B5Q29tbWFuZDogPGRpdiBpZD0i
dGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPmZvbyBiYXI8L3ByZT4gPC9kaXY+Ci1leGVjUGFz
dGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHNwYW4gY2xh
c3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNw
YWNlOiBub3JtYWw7ICI+PHByZT5mb28gYmFyPC9wcmU+PC9zcGFuPjwvcHJlPiA8L2Rpdj4KK2V4
ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48cHJl
PmZvbyBiYXI8L3ByZT48L3ByZT4gPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDExLWV4cGVjdGVkLnR4dAppbmRleCA2YTNi
YjM1MDc5OTQzODQ4OGExM2Q1YzRmMTI4YTYxNGIyNjE4YThkLi42ZGZmMmJjYTg2ZWQ3NWJkODVj
ZDYyODY3NDgyMjkxYjdlOGRhYThjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2Vk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMS1leHBlY3RlZC50eHQKQEAgLTYsNyArNiw3
IEBAIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2ViVmlld0Rp
ZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvCiBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3RGlk
Q2hhbmdlOldlYlZpZXdEaWRDaGFuZ2VOb3RpZmljYXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHNo
b3VsZEluc2VydE5vZGU6I2RvY3VtZW50LWZyYWdtZW50IHJlcGxhY2luZ0RPTVJhbmdlOnJhbmdl
IGZyb20gMCBvZiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gMCBvZiBQID4gQk9EWSA+
IEhUTUwgPiAjZG9jdW1lbnQgZ2l2ZW5BY3Rpb246V2ViVmlld0luc2VydEFjdGlvblBhc3RlZAog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbjpXZWJWaWV3RGlkQ2hh
bmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCi1FRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFuZ2VT
ZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4dCA+
IEIgPiBGT05UID4gUCA+IFNQQU4gPiBCID4gRk9OVCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1
bWVudCB0byA1IG9mICN0ZXh0ID4gQiA+IEZPTlQgPiBQID4gU1BBTiA+IEIgPiBGT05UID4gUCA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZmaW5pdHlEb3du
c3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCitFRElUSU5HIERFTEVHQVRFOiBzaG91bGRDaGFu
Z2VTZWxlY3RlZERPTVJhbmdlOihudWxsKSB0b0RPTVJhbmdlOnJhbmdlIGZyb20gNSBvZiAjdGV4
dCA+IEIgPiBGT05UID4gUCA+IEZPTlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8g
NSBvZiAjdGV4dCA+IEIgPiBGT05UID4gUCA+IEZPTlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9j
dW1lbnQgYWZmaW5pdHk6TlNTZWxlY3Rpb25BZmZpbml0eURvd25zdHJlYW0gc3RpbGxTZWxlY3Rp
bmc6RkFMU0UKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb246V2Vi
Vmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2Vi
Vmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZpY2F0aW9uCiBFRElUSU5HIERFTEVH
QVRFOiB3ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25O
b3RpZmljYXRpb24KQEAgLTI5LDIwICsyOSwxOCBAQCBUaGUgY29udGVudCB3YXMgaW5zZXJ0ZWQg
YXQgdGhlIHN0YXJ0IG9mIHRoZSBibG9jayBpbnN0ZWFkIG9mIHRoZSBlbmQuIFRoaXMgdGVzdAog
fCA8cD4KIHwgICA8Zm9udD4KIHwgICAgIGZhY2U9Ik1vbmFjbyIKLXwgICAgIDxiPgotfCAgICAg
ICA8c3Bhbj4KLXwgICAgICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKLXwgICAgICAgICBz
dHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyBmb250LXdlaWdodDogbm9ybWFsOyAiCi18ICAgICAg
ICAgPHA+Ci18ICAgICAgICAgICA8Zm9udD4KLXwgICAgICAgICAgICAgZmFjZT0iTW9uYWNvIgot
fCAgICAgICAgICAgICA8Yj4KLXwgICAgICAgICAgICAgICAiaGVsbG8iCi18ICAgICAgICAgPHA+
Ci18ICAgICAgICAgICA8Zm9udD4KLXwgICAgICAgICAgICAgZmFjZT0iTW9uYWNvIgotfCAgICAg
ICAgICAgICA8Yj4KLXwgICAgICAgICAgICAgICAidGhlcmU8I3NlbGVjdGlvbi1jYXJldD4iCit8
ICAgICA8cD4KK3wgICAgICAgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgIgorfCAgICAgICA8
Zm9udD4KK3wgICAgICAgICBmYWNlPSJNb25hY28iCit8ICAgICAgICAgPGI+Cit8ICAgICAgICAg
ICAiaGVsbG8iCit8ICAgICA8cD4KK3wgICAgICAgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsg
IgorfCAgICAgICA8Zm9udD4KK3wgICAgICAgICBmYWNlPSJNb25hY28iCit8ICAgICAgICAgPGI+
Cit8ICAgICAgICAgICAidGhlcmU8I3NlbGVjdGlvbi1jYXJldD4iCiB8ICIKIAogCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4
cGVjdGVkLnR4dAppbmRleCA1MmJiMzU4M2Y4OGRhODMxMWM0NWYyMDM3ZmEyZmJmYmQ1OWM1MmZl
Li4xMTM4ZGRkMmQ2ZDBkMTk1ZWYyZWNhMjU0NGJiYWU4ZjcwNjE3MTU2IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0ZWQudHh0
CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMi1leHBl
Y3RlZC50eHQKQEAgLTYsNCArNiw0IEBAIGZvbwogZm9vCiAKIGV4ZWNDb3B5Q29tbWFuZDogPGRp
diBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1
b3RlPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlZGl0aW5nIj48L2Rpdj4KLWV4ZWNQYXN0ZUNv
bW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZv
bzwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PHNwYW4gY2xh
c3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJmb250LXNpemU6IG1lZGl1bTsgIj48ZGl2IGlk
PSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2NrcXVvdGU+
PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9zcGFuPjwvZGl2PgorZXhlY1Bhc3RlQ29tbWFu
ZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9i
bG9ja3F1b3RlPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlZGl0aW5nIj48ZGl2IGlkPSJ0ZXN0
IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+
PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtd2l0aC1yZWR1bmRhbnQtc3R5bGUtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXdpdGgtcmVkdW5kYW50LXN0eWxl
LWV4cGVjdGVkLnR4dAppbmRleCA1YjgxNWY4ZDdmNDJkYTgzYjcyZTU0MjNjM2I4M2YzNGI5YWRj
NWY4Li41NmUzYWY0ZmM3M2FjYWJkYWIwZWYwMjIyNzRhMGNmNWI4MDJmMGJjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtd2l0aC1yZWR1bmRhbnQtc3R5
bGUtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS13aXRoLXJlZHVuZGFudC1zdHlsZS1leHBlY3RlZC50eHQKQEAgLTEsMTIgKzEsMTUgQEAKIFRo
aXMgdGVzdHMgcGFzdGluZyBjb250ZW50IHdpdGggcmVkdW5kYW50IGlubGluZSBzdHlsZS4KIFlv
dSBzaG91bGQgbm90IHNlZSBhbnkgc3R5bGUgYXR0cmlidXRlcyBleGNlcHQgb25lIG9uIHRoZSBi
IGVsZW1lbnQgYW5kIHRoZXJlIHNob3VsZCBiZSBubyBzcGFucy4KK3wgPGVtPgorfCAgIHN0eWxl
PSJmb250LXdlaWdodDogYm9sZDsgIgorfCAgICJoZWxsbyB3b3JsZCIKK3wgPGJyPgorfCA8c3Bh
bj4KK3wgICBzdHlsZT0iZm9udC13ZWlnaHQ6IGJvbGQ7IgorfCAgICJXZWJLaXQiCit8IDxicj4K
K3wgPGVtPgorfCAgICJyb2Nrczwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgPGI+CiB8ICAgc3R5bGU9
ImZvbnQtc3R5bGU6IGl0YWxpYzsiCi18ICAgPGVtPgotfCAgICAgImhlbGxvIHdvcmxkIgotfCAg
IDxicj4KLXwgICAiV2ViS2l0IgotfCAgIDxicj4KLXwgICA8ZW0+Ci18ICAgICAicm9ja3M8I3Nl
bGVjdGlvbi1jYXJldD4iCiB8ICAgPGJyPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDVjYzUyZDI0OGVhYWY4ZGU5ODdlZmZjMzI4Y2UxYmVmZTkwYzE3NjAuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4
dAorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVRlc3RzOiAKLUNvcHlpbmcgYW5kIHBh
c3RpbmcgY29udGVudCBpbnNpZGUgb2YgYSBQUkUgdGFnLiBUaGlzIHRlc3Qgd2FzIGNyZWF0ZWQg
YWZ0ZXIgZml4aW5nIDM5MTgwNTYuCi1FeHBlY3RlZCBSZXN1bHRzOiAKLVRoZSBQUkUgdGFnIGFu
ZCB0aGUgZm9ybWF0dGluZyBvZiB0aGUgdGV4dCBpbnNpZGUgb2YgdGhlIFBSRSBzaG91bGQgYmUg
bWFpbnRhaW5lZC4gU2hvdWxkIHNlZSB0aGlzIGNvbnRlbnQgaW4gdGhlIHJlZCBib3ggYmVsb3c6
Ci1mb28KLWJhcgotZm9vCi1iYXIKLWV4ZWNDdXRDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFz
cz0iZWRpdGluZyI+IDxwcmU+PGJyPjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxk
aXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5
bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAndGltZXMgbmV3IHJvbWFuJzsgd2hpdGUtc3Bh
Y2U6IG5vcm1hbDsgIj48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2No
cm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NDAzMjZiNzYxOTUwNTdlMDJjZTcyOTBm
ZWEzMWQyYzI3ZTUyYWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBA
QAotVGhpcyBpcyBhIGxheW91dCB0ZXN0IGZvciByZGFyOi8vcHJvYmxlbS80MzcwMjA5ICJSZXBy
b2R1Y2libGUgY3Jhc2ggd2hlbiBwYXN0aW5nIG92ZXIgd2hpdGVzcGFjZTpwcmUgdGV4dCIuIFRo
ZSB0ZXh0IGJlbG93IGlzIHNlbGVjdGVkLCBjb3BpZWQsIGFuZCBwYXN0ZWQgb3ZlciBpdHNlbGYu
IFlvdSdsbCBzZWUgZm9vL25iYXIgaWYgc3VjY2Vzc2Z1bC4KLWZvbwotYmFyCi1leGVjQ29weUNv
bW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT5mb28gYmFyPC9wcmU+
IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmci
PiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1pbHk6
ICd0aW1lcyBuZXcgcm9tYW4nOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9vIGJhcjwv
cHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDExLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0CmluZGV4IDQ4MzI4ZTY3NjhlZWJlMTIzNWY3
YzlkOGZmMzcwOWRhMzI1OTUzY2EuLjg2YTIyYzJkYjBiNTE2YmFhYWJlN2Y0MWI4ZWY1YmYwYjZk
MWNjOGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTEtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0w
MTEtZXhwZWN0ZWQudHh0CkBAIC02LDcgKzYsNyBAQCBFRElUSU5HIERFTEVHQVRFOiB3ZWJWaWV3
RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmljYXRpbwog
RURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZTpXZWJWaWV3RGlkQ2hhbmdlTm90aWZp
Y2F0aW9uCiBFRElUSU5HIERFTEVHQVRFOiBzaG91bGRJbnNlcnROb2RlOiNkb2N1bWVudC1mcmFn
bWVudCByZXBsYWNpbmdET01SYW5nZTpyYW5nZSBmcm9tIDAgb2YgUCA+IEJPRFkgPiBIVE1MID4g
I2RvY3VtZW50IHRvIDAgb2YgUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGdpdmVuQWN0aW9u
OldlYlZpZXdJbnNlcnRBY3Rpb25QYXN0ZWQKIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRD
aGFuZ2VTZWxlY3Rpb246V2ViVmlld0RpZENoYW5nZVNlbGVjdGlvbk5vdGlmaWNhdGlvbgotRURJ
VElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9ET01S
YW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBCID4gRk9OVCA+IFAgPiBTUEFOID4gQiA+IEZP
TlQgPiBQID4gQk9EWSA+IEhUTUwgPiAjZG9jdW1lbnQgdG8gNSBvZiAjdGV4dCA+IEIgPiBGT05U
ID4gUCA+IFNQQU4gPiBCID4gRk9OVCA+IFAgPiBCT0RZID4gSFRNTCA+ICNkb2N1bWVudCBhZmZp
bml0eTpOU1NlbGVjdGlvbkFmZmluaXR5RG93bnN0cmVhbSBzdGlsbFNlbGVjdGluZzpGQUxTRQor
RURJVElORyBERUxFR0FURTogc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZToobnVsbCkgdG9E
T01SYW5nZTpyYW5nZSBmcm9tIDUgb2YgI3RleHQgPiBCID4gRk9OVCA+IFAgPiBGT05UID4gUCA+
IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IHRvIDUgb2YgI3RleHQgPiBCID4gRk9OVCA+IFAgPiBG
T05UID4gUCA+IEJPRFkgPiBIVE1MID4gI2RvY3VtZW50IGFmZmluaXR5Ok5TU2VsZWN0aW9uQWZm
aW5pdHlEb3duc3RyZWFtIHN0aWxsU2VsZWN0aW5nOkZBTFNFCiBFRElUSU5HIERFTEVHQVRFOiB3
ZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uOldlYlZpZXdEaWRDaGFuZ2VTZWxlY3Rpb25Ob3RpZmlj
YXRpb24KIEVESVRJTkcgREVMRUdBVEU6IHdlYlZpZXdEaWRDaGFuZ2U6V2ViVmlld0RpZENoYW5n
ZU5vdGlmaWNhdGlvbgogRURJVElORyBERUxFR0FURTogd2ViVmlld0RpZENoYW5nZVNlbGVjdGlv
bjpXZWJWaWV3RGlkQ2hhbmdlU2VsZWN0aW9uTm90aWZpY2F0aW9uCkBAIC0yOSwyMCArMjksMTgg
QEAgVGhlIGNvbnRlbnQgd2FzIGluc2VydGVkIGF0IHRoZSBzdGFydCBvZiB0aGUgYmxvY2sgaW5z
dGVhZCBvZiB0aGUgZW5kLiBUaGlzIHRlc3QKIHwgPHA+CiB8ICAgPGZvbnQ+CiB8ICAgICBmYWNl
PSJNb25hY28iCi18ICAgICA8Yj4KLXwgICAgICAgPHNwYW4+Ci18ICAgICAgICAgY2xhc3M9IkFw
cGxlLXN0eWxlLXNwYW4iCi18ICAgICAgICAgc3R5bGU9ImZvbnQtZmFtaWx5OiAndGltZXMgbmV3
IHJvbWFuJzsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgIgotfCAgICAgICAgIDxwPgotfCAgICAgICAg
ICAgPGZvbnQ+Ci18ICAgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKLXwgICAgICAgICAgICAgPGI+
Ci18ICAgICAgICAgICAgICAgImhlbGxvIgotfCAgICAgICAgIDxwPgotfCAgICAgICAgICAgPGZv
bnQ+Ci18ICAgICAgICAgICAgIGZhY2U9Ik1vbmFjbyIKLXwgICAgICAgICAgICAgPGI+Ci18ICAg
ICAgICAgICAgICAgInRoZXJlPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgICAgPHA+Cit8ICAgICAg
IHN0eWxlPSJmb250LWZhbWlseTogJ3RpbWVzIG5ldyByb21hbic7ICIKK3wgICAgICAgPGZvbnQ+
Cit8ICAgICAgICAgZmFjZT0iTW9uYWNvIgorfCAgICAgICAgIDxiPgorfCAgICAgICAgICAgImhl
bGxvIgorfCAgICAgPHA+Cit8ICAgICAgIHN0eWxlPSJmb250LWZhbWlseTogJ3RpbWVzIG5ldyBy
b21hbic7ICIKK3wgICAgICAgPGZvbnQ+Cit8ICAgICAgICAgZmFjZT0iTW9uYWNvIgorfCAgICAg
ICAgIDxiPgorfCAgICAgICAgICAgInRoZXJlPCNzZWxlY3Rpb24tY2FyZXQ+IgogfCAiCiAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IGU3M2IzZWNhZmZjYjgwZDE2OTc0NThmMmNkZTY0ODNlYzA5ZTI0NWMuLjlm
ZGFjZTgzMDNkMzRjMDkzZjA3ZmJhNTMxYTRmOGJlZjM5OGViZGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NiBAQAorMjAxMS0wOC0wOCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb3B5aW5n
IGNhbiByZXN1bHQgaW4gPHNwYW4+IHRhZ3MgYXJvdW5kIGJsb2NrIGVsZW1lbnRzIG9uIHRoZSBj
bGlwYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTM0NTY0CisKKyAgICAgICAgQ29tcGxldGVseSBvdmVyaGF1bGVkIHRoZSB3YXkgV2ViS2l0IHBy
ZXNlcnZlcyBzdHlsZSBpbiBjb3B5ICYgcGFzdGUuCisKKyAgICAgICAgSW5zdGVhZCBvZiB3cmFw
cGluZyB0aGUgZW50aXJlIHNlcmlhbGl6ZWQgY29udGVudHMgYnkgYSBBcHBsZSBzdHlsZSBzcGFu
LCB3ZSBub3cgYWRkIGlubGluZSBzdHlsZQorICAgICAgICBkZWNsYXJhdGlvbiB0byB0aGUgdG9w
IGxldmVsIGVsZW1lbnRzLCB3cmFwIHRvcCBsZXZlbCB0ZXh0IG5vZGVzIGJ5IGEgc3R5bGUgc3Bh
bi4KKworICAgICAgICBJbiBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZCwgd2UgY2xlYW51cCB0aGVz
ZSBpbmxpbmUgc3R5bGUgZGVjbGFyYXRpb25zIGZyb20gZWFjaCBub2RlLgorCisgICAgICAgICog
Y3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU3R5bGVTZWxl
Y3Rvcjo6cHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQpOiBhdXRob3IgYW5kIHVzZXIgc3R5bGVz
aGVldHMgb25seSBpZgorICAgICAgICBBdXRob3JDU1NSdWxlcyBpcyBzZXQgaW4gcnVsZXNUb0lu
Y2x1ZGUuCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyk6IFJl
bW92ZSB0ZXh0LWRlY29yYXRpb24gcHJvcGVydHkgd2hlbgorICAgICAgICB0aGUgdmFsdWUgb2Yg
LXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCBpcyBub25lLgorICAgICAgICAoV2Vi
Q29yZTo6c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzRm9yRWxlbWVudCk6IFRha2VzIHJ1bGVzVG9JbmNs
dWRlIGZvciBzdHlsZVJ1bGVzRm9yRWxlbWVudC4KKyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdT
dHlsZTo6bWVyZ2VTdHlsZUZyb21SdWxlcyk6IENhbGxzIHN0eWxlRnJvbU1hdGNoZWRSdWxlc0Zv
ckVsZW1lbnQgd2l0aAorICAgICAgICBDU1NTdHlsZVNlbGVjdG9yOjpBdXRob3JDU1NSdWxlcyB8
IENTU1N0eWxlU2VsZWN0b3I6OkNyb3NzT3JpZ2luQ1NTUnVsZXMgYXMgaXQgdXNlZCB0byBkby4K
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRpbmdTdHlsZTo6cmVtb3ZlU3R5bGVGcm9tUnVsZXNBbmRD
b250ZXh0KTogQWRkZWQ7IHJlbW92ZXMgcmVkdW5kYW50IHN0eWxlIGluCisgICAgICAgIFJlcGxh
Y2VTZWxlY3Rpb25Db21tYW5kLgorICAgICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1v
dmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKTogQWRkZWQuCisgICAgICAgIChXZWJD
b3JlOjpFZGl0aW5nU3R5bGU6OmZvcmNlSW5saW5lKTogQWRkZWQ7IGFkZHMgZGlzcGxheTogaW5s
aW5lOworICAgICAgICAoV2ViQ29yZTo6Z2V0UHJvcGVydGllc05vdEluKTogTm8gbG9uZ2VyIHJl
bW92ZXMgcHJvcGVydGllcyBiYXNlU3R5bGUgZGlkbid0IGhhdmUuCisgICAgICAgICogZWRpdGlu
Zy9FZGl0aW5nU3R5bGUuaDoKKyAgICAgICAgKiBlZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21t
YW5kLmNwcDogUmVtb3ZlZCBoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uLCBoYW5kbGVT
dHlsZVNwYW5zLAorICAgICAgICBhbmQgY29weVN0eWxlVG9DaGlsZHJlbi4KKyAgICAgICAgKFdl
YkNvcmU6OlJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpyZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRL
ZWVwU3R5bGVTcGFuSW5saW5lKTogUmV3cml0dGVuOworICAgICAgICBCZWNhdXNlIHdlIGZvcmNl
IHNwYW5zIHRvIGJlIGlubGluZSBpbiBzZXJpYWxpemF0aW9uIGNvZGUgKFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjphcHBlbmRUZXh0KSwKKyAgICAgICAgd2Ugbm8gbG9uZ2VyIGhhdmUgdG8gYWRk
IGRpc3BsYXk6IGlubGluZSBhbmQgZmxvYXQ6IG5vbmUgaGVyZS4gTW92ZWQgbG9naWMgdG8gZGVh
bCB3aXRoIHBhc3RlCisgICAgICAgIGFzIHF1b3RhdGlvbiBmcm9tIGhhbmRsZVN0eWxlU3BhbnMu
IEFsc28gcmVtb3ZlcyBlbXB0eSBzdHlsZSBzcGFucyBsaWtlIHdlIHVzZWQgdG8gZG8gaW4KKyAg
ICAgICAgaGFuZGxlU3R5bGVTcGFucy4KKyAgICAgICAgKFdlYkNvcmU6OlJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpkb0FwcGx5KTogSW4gdGhlIGxvZ2ljIHRvIGF2b2lkIHN0eWxlIGVsZW1lbnRz
LCBkb24ndCBsZXQKKyAgICAgICAgaXNJbmxpbmVOb2RlV2l0aFN0eWxlIGdvIHBhc3MgZW5jbG9z
aW5nIGJsb2NrIGVsZW1lbnRzOyBubyBsb25nZXIgY2FsbHMgaGFuZGxlU3R5bGVTcGFucyBvcgor
ICAgICAgICBoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uLgorICAgICAgICAqIGVkaXRp
bmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaDoKKyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0
aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKTog
VGFrZXMgbm9kZSB0byBzdGF5IHdpdGhpbiBsaWtlIG5vZGUgdHJhdmVyc2FsIGZ1bmN0aW9ucy4K
KyAgICAgICAgKiBlZGl0aW5nL2h0bWxlZGl0aW5nLmg6CisgICAgICAgICogZWRpdGluZy9tYXJr
dXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNob3Vs
ZEFwcGx5V3JhcHBpbmdTdHlsZSk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFy
a3VwQWNjdW11bGF0b3I6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yKTogVGFrZXMgaGlnaGVzdE5v
ZGVUb0JlU2VyaWFsaXplZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxh
dG9yOjp3cmFwV2l0aFN0eWxlTm9kZSk6IENhbGxzIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcgYW5k
IAorICAgICAgICBzdHlsZU5vZGVDbG9zZVRhZy4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlZE1h
cmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKTogRXh0cmFjdGVkIGZyb20g
d3JhcFdpdGhTdHlsZU5vZGUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVs
YXRvcjo6c3R5bGVOb2RlQ2xvc2VUYWcpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRUZXh0KTogV3JhcHMgdGV4dCBub2RlIHdpdGggYSBz
dHlsZSBzcGFuIGlmIG5lZWRlZC4KKyAgICAgICAgU2V0IGRpc3BsYXk6IGlubGluZSBhbmQgZmxv
YXQ6IG5vbmUgc28gdGhhdCBpdCB3b24ndCBiZSBjb252ZXJ0ZWQgdG8gYSBibG9jayBvbiBwYXN0
ZSBzaWRlLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVu
ZEVsZW1lbnQpOiBBZGQgd3JhcHBpbmcgc3R5bGUgaWYgYXBwcm9wcmlhdGUuCisgICAgICAgIFdl
IHJlbW92ZSBhbnkgcHJvcGVydGllcyB0aGF0IGFyZSBvdmVycmlkZGVuIGJ5IGRlZmF1bHQgc3R5
bGUgYW5kIGFueSBzdHlsZSB0aGF0IG1heSBjb25mbGljdAorICAgICAgICB3aXRoIHRoZSBjb21w
dXRlZCBzdHlsZSBvZiBub2RlIHRvIGF2b2lkIG1vZGlmeWluZyB0aGUgYXBwZWFyYW5jZSBvZiBz
ZXJpYWxpemVkIG5vZGVzLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OnNlcmlhbGl6ZU5vZGVzKTogQ29tcHV0ZSB3cmFwcGluZyBzdHlsZTsgY29waWVzIG9mIHRo
aXMKKyAgICAgICAgc3R5bGUgYXJlIG1vZGlmaWVkIGFzIG5lZWRlZCB3aGVuIHNlcmlhbGl6aW5n
IHRvcC1sZXZlbCBlbGVtZW50cyBvciB0ZXh0IG5vZGVzLiBXZSBjYWxsCisgICAgICAgIHRyYXZl
cnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uIHdpdGggc2hvdWxkRW1pdCBzZXQgZmFsc2UgZmlyc3Qg
dG8gY29tcHV0ZSB0aGUgaGlnaGVzdCBub2RlIHRvCisgICAgICAgIGJlIHNlcmlhbGl6ZWQuIFRo
ZSBzZWNvbmQgY2FsbCB0byB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbiB3aWxsIHNlcmlh
bGl6ZSB0aGUgbm9kZXMuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24pOiBFeHRyYWN0ZWQgZnJvbQorICAgICAg
ICBzZXJpYWxpemVOb2Rlczsgb3V0cHV0cyBzdHJpbmcgb25seSBpZiBzaG91bGRFbWl0IGlzIHRy
dWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVNYXJrdXApOiBObyBsb25nZXIgYWRkcyB3cmFw
cGluZyBzcGFucy4KKwogMjAxMS0wOC0wOCAgRW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgU3dpdGNoIFJlbmRlclN0eWxlIHRvIHRvIG5ldyBsYXlvdXQgdHlwZXMK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAppbmRleCA0ODg0NzI5NTljZDdm
N2E2ZTU1MzkxYjA0MmViNGNkOWMyY2Y2Y2JkLi4zMThkYzFhZTczNjI5Mzc5NWJhOWFjNDI5ZWZi
ZmUyMDFhNmE3N2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdT
dHlsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCkBA
IC01NTQsNyArNTU0LDEwIEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0
aW9uUHJvcGVydGllcygpCiAgICAgaWYgKCF0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5
VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0aW9uc0luRWZmZWN0LT5jc3NUZXh0KCksIG1fbXV0
YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24p
KTsKKyAgICBpZiAodGV4dERlY29yYXRpb25zSW5FZmZlY3QtPmlzVmFsdWVMaXN0KCkpCisgICAg
ICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9u
LCB0ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdC0+Y3NzVGV4dCgpLCBtX211dGFibGVTdHlsZS0+Z2V0
UHJvcGVydHlQcmlvcml0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKSk7CisgICAgZWxzZQor
ICAgICAgICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVj
b3JhdGlvbik7CiAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5
V2Via2l0VGV4dERlY29yYXRpb25zSW5FZmZlY3QpOwogfQogCkBAIC04ODcsOSArODkwLDE4IEBA
IHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVk
RWxlbWVudCogZWxlbWVudCwgTm9kZSoKICAgICAgICAgY29tcHV0ZWRTdHlsZS0+cmVtb3ZlUHJv
cGVydGllc0luRWxlbWVudERlZmF1bHRTdHlsZShlbGVtZW50KTsKICAgICAgICAgbV9tdXRhYmxl
U3R5bGUgPSBnZXRQcm9wZXJ0aWVzTm90SW4obV9tdXRhYmxlU3R5bGUuZ2V0KCksIGNvbXB1dGVk
U3R5bGUtPm1fbXV0YWJsZVN0eWxlLmdldCgpKTsKICAgICB9CisKKyAgICAvLyAzLiBJZiB0aGlz
IGVsZW1lbnQgaXMgYSBzcGFuIGFuZCBoYXMgZGlzcGxheTogaW5saW5lIG9yIGZsb2F0OiBub25l
LCByZW1vdmUgdGhlbSB1bmxlc3MgdGhleSBhcmUgb3ZlcnJpZGVuIGJ5IHJ1bGVzLgorICAgIC8v
IFRoZXNlIHJ1bGVzIGFyZSBhZGRlZCBieSBzZXJpYWxpemF0aW9uIGNvZGUgdG8gd3JhcCB0ZXh0
IG5vZGVzLgorICAgIGlmIChpc1N0eWxlU3BhbihlbGVtZW50KSkgeworICAgICAgICBpZiAoIXN0
eWxlRnJvbU1hdGNoZWRSdWxlcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eURpc3Bs
YXkpICYmIGdldElkZW50aWZpZXJWYWx1ZShtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTUHJvcGVy
dHlEaXNwbGF5KSA9PSBDU1NWYWx1ZUlubGluZSkKKyAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxl
LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXkpOworICAgICAgICBpZiAoIXN0eWxl
RnJvbU1hdGNoZWRSdWxlcy0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUZsb2F0KSAm
JiBnZXRJZGVudGlmaWVyVmFsdWUobV9tdXRhYmxlU3R5bGUuZ2V0KCksIENTU1Byb3BlcnR5Rmxv
YXQpID09IENTU1ZhbHVlTm9uZSkKKyAgICAgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0KTsKKyAgICB9CiB9CiAKLXZvaWQgRWRpdGluZ1N0eWxl
OjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKFN0eWxlZEVsZW1lbnQqIGVs
ZW1lbnQpCit2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1
bHRTdHlsZShFbGVtZW50KiBlbGVtZW50KQogewogICAgIGlmICghbV9tdXRhYmxlU3R5bGUgfHwg
IW1fbXV0YWJsZVN0eWxlLT5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuOwpAQCAtOTA0LDYgKzkx
NiwxNCBAQCB2b2lkIEVkaXRpbmdTdHlsZTo6cmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1
bHRTdHlsZShTdHlsZWRFbGVtZW50KiBlbGVtZW50KQogCiAgICAgbV9tdXRhYmxlU3R5bGUtPnJl
bW92ZVByb3BlcnRpZXNJblNldChwcm9wZXJ0aWVzVG9SZW1vdmUuZGF0YSgpLCBwcm9wZXJ0aWVz
VG9SZW1vdmUuc2l6ZSgpKTsKIH0KKwordm9pZCBFZGl0aW5nU3R5bGU6OmZvcmNlSW5saW5lKCkK
K3sKKyAgICBpZiAoIW1fbXV0YWJsZVN0eWxlKQorICAgICAgICBtX211dGFibGVTdHlsZSA9IENT
U011dGFibGVTdHlsZURlY2xhcmF0aW9uOjpjcmVhdGUoKTsKKyAgICBjb25zdCBib29sIHByb3Bl
cnR5SXNJbXBvcnRhbnQgPSB0cnVlOworICAgIG1fbXV0YWJsZVN0eWxlLT5zZXRQcm9wZXJ0eShD
U1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCBwcm9wZXJ0eUlzSW1wb3J0YW50KTsK
K30KICAgICAKIAogc3RhdGljIHZvaWQgcmVjb25jaWxlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVz
KENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSkKQEAgLTExMDgsMTMgKzExMjgsMTMg
QEAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBnZXRQcm9wZXJ0aWVzTm90SW4o
Q1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUKICAgICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3Vs
dC5nZXQoKSwgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgYmFzZVRleHREZWNvcmF0aW9uc0lu
RWZmZWN0LmdldCgpKTsKICAgICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCwgYmFzZVRleHREZWNvcmF0aW9u
c0luRWZmZWN0LmdldCgpKTsKIAotICAgIGlmIChmb250V2VpZ2h0SXNCb2xkKHJlc3VsdC5nZXQo
KSkgPT0gZm9udFdlaWdodElzQm9sZChiYXNlU3R5bGUpKQorICAgIGlmIChiYXNlU3R5bGUtPmdl
dFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U2l6ZSkgJiYgZm9udFdlaWdodElzQm9s
ZChyZXN1bHQuZ2V0KCkpID09IGZvbnRXZWlnaHRJc0JvbGQoYmFzZVN0eWxlKSkKICAgICAgICAg
cmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwogCi0gICAgaWYg
KGdldFJHQkFGb250Q29sb3IocmVzdWx0LmdldCgpKSA9PSBnZXRSR0JBRm9udENvbG9yKGJhc2VT
dHlsZSkpCisgICAgaWYgKGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0
eUNvbG9yKSAmJiBnZXRSR0JBRm9udENvbG9yKHJlc3VsdC5nZXQoKSkgPT0gZ2V0UkdCQUZvbnRD
b2xvcihiYXNlU3R5bGUpKQogICAgICAgICByZXN1bHQtPnJlbW92ZVByb3BlcnR5KENTU1Byb3Bl
cnR5Q29sb3IpOwogCi0gICAgaWYgKGdldFRleHRBbGlnbm1lbnQocmVzdWx0LmdldCgpKSA9PSBn
ZXRUZXh0QWxpZ25tZW50KGJhc2VTdHlsZSkpCisgICAgaWYgKGJhc2VTdHlsZS0+Z2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVRleHRBbGlnbikgJiYgZ2V0VGV4dEFsaWdubWVudChyZXN1
bHQuZ2V0KCkpID09IGdldFRleHRBbGlnbm1lbnQoYmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0
LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGlnbik7CiAKICAgICByZXR1cm4gcmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgKaW5kZXggZDcyZWRiNzQ3ZWMy
OGYzNmI4ZjZlMTRkN2JiMGNhMTkwYjYzMWE4MC4uODk0Njg3NDdmM2I3OTkzNzY1ZjcxNTc5NzU3
N2UxNGY4MTEwNzkzYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5n
U3R5bGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCkBAIC00
Nyw2ICs0Nyw3IEBAIGNsYXNzIENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uOwogY2xhc3MgQ1NT
UHJpbWl0aXZlVmFsdWU7CiBjbGFzcyBDU1NWYWx1ZTsKIGNsYXNzIERvY3VtZW50OworY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIEhUTUxFbGVtZW50OwogY2xhc3MgTm9kZTsKIGNsYXNzIFBvc2l0aW9u
OwpAQCAtMTIzLDYgKzEyNCw4IEBAIHB1YmxpYzoKICAgICB2b2lkIG1lcmdlU3R5bGVGcm9tUnVs
ZXMoU3R5bGVkRWxlbWVudCopOwogICAgIHZvaWQgbWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlh
bGl6YXRpb24oU3R5bGVkRWxlbWVudCopOwogICAgIHZvaWQgcmVtb3ZlU3R5bGVGcm9tUnVsZXNB
bmRDb250ZXh0KFN0eWxlZEVsZW1lbnQqLCBOb2RlKiBjb250ZXh0KTsKKyAgICB2b2lkIHJlbW92
ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoRWxlbWVudCopOworICAgIHZvaWQgZm9y
Y2VJbmxpbmUoKTsKIAogICAgIGZsb2F0IGZvbnRTaXplRGVsdGEoKSBjb25zdCB7IHJldHVybiBt
X2ZvbnRTaXplRGVsdGE7IH0KICAgICBib29sIGhhc0ZvbnRTaXplRGVsdGEoKSBjb25zdCB7IHJl
dHVybiBtX2ZvbnRTaXplRGVsdGEgIT0gTm9Gb250RGVsdGE7IH0KQEAgLTE0MSw3ICsxNDQsNiBA
QCBwcml2YXRlOgogICAgIHZvaWQgZXh0cmFjdEZvbnRTaXplRGVsdGEoKTsKICAgICBib29sIGNv
bmZsaWN0c1dpdGhJbmxpbmVTdHlsZU9mRWxlbWVudChTdHlsZWRFbGVtZW50KiwgRWRpdGluZ1N0
eWxlKiBleHRyYWN0ZWRTdHlsZSwgVmVjdG9yPENTU1Byb3BlcnR5SUQ+KiBjb25mbGljdGluZ1By
b3BlcnRpZXMpIGNvbnN0OwogICAgIHZvaWQgbWVyZ2VTdHlsZShDU1NNdXRhYmxlU3R5bGVEZWNs
YXJhdGlvbiopOwotICAgIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1bHRTdHls
ZShTdHlsZWRFbGVtZW50Kik7CiAKICAgICBSZWZQdHI8Q1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRp
b24+IG1fbXV0YWJsZVN0eWxlOwogICAgIGJvb2wgbV9zaG91bGRVc2VGaXhlZERlZmF1bHRGb250
U2l6ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29t
bWFuZC5jcHAKaW5kZXggMzA4NzIzNTk0ZDg2NmNiZjY5ZjA3MWMwYzQ3MTVjOGU4MjRjNzU0Mi4u
NDVmNGM2NmM0OGMyYmIzNDcwZDBhNTc0ODM5MzZjZGRiY2MzMWExOCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKQEAgLTc2LDcg
Kzc2LDcgQEAgcHVibGljOgogICAgIAogICAgIGJvb2wgaGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRT
dGFydCgpIGNvbnN0IHsgcmV0dXJuIG1faGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRTdGFydDsgfQog
ICAgIGJvb2wgaGFzSW50ZXJjaGFuZ2VOZXdsaW5lQXRFbmQoKSBjb25zdCB7IHJldHVybiBtX2hh
c0ludGVyY2hhbmdlTmV3bGluZUF0RW5kOyB9Ci0gICAgCisKICAgICB2b2lkIHJlbW92ZU5vZGUo
UGFzc1JlZlB0cjxOb2RlPik7CiAgICAgdm9pZCByZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVu
KE5vZGUqKTsKIApAQCAtNjAzLDEyMSArNjAzLDYgQEAgc3RhdGljIHZvaWQgcmVtb3ZlSGVhZENv
bnRlbnRzKFJlcGxhY2VtZW50RnJhZ21lbnQmIGZyYWdtZW50KQogICAgIH0KIH0KIAotLy8gUmVt
b3ZlIHN0eWxlIHNwYW5zIGJlZm9yZSBpbnNlcnRpb24gaWYgdGhleSBhcmUgdW5uZWNlc3Nhcnku
ICBJdCdzIGZhc3RlciBiZWNhdXNlIHdlJ2xsIAotLy8gYXZvaWQgZG9pbmcgYSBsYXlvdXQuCi1z
dGF0aWMgYm9vbCBoYW5kbGVTdHlsZVNwYW5zQmVmb3JlSW5zZXJ0aW9uKFJlcGxhY2VtZW50RnJh
Z21lbnQmIGZyYWdtZW50LCBjb25zdCBQb3NpdGlvbiYgaW5zZXJ0aW9uUG9zKQotewotICAgIE5v
ZGUqIHRvcE5vZGUgPSBmcmFnbWVudC5maXJzdENoaWxkKCk7Ci0KLSAgICAvLyBIYW5kbGluZyB0
aGUgY2FzZSB3aGVyZSB3ZSBhcmUgZG9pbmcgUGFzdGUgYXMgUXVvdGF0aW9uIG9yIHBhc3Rpbmcg
aW50byBxdW90ZWQgY29udGVudCBpcyBtb3JlIGNvbXBsaWNhdGVkIChzZWUgaGFuZGxlU3R5bGVT
cGFucykKLSAgICAvLyBhbmQgZG9lc24ndCByZWNlaXZlIHRoZSBvcHRpbWl6YXRpb24uCi0gICAg
aWYgKGlzTWFpbFBhc3RlQXNRdW90YXRpb25Ob2RlKHRvcE5vZGUpIHx8IGVuY2xvc2luZ05vZGVP
ZlR5cGUoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHRvcE5vZGUpLCBpc01haWxCbG9ja3F1
b3RlLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIC8vIEVpdGhlciB0aGVyZSBhcmUgbm8gc3R5bGUgc3BhbnMgaW4gdGhlIGZyYWdtZW50IG9y
IGEgV2ViS2l0IGNsaWVudCBoYXMgYWRkZWQgY29udGVudCB0byB0aGUgZnJhZ21lbnQKLSAgICAv
LyBiZWZvcmUgaW5zZXJ0aW5nIGl0LiAgTG9vayBmb3IgYW5kIGhhbmRsZSBzdHlsZSBzcGFucyBh
ZnRlciBpbnNlcnRpb24uCi0gICAgaWYgKCFpc1N0eWxlU3Bhbih0b3BOb2RlKSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgTm9kZSogd3JhcHBpbmdTdHlsZVNwYW4gPSB0b3BOb2RlOwot
ICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlQXRJbnNlcnRpb25Qb3MgPSBFZGl0aW5nU3R5
bGU6OmNyZWF0ZShpbnNlcnRpb25Qb3MucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAg
IFN0cmluZyBzdHlsZVRleHQgPSBzdHlsZUF0SW5zZXJ0aW9uUG9zLT5zdHlsZSgpLT5jc3NUZXh0
KCk7Ci0KLSAgICAvLyBGSVhNRTogVGhpcyBzdHJpbmcgY29tcGFyaXNvbiBpcyBhIG5haXZlIHdh
eSBvZiBjb21wYXJpbmcgdHdvIHN0eWxlcy4KLSAgICAvLyBXZSBzaG91bGQgYmUgdGFraW5nIHRo
ZSBkaWZmIGFuZCBjaGVjayB0aGF0IHRoZSBkaWZmIGlzIGVtcHR5LgotICAgIGlmIChzdHlsZVRl
eHQgIT0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHdyYXBwaW5nU3R5bGVTcGFuKS0+Z2V0QXR0cmli
dXRlKHN0eWxlQXR0cikpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZyYWdtZW50LnJl
bW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4od3JhcHBpbmdTdHlsZVNwYW4pOwotICAgIHJldHVy
biB0cnVlOwotfQotCi0vLyBBdCBjb3B5IHRpbWUsIFdlYktpdCB3cmFwcyBjb3BpZWQgY29udGVu
dCBpbiBhIHNwYW4gdGhhdCBjb250YWlucyB0aGUgc291cmNlIGRvY3VtZW50J3MgCi0vLyBkZWZh
dWx0IHN0eWxlcy4gIElmIHRoZSBjb3BpZWQgUmFuZ2UgaW5oZXJpdHMgYW55IG90aGVyIHN0eWxl
cyBmcm9tIGl0cyBhbmNlc3RvcnMsIHdlIHB1dCAKLS8vIHRob3NlIHN0eWxlcyBvbiBhIHNlY29u
ZCBzcGFuLgotLy8gVGhpcyBmdW5jdGlvbiByZW1vdmVzIHJlZHVuZGFudCBzdHlsZXMgZnJvbSB0
aG9zZSBzcGFucywgYW5kIHJlbW92ZXMgdGhlIHNwYW5zIGlmIGFsbCB0aGVpciAKLS8vIHN0eWxl
cyBhcmUgcmVkdW5kYW50LiAKLS8vIFdlIHNob3VsZCByZW1vdmUgdGhlIEFwcGxlLXN0eWxlLXNw
YW4gY2xhc3Mgd2hlbiB3ZSdyZSBkb25lLCBzZWUgPHJkYXI6Ly9wcm9ibGVtLzU2ODU2MDA+Lgot
Ly8gV2Ugc2hvdWxkIHJlbW92ZSBzdHlsZXMgZnJvbSBzcGFucyB0aGF0IGFyZSBvdmVycmlkZGVu
IGJ5IGFsbCBvZiB0aGVpciBjaGlsZHJlbiwgZWl0aGVyIGhlcmUKLS8vIG9yIGF0IGNvcHkgdGlt
ZS4KLXZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmhhbmRsZVN0eWxlU3BhbnMoKQotewot
ICAgIEhUTUxFbGVtZW50KiB3cmFwcGluZ1N0eWxlU3BhbiA9IDA7Ci0gICAgLy8gVGhlIHN0eWxl
IHNwYW4gdGhhdCBjb250YWlucyB0aGUgc291cmNlIGRvY3VtZW50J3MgZGVmYXVsdCBzdHlsZSBz
aG91bGQgYmUgYXQKLSAgICAvLyB0aGUgdG9wIG9mIHRoZSBmcmFnbWVudCwgYnV0IE1haWwgc29t
ZXRpbWVzIGFkZHMgYSB3cmFwcGVyIChmb3IgUGFzdGUgQXMgUXVvdGF0aW9uKSwKLSAgICAvLyBz
byBzZWFyY2ggZm9yIHRoZSB0b3AgbGV2ZWwgc3R5bGUgc3BhbiBpbnN0ZWFkIG9mIGFzc3VtaW5n
IGl0J3MgYXQgdGhlIHRvcC4KLSAgICBmb3IgKE5vZGUqIG5vZGUgPSBtX2ZpcnN0Tm9kZUluc2Vy
dGVkLmdldCgpOyBub2RlOyBub2RlID0gbm9kZS0+dHJhdmVyc2VOZXh0Tm9kZSgpKSB7Ci0gICAg
ICAgIGlmIChpc1N0eWxlU3Bhbihub2RlKSkgewotICAgICAgICAgICAgd3JhcHBpbmdTdHlsZVNw
YW4gPSB0b0hUTUxFbGVtZW50KG5vZGUpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0K
LSAgICB9Ci0gICAgCi0gICAgLy8gVGhlcmUgbWlnaHQgbm90IGJlIGFueSBzdHlsZSBzcGFucyBp
ZiB3ZSdyZSBwYXN0aW5nIGZyb20gYW5vdGhlciBhcHBsaWNhdGlvbiBvciBpZiAKLSAgICAvLyB3
ZSBhcmUgaGVyZSBiZWNhdXNlIG9mIGEgZG9jdW1lbnQuZXhlY0NvbW1hbmQoIkluc2VydEhUTUwi
LCAuLi4pIGNhbGwuCi0gICAgaWYgKCF3cmFwcGluZ1N0eWxlU3BhbikKLSAgICAgICAgcmV0dXJu
OwotCi0gICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0
ZSh3cmFwcGluZ1N0eWxlU3Bhbi0+Z2V0SW5saW5lU3R5bGVEZWNsKCkpOwotICAgIENvbnRhaW5l
ck5vZGUqIGNvbnRleHQgPSB3cmFwcGluZ1N0eWxlU3Bhbi0+cGFyZW50Tm9kZSgpOwotCi0gICAg
Ly8gSWYgTWFpbCB3cmFwcyB0aGUgZnJhZ21lbnQgd2l0aCBhIFBhc3RlIGFzIFF1b3RhdGlvbiBi
bG9ja3F1b3RlLCBvciBpZiB5b3UncmUgcGFzdGluZyBpbnRvIGEgcXVvdGVkIHJlZ2lvbiwKLSAg
ICAvLyBzdHlsZXMgZnJvbSBibG9ja3F1b3RlTm9kZSBhcmUgYWxsb3dlZCB0byBvdmVycmlkZSB0
aG9zZSBmcm9tIHRoZSBzb3VyY2UgZG9jdW1lbnQsIHNlZSA8cmRhcjovL3Byb2JsZW0vNDkzMDk4
Nj4gYW5kIDxyZGFyOi8vcHJvYmxlbS81MDg5MzI3Pi4KLSAgICBOb2RlKiBibG9ja3F1b3RlTm9k
ZSA9IGlzTWFpbFBhc3RlQXNRdW90YXRpb25Ob2RlKGNvbnRleHQpID8gY29udGV4dCA6IGVuY2xv
c2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlvbkluTm9kZShjb250ZXh0KSwgaXNNYWlsQmxvY2tx
dW90ZSwgQ2FuQ3Jvc3NFZGl0aW5nQm91bmRhcnkpOwotICAgIGlmIChibG9ja3F1b3RlTm9kZSkK
LSAgICAgICAgY29udGV4dCA9IGRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOwotCi0gICAg
Ly8gVGhpcyBvcGVyYXRpb24gcmVxdWlyZXMgdGhhdCBvbmx5IGVkaXRpbmcgc3R5bGVzIHRvIGJl
IHJlbW92ZWQgZnJvbSBzb3VyY2VEb2N1bWVudFN0eWxlLgotICAgIHN0eWxlLT5wcmVwYXJlVG9B
cHBseUF0KGZpcnN0UG9zaXRpb25Jbk5vZGUoY29udGV4dCkpOwotCi0gICAgLy8gUmVtb3ZlIGJs
b2NrIHByb3BlcnRpZXMgaW4gdGhlIHNwYW4ncyBzdHlsZS4gVGhpcyBwcmV2ZW50cyBwcm9wZXJ0
aWVzIHRoYXQgcHJvYmFibHkgaGF2ZSBubyBlZmZlY3QgCi0gICAgLy8gY3VycmVudGx5IGZyb20g
YWZmZWN0aW5nIGJsb2NrcyBsYXRlciBpZiB0aGUgc3R5bGUgaXMgY2xvbmVkIGZvciBhIG5ldyBi
bG9jayBlbGVtZW50IGR1cmluZyBhIGZ1dHVyZSAKLSAgICAvLyBlZGl0aW5nIG9wZXJhdGlvbi4K
LSAgICAvLyBGSVhNRTogVGhleSAqY2FuKiBoYXZlIGFuIGVmZmVjdCBjdXJyZW50bHkgaWYgYmxv
Y2tzIGJlbmVhdGggdGhlIHN0eWxlIHNwYW4gYXJlbid0IGluZGl2aWR1YWxseSBtYXJrZWQKLSAg
ICAvLyB3aXRoIGJsb2NrIHN0eWxlcyBieSB0aGUgZWRpdGluZyBlbmdpbmUgdXNlZCB0byBzdHls
ZSB0aGVtLiAgV2ViS2l0IGRvZXNuJ3QgZG8gdGhpcywgYnV0IG90aGVycyBtaWdodC4KLSAgICBz
dHlsZS0+cmVtb3ZlQmxvY2tQcm9wZXJ0aWVzKCk7Ci0KLSAgICBpZiAoc3R5bGUtPmlzRW1wdHko
KSB8fCAhd3JhcHBpbmdTdHlsZVNwYW4tPmZpcnN0Q2hpbGQoKSkKLSAgICAgICAgcmVtb3ZlTm9k
ZVByZXNlcnZpbmdDaGlsZHJlbih3cmFwcGluZ1N0eWxlU3Bhbik7Ci0gICAgZWxzZQotICAgICAg
ICBzZXROb2RlQXR0cmlidXRlKHdyYXBwaW5nU3R5bGVTcGFuLCBzdHlsZUF0dHIsIHN0eWxlLT5z
dHlsZSgpLT5jc3NUZXh0KCkpOwotfQotCi0vLyBUYWtlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgb2Yg
YSBzcGFuIGFuZCBhcHBseSBpdCB0byBpdCdzIGNoaWxkcmVuIGluc3RlYWQuICBUaGlzIGFsbG93
cyB1cyB0bwotLy8gY29udmVydCBpbnZhbGlkIEhUTUwgd2hlcmUgYSBzcGFuIGNvbnRhaW5zIGJs
b2NrIGVsZW1lbnRzIGludG8gdmFsaWQgSFRNTCB3aGlsZSBwcmVzZXJ2aW5nCi0vLyBzdHlsZXMu
Ci12b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjb3B5U3R5bGVUb0NoaWxkcmVuKE5vZGUq
IHBhcmVudE5vZGUsIGNvbnN0IENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKiBwYXJlbnRTdHls
ZSkKLXsKLSAgICBBU1NFUlQocGFyZW50Tm9kZS0+aGFzVGFnTmFtZShzcGFuVGFnKSk7Ci0gICAg
Tm9kZVZlY3RvciBjaGlsZE5vZGVzOwotICAgIGZvciAoUmVmUHRyPE5vZGU+IGNoaWxkTm9kZSA9
IHBhcmVudE5vZGUtPmZpcnN0Q2hpbGQoKTsgY2hpbGROb2RlOyBjaGlsZE5vZGUgPSBjaGlsZE5v
ZGUtPm5leHRTaWJsaW5nKCkpCi0gICAgICAgIGNoaWxkTm9kZXMuYXBwZW5kKGNoaWxkTm9kZSk7
Ci0gICAgICAgIAotICAgIGZvciAoTm9kZVZlY3Rvcjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBjaGls
ZE5vZGVzLmJlZ2luKCk7IGl0ICE9IGNoaWxkTm9kZXMuZW5kKCk7IGl0KyspIHsKLSAgICAgICAg
Tm9kZSogY2hpbGROb2RlID0gaXQtPmdldCgpOwotICAgICAgICBpZiAoY2hpbGROb2RlLT5pc1Rl
eHROb2RlKCkgfHwgIWlzQmxvY2soY2hpbGROb2RlKSB8fCBjaGlsZE5vZGUtPmhhc1RhZ05hbWUo
cHJlVGFnKSkgewotICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlLCBwdXQgYSBzcGFuIHRhZyBh
cm91bmQgdGhlIGNoaWxkIG5vZGUuCi0gICAgICAgICAgICBSZWZQdHI8Tm9kZT4gbmV3Tm9kZSA9
IHBhcmVudE5vZGUtPmNsb25lTm9kZShmYWxzZSk7Ci0gICAgICAgICAgICBBU1NFUlQobmV3Tm9k
ZS0+aGFzVGFnTmFtZShzcGFuVGFnKSk7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogbmV3U3Bh
biA9IHRvSFRNTEVsZW1lbnQobmV3Tm9kZS5nZXQoKSk7Ci0gICAgICAgICAgICBzZXROb2RlQXR0
cmlidXRlKG5ld1NwYW4sIHN0eWxlQXR0ciwgcGFyZW50U3R5bGUtPmNzc1RleHQoKSk7Ci0gICAg
ICAgICAgICBpbnNlcnROb2RlQWZ0ZXIobmV3U3BhbiwgY2hpbGROb2RlKTsKLSAgICAgICAgICAg
IEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgICAgICAgICAgbmV3U3Bhbi0+YXBwZW5kQ2hpbGQo
Y2hpbGROb2RlLCBlYyk7Ci0gICAgICAgICAgICBBU1NFUlQoIWVjKTsKLSAgICAgICAgICAgIGNo
aWxkTm9kZSA9IG5ld1NwYW47Ci0gICAgICAgIH0gZWxzZSBpZiAoY2hpbGROb2RlLT5pc0hUTUxF
bGVtZW50KCkpIHsKLSAgICAgICAgICAgIC8vIENvcHkgdGhlIHN0eWxlIGF0dHJpYnV0ZSBhbmQg
bWVyZ2UgdGhlbSBpbnRvIHRoZSBjaGlsZCBub2RlLiAgV2UgZG9uJ3Qgd2FudCB0byBvdmVycmlk
ZQotICAgICAgICAgICAgLy8gZXhpc3Rpbmcgc3R5bGVzLCBzbyBkb24ndCBjbG9iYmVyIG9uIG1l
cmdlLgotICAgICAgICAgICAgUmVmUHRyPENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBuZXdT
dHlsZSA9IHBhcmVudFN0eWxlLT5jb3B5KCk7Ci0gICAgICAgICAgICBIVE1MRWxlbWVudCogY2hp
bGRFbGVtZW50ID0gdG9IVE1MRWxlbWVudChjaGlsZE5vZGUpOwotICAgICAgICAgICAgUmVmUHRy
PENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uPiBleGlzdGluZ1N0eWxlcyA9IGNoaWxkRWxlbWVu
dC0+Z2V0SW5saW5lU3R5bGVEZWNsKCktPmNvcHkoKTsKLSAgICAgICAgICAgIGV4aXN0aW5nU3R5
bGVzLT5tZXJnZShuZXdTdHlsZS5nZXQoKSwgZmFsc2UpOwotICAgICAgICAgICAgc2V0Tm9kZUF0
dHJpYnV0ZShjaGlsZEVsZW1lbnQsIHN0eWxlQXR0ciwgZXhpc3RpbmdTdHlsZXMtPmNzc1RleHQo
KSk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIHZvaWQgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6
Om1lcmdlRW5kSWZOZWVkZWQoKQogewogICAgIGlmICghbV9zaG91bGRNZXJnZUVuZCkKQEAgLTgw
OCw3ICs2OTMsNyBAQCBzdGF0aWMgYm9vbCBpc0lubGluZU5vZGVXaXRoU3R5bGUoY29uc3QgTm9k
ZSogbm9kZSkKIAogICAgIHJldHVybiBmYWxzZTsKIH0KLSAgICAKKwogdm9pZCBSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiB7CiAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b24gPSBlbmRpbmdTZWxlY3Rpb24oKTsKQEAgLTk1MCwyNCArODM1LDIzIEBAIHZvaWQgUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIC8vIFBhc3RlIGludG8gcnVuIG9mIHRh
YnMgc3BsaXRzIHRoZSB0YWIgc3Bhbi4KICAgICBpbnNlcnRpb25Qb3MgPSBwb3NpdGlvbk91dHNp
ZGVUYWJTcGFuKGluc2VydGlvblBvcyk7CiAKLSAgICBib29sIGhhbmRsZWRTdHlsZVNwYW5zID0g
aGFuZGxlU3R5bGVTcGFuc0JlZm9yZUluc2VydGlvbihmcmFnbWVudCwgaW5zZXJ0aW9uUG9zKTsK
LQogICAgIC8vIElmIHdlIGFyZSBub3QgdHJ5aW5nIHRvIG1hdGNoIHRoZSBkZXN0aW5hdGlvbiBz
dHlsZSB3ZSBwcmVmZXIgYSBwb3NpdGlvbgogICAgIC8vIHRoYXQgaXMgb3V0c2lkZSBpbmxpbmUg
ZWxlbWVudHMgdGhhdCBwcm92aWRlIHN0eWxlLgogICAgIC8vIFRoaXMgd2F5IHdlIGNhbiBwcm9k
dWNlIGEgbGVzcyB2ZXJib3NlIG1hcmt1cC4KICAgICAvLyBXZSBjYW4gc2tpcCB0aGlzIG9wdGlt
aXphdGlvbiBmb3IgZnJhZ21lbnRzIG5vdCB3cmFwcGVkIGluIG9uZSBvZgogICAgIC8vIG91ciBz
dHlsZSBzcGFucyBhbmQgZm9yIHBvc2l0aW9ucyBpbnNpZGUgbGlzdCBpdGVtcwogICAgIC8vIHNp
bmNlIGluc2VydEFzTGlzdEl0ZW1zIGFscmVhZHkgZG9lcyB0aGUgcmlnaHQgdGhpbmcuCi0gICAg
aWYgKCFtX21hdGNoU3R5bGUgJiYgIWVuY2xvc2luZ0xpc3QoaW5zZXJ0aW9uUG9zLmNvbnRhaW5l
ck5vZGUoKSkgJiYgaXNTdHlsZVNwYW4oZnJhZ21lbnQuZmlyc3RDaGlsZCgpKSkgeworICAgIGlm
ICghbV9tYXRjaFN0eWxlICYmICFlbmNsb3NpbmdMaXN0KGluc2VydGlvblBvcy5jb250YWluZXJO
b2RlKCkpKSB7CiAgICAgICAgIGlmIChpbnNlcnRpb25Qb3MuY29udGFpbmVyTm9kZSgpLT5pc1Rl
eHROb2RlKCkgJiYgaW5zZXJ0aW9uUG9zLm9mZnNldEluQ29udGFpbmVyTm9kZSgpICYmICFpbnNl
cnRpb25Qb3MuYXRMYXN0RWRpdGluZ1Bvc2l0aW9uRm9yTm9kZSgpKSB7Ci0gICAgICAgICAgICBz
cGxpdFRleHROb2RlQ29udGFpbmluZ0VsZW1lbnQoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lclRleHQo
KSwgaW5zZXJ0aW9uUG9zLm9mZnNldEluQ29udGFpbmVyTm9kZSgpKTsKKyAgICAgICAgICAgIHNw
bGl0VGV4dE5vZGUoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lclRleHQoKSwgaW5zZXJ0aW9uUG9zLm9m
ZnNldEluQ29udGFpbmVyTm9kZSgpKTsKICAgICAgICAgICAgIGluc2VydGlvblBvcyA9IGZpcnN0
UG9zaXRpb25Jbk5vZGUoaW5zZXJ0aW9uUG9zLmNvbnRhaW5lck5vZGUoKSk7CiAgICAgICAgIH0K
IAogICAgICAgICAvLyBGSVhNRTogaXNJbmxpbmVOb2RlV2l0aFN0eWxlIGRvZXMgbm90IGNoZWNr
IGVkaXRhYmlsaXR5LgotICAgICAgICBpZiAoUmVmUHRyPE5vZGU+IG5vZGVUb1NwbGl0VG8gPSBo
aWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlwZShpbnNlcnRpb25Qb3MsIGlzSW5saW5lTm9kZVdpdGhT
dHlsZSkpIHsKLSAgICAgICAgICAgIGlmIChpbnNlcnRpb25Qb3MuY29udGFpbmVyTm9kZSgpICE9
IG5vZGVUb1NwbGl0VG8pIHsKLSAgICAgICAgICAgICAgICBub2RlVG9TcGxpdFRvID0gc3BsaXRU
cmVlVG9Ob2RlKGluc2VydGlvblBvcy5hbmNob3JOb2RlKCksIG5vZGVUb1NwbGl0VG8uZ2V0KCks
IHRydWUpLmdldCgpOworICAgICAgICBpZiAoUmVmUHRyPE5vZGU+IG5vZGVUb1NwbGl0VG8gPSBo
aWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlwZShpbnNlcnRpb25Qb3MsIGlzSW5saW5lTm9kZVdpdGhT
dHlsZSwKKyAgICAgICAgICAgIENhbm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5LCBlbmNsb3NpbmdC
bG9jayhpbnNlcnRpb25Qb3MuY29udGFpbmVyTm9kZSgpKSkpIHsKKyAgICAgICAgICAgIGlmIChp
bnNlcnRpb25Qb3MuY29udGFpbmVyTm9kZSgpICE9IG5vZGVUb1NwbGl0VG8tPnBhcmVudE5vZGUo
KSkgeworICAgICAgICAgICAgICAgIG5vZGVUb1NwbGl0VG8gPSBzcGxpdFRyZWVUb05vZGUoaW5z
ZXJ0aW9uUG9zLmFuY2hvck5vZGUoKSwgbm9kZVRvU3BsaXRUby0+cGFyZW50Tm9kZSgpKS5nZXQo
KTsKICAgICAgICAgICAgICAgICBpbnNlcnRpb25Qb3MgPSBwb3NpdGlvbkluUGFyZW50QmVmb3Jl
Tm9kZShub2RlVG9TcGxpdFRvLmdldCgpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAt
MTAyOSw5ICs5MTMsNiBAQCB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpkb0FwcGx5KCkK
ICAgICAKICAgICByZW1vdmVSZWR1bmRhbnRTdHlsZXNBbmRLZWVwU3R5bGVTcGFuSW5saW5lKCk7
CiAgICAgCi0gICAgaWYgKCFoYW5kbGVkU3R5bGVTcGFucykKLSAgICAgICAgaGFuZGxlU3R5bGVT
cGFucygpOwotICAgIAogICAgIC8vIE11dGF0aW9uIGV2ZW50cyAoYnVnIDIwMTYxKSBtYXkgaGF2
ZSBhbHJlYWR5IHJlbW92ZWQgdGhlIGluc2VydGVkIGNvbnRlbnQKICAgICBpZiAoIW1fZmlyc3RO
b2RlSW5zZXJ0ZWQgfHwgIW1fZmlyc3ROb2RlSW5zZXJ0ZWQtPmluRG9jdW1lbnQoKSkKICAgICAg
ICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9u
Q29tbWFuZC5oCmluZGV4IDc1MzczNWIwYzBiZDE1MGRmYTJiOWRhMmNmNjAxZmFjZGE5NWYzNTUu
LjE3OGQ5MDEzZDQ5ZjQyNDhhYzgwOWQ5OGU4Y2E0MWM2ZDNlNmQ5YWEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKQEAgLTc4LDggKzc4
LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlbW92ZVVucmVuZGVyZWRUZXh0Tm9kZXNBdEVuZHMo
KTsKICAgICAKICAgICB2b2lkIHJlbW92ZVJlZHVuZGFudFN0eWxlc0FuZEtlZXBTdHlsZVNwYW5J
bmxpbmUoKTsKLSAgICB2b2lkIGhhbmRsZVN0eWxlU3BhbnMoKTsKLSAgICB2b2lkIGNvcHlTdHls
ZVRvQ2hpbGRyZW4oTm9kZSogcGFyZW50Tm9kZSwgY29uc3QgQ1NTTXV0YWJsZVN0eWxlRGVjbGFy
YXRpb24qIHBhcmVudFN0eWxlKTsKICAgICB2b2lkIGhhbmRsZVBhc3RlQXNRdW90YXRpb25Ob2Rl
KCk7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW4o
Tm9kZSopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGluZy5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNwcAppbmRleCA0MzQ3OTIx
MmJhMWYyZDdjNDFlZTJlNDczMDQ5YzQ1NGE4ZWRiZDMxLi41ODA5MjhkN2Y1NzM1ODNhZGU3YWFh
Njk3YTk3YWNlNDE5YTlhZjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0
bWxlZGl0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmNw
cApAQCAtNjA3LDExICs2MDcsMTEgQEAgTm9kZSogZW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQ
b3NpdGlvbiYgcCwgYm9vbCAoKm5vZGVJc09mVHlwZSkoY29uc3QgTm9kZSopLAogICAgIHJldHVy
biAwOwogfQogCi1Ob2RlKiBoaWdoZXN0RW5jbG9zaW5nTm9kZU9mVHlwZShjb25zdCBQb3NpdGlv
biYgcCwgYm9vbCAoKm5vZGVJc09mVHlwZSkoY29uc3QgTm9kZSopLCBFZGl0aW5nQm91bmRhcnlD
cm9zc2luZ1J1bGUgcnVsZSkKK05vZGUqIGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZUeXBlKGNvbnN0
IFBvc2l0aW9uJiBwLCBib29sICgqbm9kZUlzT2ZUeXBlKShjb25zdCBOb2RlKiksIEVkaXRpbmdC
b3VuZGFyeUNyb3NzaW5nUnVsZSBydWxlLCBOb2RlKiBzdGF5V2l0aGluKQogewogICAgIE5vZGUq
IGhpZ2hlc3QgPSAwOwogICAgIE5vZGUqIHJvb3QgPSBydWxlID09IENhbm5vdENyb3NzRWRpdGlu
Z0JvdW5kYXJ5ID8gaGlnaGVzdEVkaXRhYmxlUm9vdChwKSA6IDA7Ci0gICAgZm9yIChOb2RlKiBu
ID0gcC5jb250YWluZXJOb2RlKCk7IG47IG4gPSBuLT5wYXJlbnROb2RlKCkpIHsKKyAgICBmb3Ig
KE5vZGUqIG4gPSBwLmNvbnRhaW5lck5vZGUoKTsgbiAmJiBuICE9IHN0YXlXaXRoaW47IG4gPSBu
LT5wYXJlbnROb2RlKCkpIHsKICAgICAgICAgaWYgKHJvb3QgJiYgIW4tPnJlbmRlcmVySXNFZGl0
YWJsZSgpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmIChub2RlSXNPZlR5cGUo
bikpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmggYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL2h0bWxlZGl0aW5nLmgKaW5kZXggYzBiMzBhYzlhZDI4YjQ4
YjM4MzUyNmIzMmE5YTk1ZjgzYzAyNjJjYi4uMDlhNjM0ZTk3NjlhNWFmM2RmN2YwYWU4YTJhMzEz
YzlkODIzNWQzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9odG1sZWRpdGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaHRtbGVkaXRpbmcuaApAQCAtNTUsNyAr
NTUsNyBAQCBjbGFzcyBWaXNpYmxlU2VsZWN0aW9uOwogCiBOb2RlKiBoaWdoZXN0QW5jZXN0b3Io
Tm9kZSopOwogTm9kZSogaGlnaGVzdEVkaXRhYmxlUm9vdChjb25zdCBQb3NpdGlvbiYpOwotTm9k
ZSogaGlnaGVzdEVuY2xvc2luZ05vZGVPZlR5cGUoY29uc3QgUG9zaXRpb24mLCBib29sICgqbm9k
ZUlzT2ZUeXBlKShjb25zdCBOb2RlKiksIEVkaXRpbmdCb3VuZGFyeUNyb3NzaW5nUnVsZSA9IENh
bm5vdENyb3NzRWRpdGluZ0JvdW5kYXJ5KTsKK05vZGUqIGhpZ2hlc3RFbmNsb3NpbmdOb2RlT2ZU
eXBlKGNvbnN0IFBvc2l0aW9uJiwgYm9vbCAoKm5vZGVJc09mVHlwZSkoY29uc3QgTm9kZSopLCBF
ZGl0aW5nQm91bmRhcnlDcm9zc2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSwg
Tm9kZSogc3RheVdpdGhpbiA9IDApOwogTm9kZSogbG93ZXN0RWRpdGFibGVBbmNlc3RvcihOb2Rl
Kik7ICAgCiAKIE5vZGUqIGVuY2xvc2luZ0Jsb2NrKE5vZGUqLCBFZGl0aW5nQm91bmRhcnlDcm9z
c2luZ1J1bGUgPSBDYW5ub3RDcm9zc0VkaXRpbmdCb3VuZGFyeSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21h
cmt1cC5jcHAKaW5kZXggNzBmNWE4MWI3YmRlMWE5ODhlODhlNDg4NjAyOTRhYjllOWQ1YjcwMi4u
MjUxNjFlYmU2NGY5YTM4ODViYzFhY2UwN2E5ZWJhYjc1ZTMzYjEyMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcApAQCAtMTIwLDEyICsxMjAsNyBAQCBjbGFzcyBTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvciA6IHB1YmxpYyBNYXJrdXBBY2N1bXVsYXRvciB7CiBwdWJsaWM6CiAgICAgZW51bSBS
YW5nZUZ1bGx5U2VsZWN0c05vZGUgeyBEb2VzRnVsbHlTZWxlY3ROb2RlLCBEb2VzTm90RnVsbHlT
ZWxlY3ROb2RlIH07CiAKLSAgICBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+
KiBub2RlcywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50
ZXJjaGFuZ2Ugc2hvdWxkQW5ub3RhdGUsIGNvbnN0IFJhbmdlKiByYW5nZSkKLSAgICA6IE1hcmt1
cEFjY3VtdWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgcmFuZ2UpCi0gICAgLCBtX3No
b3VsZEFubm90YXRlKHNob3VsZEFubm90YXRlKQotICAgIHsKLSAgICB9Ci0KKyAgICBTdHlsZWRN
YXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFic29sdXRlVVJMcywgRUFu
bm90YXRlRm9ySW50ZXJjaGFuZ2UsIGNvbnN0IFJhbmdlKiwgTm9kZSogaGlnaGVzdE5vZGVUb0Jl
U2VyaWFsaXplZCA9IDApOwogICAgIE5vZGUqIHNlcmlhbGl6ZU5vZGVzKE5vZGUqIHN0YXJ0Tm9k
ZSwgTm9kZSogcGFzdEVuZCk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFN0cmluZyhjb25zdCBT
dHJpbmcmIHMpIHsgcmV0dXJuIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHJpbmcocyk7IH0K
ICAgICB2b2lkIHdyYXBXaXRoTm9kZShOb2RlKiwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVz
ID0gZmFsc2UsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9IERvZXNGdWxseVNlbGVjdE5vZGUpOwpA
QCAtMTMzLDE4ICsxMjgsMzcgQEAgcHVibGljOgogICAgIFN0cmluZyB0YWtlUmVzdWx0cygpOwog
CiBwcml2YXRlOgorICAgIHZvaWQgYXBwZW5kU3R5bGVOb2RlT3BlblRhZyhWZWN0b3I8VUNoYXI+
JiwgQ1NTU3R5bGVEZWNsYXJhdGlvbiosIERvY3VtZW50KiwgYm9vbCBpc0Jsb2NrID0gZmFsc2Up
OworICAgIGNvbnN0IFN0cmluZyBzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlzQmxvY2sgPSBmYWxz
ZSk7CiAgICAgdmlydHVhbCB2b2lkIGFwcGVuZFRleHQoVmVjdG9yPFVDaGFyPiYgb3V0LCBUZXh0
Kik7CiAgICAgU3RyaW5nIHJlbmRlcmVkVGV4dChjb25zdCBOb2RlKiwgY29uc3QgUmFuZ2UqKTsK
ICAgICBTdHJpbmcgc3RyaW5nVmFsdWVGb3JSYW5nZShjb25zdCBOb2RlKiwgY29uc3QgUmFuZ2Uq
KTsKICAgICB2b2lkIGFwcGVuZEVsZW1lbnQoVmVjdG9yPFVDaGFyPiYgb3V0LCBFbGVtZW50KiBl
bGVtZW50LCBib29sIGFkZERpc3BsYXlJbmxpbmUsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSk7CiAg
ICAgdm9pZCBhcHBlbmRFbGVtZW50KFZlY3RvcjxVQ2hhcj4mIG91dCwgRWxlbWVudCogZWxlbWVu
dCwgTmFtZXNwYWNlcyopIHsgYXBwZW5kRWxlbWVudChvdXQsIGVsZW1lbnQsIGZhbHNlLCBEb2Vz
RnVsbHlTZWxlY3ROb2RlKTsgfQogCisgICAgTm9kZSogdHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6
YXRpb24oTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kLCBib29sIHNob3VsZEVtaXQpOwor
CiAgICAgYm9vbCBzaG91bGRBbm5vdGF0ZSgpIHsgcmV0dXJuIG1fc2hvdWxkQW5ub3RhdGUgPT0g
QW5ub3RhdGVGb3JJbnRlcmNoYW5nZTsgfQorICAgIGJvb2wgc2hvdWxkQXBwbHlXcmFwcGluZ1N0
eWxlKE5vZGUqIG5vZGUpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gbV9oaWdoZXN0Tm9k
ZVRvQmVTZXJpYWxpemVkICYmIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZC0+cGFyZW50Tm9k
ZSgpID09IG5vZGUtPnBhcmVudE5vZGUoKQorICAgICAgICAgICAgJiYgbV93cmFwcGluZ1N0eWxl
ICYmIG1fd3JhcHBpbmdTdHlsZS0+c3R5bGUoKTsKKyAgICB9CiAKICAgICBWZWN0b3I8U3RyaW5n
PiBtX3JldmVyc2VkUHJlY2VkaW5nTWFya3VwOwogICAgIGNvbnN0IEVBbm5vdGF0ZUZvckludGVy
Y2hhbmdlIG1fc2hvdWxkQW5ub3RhdGU7CisgICAgTm9kZSogbV9oaWdoZXN0Tm9kZVRvQmVTZXJp
YWxpemVkOworICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG1fd3JhcHBpbmdTdHlsZTsKIH07CiAK
K2lubGluZSBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3Io
VmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMgc2hvdWxkUmVzb2x2ZVVSTHMsIEVB
bm5vdGF0ZUZvckludGVyY2hhbmdlIHNob3VsZEFubm90YXRlLAorICAgIGNvbnN0IFJhbmdlKiBy
YW5nZSwgTm9kZSogaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCkKKyAgICA6IE1hcmt1cEFjY3Vt
dWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgcmFuZ2UpCisgICAgLCBtX3Nob3VsZEFu
bm90YXRlKHNob3VsZEFubm90YXRlKQorICAgICwgbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVk
KGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpCit7Cit9CisKIHZvaWQgU3R5bGVkTWFya3VwQWNj
dW11bGF0b3I6OndyYXBXaXRoTm9kZShOb2RlKiBub2RlLCBib29sIGNvbnZlcnRCbG9ja3NUb0lu
bGluZXMsIFJhbmdlRnVsbHlTZWxlY3RzTm9kZSByYW5nZUZ1bGx5U2VsZWN0c05vZGUpCiB7CiAg
ICAgVmVjdG9yPFVDaGFyPiBtYXJrdXA7CkBAIC0xNjAsMjAgKzE3NCwzMCBAQCB2b2lkIFN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFwV2l0aE5vZGUoTm9kZSogbm9kZSwgYm9vbCBjb252ZXJ0
QmxvY2tzVG9JbmxpbgogCiB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFwV2l0aFN0
eWxlTm9kZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBi
b29sIGlzQmxvY2spCiB7CisgICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOworICAgIGFwcGVuZFN0
eWxlTm9kZU9wZW5UYWcob3BlblRhZywgc3R5bGUsIGRvY3VtZW50LCBpc0Jsb2NrKTsKKyAgICBt
X3JldmVyc2VkUHJlY2VkaW5nTWFya3VwLmFwcGVuZChTdHJpbmc6OmFkb3B0KG9wZW5UYWcpKTsK
KyAgICBhcHBlbmRTdHJpbmcoc3R5bGVOb2RlQ2xvc2VUYWcoaXNCbG9jaykpOworfQorCit2b2lk
IFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFZlY3RvcjxV
Q2hhcj4mIG91dCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVu
dCwgYm9vbCBpc0Jsb2NrKQorewogICAgIC8vIEFsbCB0ZXh0LWRlY29yYXRpb24tcmVsYXRlZCBl
bGVtZW50cyBzaG91bGQgaGF2ZSBiZWVuIHRyZWF0ZWQgYXMgc3BlY2lhbCBhbmNlc3RvcnMKICAg
ICAvLyBJZiB3ZSBldmVyIGhpdCB0aGlzIEFTU0VSVCwgd2Ugc2hvdWxkIGV4cG9ydCBTdHlsZUNo
YW5nZSBpbiBBcHBseVN0eWxlQ29tbWFuZCBhbmQgdXNlIGl0IGhlcmUKICAgICBBU1NFUlQocHJv
cGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
bikgJiYgcHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJr
aXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCBkaXZTdHlsZSwgKCI8ZGl2IHN0eWxlPVwiIikpOwotICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkaXZDbG9zZSwgKCI8L2Rpdj4iKSk7CiAgICAgREVGSU5F
X1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0eWxlU3Bhbk9wZW4sICgiPHNwYW4gY2xhc3M9
XCIiIEFwcGxlU3R5bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIikpOworICAgIGFwcGVuZChvdXQs
IGlzQmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOworICAgIGFwcGVuZEF0dHJpYnV0
ZVZhbHVlKG91dCwgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkp
OworICAgIG91dC5hcHBlbmQoJ1wiJyk7CisgICAgb3V0LmFwcGVuZCgnPicpOworfQorCitjb25z
dCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNsb3NlVGFnKGJvb2wg
aXNCbG9jaykKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xv
c2UsICgiPC9kaXY+IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBz
dHlsZVNwYW5DbG9zZSwgKCI8L3NwYW4+IikpOwotICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsK
LSAgICBhcHBlbmQob3BlblRhZywgaXNCbG9jayA/IGRpdlN0eWxlIDogc3R5bGVTcGFuT3Blbik7
Ci0gICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3BlblRhZywgc3R5bGUtPmNzc1RleHQoKSwgZG9j
dW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOwotICAgIG9wZW5UYWcuYXBwZW5kKCdcIicpOwotICAg
IG9wZW5UYWcuYXBwZW5kKCc+Jyk7Ci0gICAgbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cC5hcHBl
bmQoU3RyaW5nOjphZG9wdChvcGVuVGFnKSk7Ci0gICAgYXBwZW5kU3RyaW5nKGlzQmxvY2sgPyBk
aXZDbG9zZSA6IHN0eWxlU3BhbkNsb3NlKTsKKyAgICByZXR1cm4gaXNCbG9jayA/IGRpdkNsb3Nl
IDogc3R5bGVTcGFuQ2xvc2U7CiB9CiAKIFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6
dGFrZVJlc3VsdHMoKQpAQCAtMTkxLDE3ICsyMTUsMzQgQEAgU3RyaW5nIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjp0YWtlUmVzdWx0cygpCiB9CiAKIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OmFwcGVuZFRleHQoVmVjdG9yPFVDaGFyPiYgb3V0LCBUZXh0KiB0ZXh0KQotewotICAgIGlm
ICghc2hvdWxkQW5ub3RhdGUoKSB8fCAodGV4dC0+cGFyZW50RWxlbWVudCgpICYmIHRleHQtPnBh
cmVudEVsZW1lbnQoKS0+dGFnUU5hbWUoKSA9PSB0ZXh0YXJlYVRhZykpIHsKK3sgICAgCisgICAg
Ym9vbCBwYXJlbnRJc1RleHRhcmVhID0gdGV4dC0+cGFyZW50RWxlbWVudCgpICYmIHRleHQtPnBh
cmVudEVsZW1lbnQoKS0+dGFnUU5hbWUoKSA9PSB0ZXh0YXJlYVRhZzsKKyAgICBib29sIHdyYXBw
aW5nU3BhbiA9IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSh0ZXh0KSAmJiAhcGFyZW50SXNUZXh0
YXJlYTsKKyAgICBpZiAod3JhcHBpbmdTcGFuKSB7CisgICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5
bGU+IHdyYXBwaW5nU3R5bGUgPSBtX3dyYXBwaW5nU3R5bGUtPmNvcHkoKTsKKyAgICAgICAgLy8g
PHJkYXI6Ly9wcm9ibGVtLzUzNzE1MzY+CisgICAgICAgIC8vIE1ha2Ugc3VyZSBzcGFucyBhcmUg
aW5saW5lIHN0eWxlIGluIHBhc3RlIHNpZGUgZS5nLiBzcGFuIHsgZGlzcGxheTogYmxvY2sgfQor
ICAgICAgICB3cmFwcGluZ1N0eWxlLT5mb3JjZUlubGluZSgpOworICAgICAgICAvLyBGSVhNRTog
c2hvdWxkIHRoaXMgYmUgaW5jbHVkZWQgaW4gZm9yY2VJbmxpbmU/CisgICAgICAgIHdyYXBwaW5n
U3R5bGUtPnN0eWxlKCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQsIENTU1ZhbHVlTm9u
ZSk7CisKKyAgICAgICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOworICAgICAgICBhcHBlbmRTdHls
ZU5vZGVPcGVuVGFnKG9wZW5UYWcsIHdyYXBwaW5nU3R5bGUtPnN0eWxlKCksIHRleHQtPmRvY3Vt
ZW50KCkpOworICAgICAgICBhcHBlbmQob3V0LCBTdHJpbmc6OmFkb3B0KG9wZW5UYWcpKTsKKyAg
ICB9CisKKyAgICBpZiAoIXNob3VsZEFubm90YXRlKCkgfHwgcGFyZW50SXNUZXh0YXJlYSkKICAg
ICAgICAgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQob3V0LCB0ZXh0KTsKLSAgICAgICAg
cmV0dXJuOworICAgIGVsc2UgeworICAgICAgICBib29sIHVzZVJlbmRlcmVkVGV4dCA9ICFlbmNs
b3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKHRleHQpLCBzZWxlY3RUYWcpOwor
ICAgICAgICBTdHJpbmcgY29udGVudCA9IHVzZVJlbmRlcmVkVGV4dCA/IHJlbmRlcmVkVGV4dCh0
ZXh0LCBtX3JhbmdlKSA6IHN0cmluZ1ZhbHVlRm9yUmFuZ2UodGV4dCwgbV9yYW5nZSk7CisgICAg
ICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOworICAgICAgICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFj
aW5nRW50aXRpZXMoYnVmZmVyLCBjb250ZW50LmNoYXJhY3RlcnMoKSwgY29udGVudC5sZW5ndGgo
KSwgRW50aXR5TWFza0luUENEQVRBKTsKKyAgICAgICAgYXBwZW5kKG91dCwgY29udmVydEhUTUxU
ZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChTdHJpbmc6OmFkb3B0KGJ1ZmZlciksIHRleHQpKTsKICAg
ICB9CiAKLSAgICBib29sIHVzZVJlbmRlcmVkVGV4dCA9ICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhm
aXJzdFBvc2l0aW9uSW5Ob2RlKHRleHQpLCBzZWxlY3RUYWcpOwotICAgIFN0cmluZyBjb250ZW50
ID0gdXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRleHQsIG1fcmFuZ2UpIDogc3RyaW5n
VmFsdWVGb3JSYW5nZSh0ZXh0LCBtX3JhbmdlKTsKLSAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcjsK
LSAgICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoYnVmZmVyLCBjb250ZW50LmNo
YXJhY3RlcnMoKSwgY29udGVudC5sZW5ndGgoKSwgRW50aXR5TWFza0luUENEQVRBKTsKLSAgICBh
cHBlbmQob3V0LCBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KFN0cmluZzo6YWRv
cHQoYnVmZmVyKSwgdGV4dCkpOworICAgIGlmICh3cmFwcGluZ1NwYW4pCisgICAgICAgIGFwcGVu
ZChvdXQsIHN0eWxlTm9kZUNsb3NlVGFnKCkpOwogfQogICAgIAogU3RyaW5nIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yOjpyZW5kZXJlZFRleHQoY29uc3QgTm9kZSogbm9kZSwgY29uc3QgUmFuZ2Uq
IHJhbmdlKQpAQCAtMjQ1LDMwICsyODYsNDYgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQKIAog
ICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGVsZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAg
ICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5sZW5ndGgoKTsKKyAgICBib29sIHNob3Vs
ZEFubm90YXRlT3JGb3JjZUlubGluZSA9IGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hv
dWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5SW5saW5lKTsKKyAgICBib29sIHNob3VsZE92ZXJy
aWRlU3R5bGVBdHRyID0gc2hvdWxkQW5ub3RhdGVPckZvcmNlSW5saW5lIHx8IHNob3VsZEFwcGx5
V3JhcHBpbmdTdHlsZShlbGVtZW50KTsKICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8
IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIEF0dHJpYnV0ZSogYXR0cmlidXRlID0gYXR0cmlidXRl
cy0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgLy8gV2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBh
dHRyaWJ1dGUgc2VwYXJhdGVseSwgYmVsb3cuCi0gICAgICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUo
KSA9PSBzdHlsZUF0dHIgJiYgZWxlbWVudC0+aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5v
dGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUpKQorICAgICAgICBpZiAoYXR0cmlidXRlLT5uYW1l
KCkgPT0gc3R5bGVBdHRyICYmIHNob3VsZE92ZXJyaWRlU3R5bGVBdHRyKQogICAgICAgICAgICAg
Y29udGludWU7CiAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZShvdXQsIGVsZW1lbnQsICphdHRyaWJ1
dGUsIDApOwogICAgIH0KIAotICAgIGlmIChlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNo
b3VsZEFubm90YXRlKCkgfHwgYWRkRGlzcGxheUlubGluZSkpIHsKLSAgICAgICAgUmVmUHRyPEVk
aXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSh0b0hUTUxFbGVtZW50KGVs
ZW1lbnQpLT5nZXRJbmxpbmVTdHlsZURlY2woKSk7Ci0gICAgICAgIGlmIChzaG91bGRBbm5vdGF0
ZSgpKQotICAgICAgICAgICAgc3R5bGUtPm1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0
aW9uKHRvSFRNTEVsZW1lbnQoZWxlbWVudCkpOwotICAgICAgICBpZiAoYWRkRGlzcGxheUlubGlu
ZSkKLSAgICAgICAgICAgIHN0eWxlLT5zdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURp
c3BsYXksIENTU1ZhbHVlSW5saW5lLCB0cnVlKTsKKyAgICBpZiAoc2hvdWxkT3ZlcnJpZGVTdHls
ZUF0dHIpIHsKKyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gbmV3SW5saW5lU3R5bGU7CisK
KyAgICAgICAgaWYgKHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KSkgeworICAgICAg
ICAgICAgbmV3SW5saW5lU3R5bGUgPSBtX3dyYXBwaW5nU3R5bGUtPmNvcHkoKTsKKyAgICAgICAg
ICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxl
KGVsZW1lbnQpOworICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVN0eWxlQ29uZmxp
Y3RpbmdXaXRoU3R5bGVPZk5vZGUoZWxlbWVudCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbmV3SW5saW5lU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOworCisgICAgICAgIGlm
IChlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50
Kj4oZWxlbWVudCktPmlubGluZVN0eWxlRGVjbCgpKQorICAgICAgICAgICAgbmV3SW5saW5lU3R5
bGUtPm92ZXJyaWRlV2l0aFN0eWxlKHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50
KS0+aW5saW5lU3R5bGVEZWNsKCkpOwogCi0gICAgICAgIC8vIElmIHRoZSBub2RlIGlzIG5vdCBm
dWxseSBzZWxlY3RlZCBieSB0aGUgcmFuZ2UsIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBrZWVwIHN0
eWxlcyB0aGF0IGFmZmVjdCBpdHMgcmVsYXRpb25zaGlwIHRvIHRoZSBub2RlcyBhcm91bmQgaXQK
LSAgICAgICAgLy8gb25seSB0aGUgb25lcyB0aGF0IGFmZmVjdCBpdCBhbmQgdGhlIG5vZGVzIHdp
dGhpbiBpdC4KLSAgICAgICAgaWYgKHJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9PSBEb2VzTm90RnVs
bHlTZWxlY3ROb2RlKQotICAgICAgICAgICAgc3R5bGUtPnN0eWxlKCktPnJlbW92ZVByb3BlcnR5
KENTU1Byb3BlcnR5RmxvYXQpOworICAgICAgICBpZiAoc2hvdWxkQW5ub3RhdGVPckZvcmNlSW5s
aW5lKSB7CisgICAgICAgICAgICBpZiAoc2hvdWxkQW5ub3RhdGUoKSkKKyAgICAgICAgICAgICAg
ICBuZXdJbmxpbmVTdHlsZS0+bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24odG9I
VE1MRWxlbWVudChlbGVtZW50KSk7CiAKLSAgICAgICAgaWYgKCFzdHlsZS0+aXNFbXB0eSgpKSB7
CisgICAgICAgICAgICBpZiAoYWRkRGlzcGxheUlubGluZSkKKyAgICAgICAgICAgICAgICBuZXdJ
bmxpbmVTdHlsZS0+Zm9yY2VJbmxpbmUoKTsKKworICAgICAgICAgICAgLy8gSWYgdGhlIG5vZGUg
aXMgbm90IGZ1bGx5IHNlbGVjdGVkIGJ5IHRoZSByYW5nZSwgdGhlbiB3ZSBkb24ndCB3YW50IHRv
IGtlZXAgc3R5bGVzIHRoYXQgYWZmZWN0IGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG5vZGVzIGFy
b3VuZCBpdAorICAgICAgICAgICAgLy8gb25seSB0aGUgb25lcyB0aGF0IGFmZmVjdCBpdCBhbmQg
dGhlIG5vZGVzIHdpdGhpbiBpdC4KKyAgICAgICAgICAgIGlmIChyYW5nZUZ1bGx5U2VsZWN0c05v
ZGUgPT0gRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSAmJiBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKSkK
KyAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+cmVtb3ZlUHJvcGVydHko
Q1NTUHJvcGVydHlGbG9hdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW5ld0lubGluZVN0
eWxlLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3Qg
U3RyaW5nLCBzdHlsZVByZWZpeCwgKCIgc3R5bGU9XCIiKSk7CiAgICAgICAgICAgICBhcHBlbmQo
b3V0LCBzdHlsZVByZWZpeCk7Ci0gICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQs
IHN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKKyAgICAgICAgICAg
IGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgbmV3SW5saW5lU3R5bGUtPnN0eWxlKCktPmNzc1Rl
eHQoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAgICAgICAgb3V0LmFwcGVuZCgnXCInKTsKICAg
ICAgICAgfQogICAgIH0KQEAgLTI3OCw2ICszMzUsMjkgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvcjo6YXBwZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1l
bnQKIAogTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKE5vZGUq
IHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCkKIHsKKyAgICBpZiAoIW1faGlnaGVzdE5vZGVUb0Jl
U2VyaWFsaXplZCkgeworICAgICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gdHJhdmVyc2VOb2Rlc0Zv
clNlcmlhbGl6YXRpb24oc3RhcnROb2RlLCBwYXN0RW5kLCBmYWxzZSk7CisgICAgICAgIG1faGln
aGVzdE5vZGVUb0JlU2VyaWFsaXplZCA9IGxhc3RDbG9zZWQ7CisgICAgfQorICAgIAorICAgIE5v
ZGUqIHBhcmVudE9mSGlnaGVzdE5vZGUgPSBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPyBt
X2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQtPnBhcmVudE5vZGUoKSA6IDA7CisgICAgaWYgKHBh
cmVudE9mSGlnaGVzdE5vZGUpIHsKKyAgICAgICAgbV93cmFwcGluZ1N0eWxlID0gRWRpdGluZ1N0
eWxlOjpjcmVhdGUocGFyZW50T2ZIaWdoZXN0Tm9kZSwgRWRpdGluZ1N0eWxlOjpFZGl0aW5nSW5o
ZXJpdGFibGVQcm9wZXJ0aWVzQW5kQmFja2dyb3VuZENvbG9ySW5FZmZlY3QpOworCisgICAgICAg
IC8vIFN0eWxlcyB0aGF0IE1haWwgYmxvY2txdW90ZXMgY29udHJpYnV0ZSBzaG91bGQgb25seSBi
ZSBwbGFjZWQgb24gdGhlIE1haWwgYmxvY2txdW90ZSwKKyAgICAgICAgLy8gdG8gaGVscCB1cyBk
aWZmZXJlbnRpYXRlIHRob3NlIHN0eWxlcyBmcm9tIG9uZXMgdGhhdCB0aGUgdXNlciBoYXMgYXBw
bGllZC4KKyAgICAgICAgLy8gVGhpcyBoZWxwcyB1cyBnZXQgdGhlIGNvbG9yIG9mIGNvbnRlbnQg
cGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQuCisgICAgICAgIG1fd3JhcHBpbmdTdHlsZS0+
cmVtb3ZlU3R5bGVBZGRlZEJ5Tm9kZShlbmNsb3NpbmdOb2RlT2ZUeXBlKGZpcnN0UG9zaXRpb25J
bk9yQmVmb3JlTm9kZShwYXJlbnRPZkhpZ2hlc3ROb2RlKSwgaXNNYWlsQmxvY2txdW90ZSwgQ2Fu
Q3Jvc3NFZGl0aW5nQm91bmRhcnkpKTsKKworICAgICAgICAvLyBDYWxsIGNvbGxhcHNlVGV4dERl
Y29yYXRpb25Qcm9wZXJ0aWVzIGZpcnN0IG9yIG90aGVyd2lzZSBpdCdsbCBjb3B5IHRoZSB2YWx1
ZSBvdmVyIGZyb20gaW4tZWZmZWN0IHRvIHRleHQtZGVjb3JhdGlvbnMuCisgICAgICAgIG1fd3Jh
cHBpbmdTdHlsZS0+Y29sbGFwc2VUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMoKTsKKyAgICB9CisK
KyAgICByZXR1cm4gdHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oc3RhcnROb2RlLCBwYXN0
RW5kLCB0cnVlKTsKK30KKworTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRyYXZlcnNl
Tm9kZXNGb3JTZXJpYWxpemF0aW9uKE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCwgYm9v
bCBzaG91bGRFbWl0KQorewogICAgIFZlY3RvcjxOb2RlKj4gYW5jZXN0b3JzVG9DbG9zZTsKICAg
ICBOb2RlKiBuZXh0OwogICAgIE5vZGUqIGxhc3RDbG9zZWQgPSAwOwpAQCAtMzA0LDExICszODQs
MTMgQEAgTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKE5vZGUq
IHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCkKICAgICAgICAgICAgICAgICBuZXh0ID0gcGFzdEVu
ZDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEFkZCB0aGUgbm9kZSB0byB0aGUg
bWFya3VwIGlmIHdlJ3JlIG5vdCBza2lwcGluZyB0aGUgZGVzY2VuZGFudHMKLSAgICAgICAgICAg
IGFwcGVuZFN0YXJ0VGFnKG4pOworICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAg
ICAgICAgICAgYXBwZW5kU3RhcnRUYWcobik7CiAKICAgICAgICAgICAgIC8vIElmIG5vZGUgaGFz
IG5vIGNoaWxkcmVuLCBjbG9zZSB0aGUgdGFnIG5vdy4KICAgICAgICAgICAgIGlmICghbi0+Y2hp
bGROb2RlQ291bnQoKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhuKTsKKyAgICAg
ICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAgICAgICAgICAgYXBwZW5kRW5k
VGFnKG4pOwogICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBuOwogICAgICAgICAgICAgfSBl
bHNlIHsKICAgICAgICAgICAgICAgICBvcGVuZWRUYWcgPSB0cnVlOwpAQCAtMzI1LDcgKzQwNyw4
IEBAIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2RlcyhOb2RlKiBz
dGFydE5vZGUsIE5vZGUqIHBhc3RFbmQpCiAgICAgICAgICAgICAgICAgaWYgKG5leHQgIT0gcGFz
dEVuZCAmJiBuZXh0LT5pc0Rlc2NlbmRhbnRPZihhbmNlc3RvcikpCiAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIC8vIE5vdCBhdCB0aGUgZW5kIG9mIHRoZSByYW5n
ZSwgY2xvc2UgYW5jZXN0b3JzIHVwIHRvIHNpYmxpbmcgb2YgbmV4dCBub2RlLgotICAgICAgICAg
ICAgICAgIGFwcGVuZEVuZFRhZyhhbmNlc3Rvcik7CisgICAgICAgICAgICAgICAgaWYgKHNob3Vs
ZEVtaXQpCisgICAgICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhhbmNlc3Rvcik7CiAgICAg
ICAgICAgICAgICAgbGFzdENsb3NlZCA9IGFuY2VzdG9yOwogICAgICAgICAgICAgICAgIGFuY2Vz
dG9yc1RvQ2xvc2UucmVtb3ZlTGFzdCgpOwogICAgICAgICAgICAgfQpAQCAtMzQwLDcgKzQyMyw4
IEBAIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2RlcyhOb2RlKiBz
dGFydE5vZGUsIE5vZGUqIHBhc3RFbmQpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKICAgICAgICAgICAgICAgICAgICAgLy8gb3IgYikgYW5jZXN0b3JzIHRoYXQgd2UgbmV2ZXIg
ZW5jb3VudGVyZWQgZHVyaW5nIGEgcHJlLW9yZGVyIHRyYXZlcnNhbCBzdGFydGluZyBhdCBzdGFy
dE5vZGU6CiAgICAgICAgICAgICAgICAgICAgIEFTU0VSVChzdGFydE5vZGUtPmlzRGVzY2VuZGFu
dE9mKHBhcmVudCkpOwotICAgICAgICAgICAgICAgICAgICB3cmFwV2l0aE5vZGUocGFyZW50KTsK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAgICAgICAgICAgICAg
ICAgICB3cmFwV2l0aE5vZGUocGFyZW50KTsKICAgICAgICAgICAgICAgICAgICAgbGFzdENsb3Nl
ZCA9IHBhcmVudDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC01MTMsNyAr
NTk3LDEzIEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8
Tm9kZSo+KiBub2RlcywgRUFubm90YXRlRm9ySW50ZXJjCiAKICAgICBkb2N1bWVudC0+dXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHNob3VsZEFubm90
YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCkpOworICAgIE5vZGUqIGJvZHkgPSBlbmNsb3NpbmdOb2Rl
V2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2VzdG9yKSwgYm9keVRhZyk7Cisg
ICAgTm9kZSogZnVsbHlTZWxlY3RlZFJvb3QgPSAwOworICAgIC8vIEZJWE1FOiBEbyB0aGlzIGZv
ciBhbGwgZnVsbHkgc2VsZWN0ZWQgYmxvY2tzLCBub3QganVzdCB0aGUgYm9keS4KKyAgICBpZiAo
Ym9keSAmJiBhcmVSYW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29u
dGVudHNPZk5vZGUoYm9keSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgcmFuZ2UpKQorICAg
ICAgICBmdWxseVNlbGVjdGVkUm9vdCA9IGJvZHk7CisgICAgTm9kZSogc3BlY2lhbENvbW1vbkFu
Y2VzdG9yID0gaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKHVwZGF0ZWRSYW5nZS5nZXQoKSwg
ZnVsbHlTZWxlY3RlZFJvb3QsIHNob3VsZEFubm90YXRlKTsKKyAgICBTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHNob3VsZEFubm90
YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIHNwZWNpYWxDb21tb25BbmNlc3Rvcik7CiAgICAgTm9k
ZSogcGFzdEVuZCA9IHVwZGF0ZWRSYW5nZS0+cGFzdExhc3ROb2RlKCk7CiAKICAgICBOb2RlKiBz
dGFydE5vZGUgPSB1cGRhdGVkUmFuZ2UtPmZpcnN0Tm9kZSgpOwpAQCAtNTM5LDE0ICs2MjksNiBA
QCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgVmVjdG9yPE5vZGUqPiog
bm9kZXMsIEVBbm5vdGF0ZUZvckludGVyYwogICAgICAgICBBU1NFUlQoIWVjKTsKICAgICB9CiAK
LSAgICBOb2RlKiBib2R5ID0gZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9k
ZShjb21tb25BbmNlc3RvciksIGJvZHlUYWcpOwotICAgIE5vZGUqIGZ1bGx5U2VsZWN0ZWRSb290
ID0gMDsKLSAgICAvLyBGSVhNRTogRG8gdGhpcyBmb3IgYWxsIGZ1bGx5IHNlbGVjdGVkIGJsb2Nr
cywgbm90IGp1c3QgdGhlIGJvZHkuCi0gICAgaWYgKGJvZHkgJiYgYXJlUmFuZ2VzRXF1YWwoVmlz
aWJsZVNlbGVjdGlvbjo6c2VsZWN0aW9uRnJvbUNvbnRlbnRzT2ZOb2RlKGJvZHkpLnRvTm9ybWFs
aXplZFJhbmdlKCkuZ2V0KCksIHJhbmdlKSkKLSAgICAgICAgZnVsbHlTZWxlY3RlZFJvb3QgPSBi
b2R5OwotCi0gICAgTm9kZSogc3BlY2lhbENvbW1vbkFuY2VzdG9yID0gaGlnaGVzdEFuY2VzdG9y
VG9XcmFwTWFya3VwKHVwZGF0ZWRSYW5nZS5nZXQoKSwgZnVsbHlTZWxlY3RlZFJvb3QsIHNob3Vs
ZEFubm90YXRlKTsKLQogICAgIE5vZGUqIGxhc3RDbG9zZWQgPSBhY2N1bXVsYXRvci5zZXJpYWxp
emVOb2RlcyhzdGFydE5vZGUsIHBhc3RFbmQpOwogCiAgICAgaWYgKHNwZWNpYWxDb21tb25BbmNl
c3RvciAmJiBsYXN0Q2xvc2VkKSB7CkBAIC01ODYsMjAgKzY2OCw2IEBAIFN0cmluZyBjcmVhdGVN
YXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCBWZWN0b3I8Tm9kZSo+KiBub2RlcywgRUFubm90YXRl
Rm9ySW50ZXJjCiAgICAgICAgIH0KICAgICB9CiAKLSAgICAvLyBBZGQgYSB3cmFwcGVyIHNwYW4g
d2l0aCB0aGUgc3R5bGVzIHRoYXQgYWxsIG9mIHRoZSBub2RlcyBpbiB0aGUgbWFya3VwIGluaGVy
aXQuCi0gICAgQ29udGFpbmVyTm9kZSogcGFyZW50T2ZMYXN0Q2xvc2VkID0gbGFzdENsb3NlZCA/
IGxhc3RDbG9zZWQtPnBhcmVudE5vZGUoKSA6IDA7Ci0gICAgaWYgKHBhcmVudE9mTGFzdENsb3Nl
ZCAmJiBwYXJlbnRPZkxhc3RDbG9zZWQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgUmVmUHRyPEVk
aXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwYXJlbnRPZkxhc3RDbG9z
ZWQsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0luaGVyaXRhYmxlUHJvcGVydGllc0FuZEJhY2tncm91
bmRDb2xvckluRWZmZWN0KTsKLQotICAgICAgICAvLyBTdHlsZXMgdGhhdCBNYWlsIGJsb2NrcXVv
dGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcGxhY2VkIG9uIHRoZSBNYWlsIGJsb2NrcXVv
dGUsIHRvIGhlbHAKLSAgICAgICAgLy8gdXMgZGlmZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMgZnJv
bSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxpZWQuICBUaGlzIGhlbHBzIHVzCi0gICAgICAg
IC8vIGdldCB0aGUgY29sb3Igb2YgY29udGVudCBwYXN0ZWQgaW50byBibG9ja3F1b3RlcyByaWdo
dC4KLSAgICAgICAgc3R5bGUtPnJlbW92ZVN0eWxlQWRkZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9m
VHlwZShmaXJzdFBvc2l0aW9uSW5Ob2RlKHBhcmVudE9mTGFzdENsb3NlZCksIGlzTWFpbEJsb2Nr
cXVvdGUsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7Ci0KLSAgICAgICAgaWYgKCFzdHlsZS0+
aXNFbXB0eSgpKQotICAgICAgICAgICAgYWNjdW11bGF0b3Iud3JhcFdpdGhTdHlsZU5vZGUoc3R5
bGUtPnN0eWxlKCksIGRvY3VtZW50KTsKLSAgICB9Ci0KICAgICAvLyBGSVhNRTogVGhlIGludGVy
Y2hhbmdlIG5ld2xpbmUgc2hvdWxkIGJlIHBsYWNlZCBpbiB0aGUgYmxvY2sgdGhhdCBpdCdzIGlu
LCBub3QgYWZ0ZXIgYWxsIG9mIHRoZSBjb250ZW50LCB1bmNvbmRpdGlvbmFsbHkuCiAgICAgaWYg
KHNob3VsZEFubm90YXRlID09IEFubm90YXRlRm9ySW50ZXJjaGFuZ2UgJiYgbmVlZEludGVyY2hh
bmdlTmV3bGluZUFmdGVyKHZpc2libGVFbmQucHJldmlvdXMoKSkpCiAgICAgICAgIGFjY3VtdWxh
dG9yLmFwcGVuZFN0cmluZyhpbnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103412</attachid>
            <date>2011-08-09 16:07:40 -0700</date>
            <delta_ts>2011-08-10 17:23:33 -0700</delta_ts>
            <desc>updated after r92695</desc>
            <filename>bug-34564-20110809160739.patch</filename>
            <type>text/plain</type>
            <size>42398</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNzIxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMDkgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29weWluZyBjYW4gcmVzdWx0IGlu
IHNwYW4gYXJvdW5kIGJsb2NrIGVsZW1lbnRzIG9uIHRoZSBjbGlwYm9hcmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29tcGxldGVseSBvdmVyaGF1bGVk
IHRoZSB3YXkgV2ViS2l0IHByZXNlcnZlcyBzdHlsZSBpbiBjb3B5IGFuZCBwYXN0ZS4gSW5zdGVh
ZCBvZiB3cmFwcGluZyB0aGUgZW50aXJlCisgICAgICAgIHNlcmlhbGl6ZWQgY29udGVudHMgYnkg
YSBBcHBsZSBzdHlsZSBzcGFuLCBXZWJLaXQgbm93IGFkZHMgaW5saW5lIHN0eWxlIHRvIHRoZSB0
b3AgbGV2ZWwgZWxlbWVudHMsCisgICAgICAgIHdyYXAgdG9wIGxldmVsIHRleHQgbm9kZXMgYnkg
YSBzdHlsZSBzcGFuLgorCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVy
dGllcyk6IFJlbW92ZSB0ZXh0LWRlY29yYXRpb24gcHJvcGVydHkgd2hlbiB0aGUgdmFsdWUKKyAg
ICAgICAgb2YgLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCBpcyBub25lLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRl
eHQpOiBTaW5jZSBkaXNwbGF5OiBpbmxpbmUgYW5kIGZsb2F0OiBub25lIGFyZSBub3cKKyAgICAg
ICAgYWRkZWQgb24gY29weSwgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgb24gcGFzdGUuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZh
dWx0U3R5bGUpOiBUYWtlcyBFbGVtZW50KiBpbnN0ZWFkIG9mIFN0eWxlZEVsZW1lbnQqLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpmb3JjZUlubGluZSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0UHJvcGVydGllc05vdEluKTogUmVtb3ZlIHByb3BlcnRpZXMgb25seSB3
aGVuIHRoZSBiYXNlIHN0eWxlIGhhcyB0aGVtLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0
eWxlLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OlN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yKTogVGFrZXMgaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFwV2l0aFN0eWxlTm9kZSk6IENh
bGxzIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcgYW5kIHN0eWxlTm9kZUNsb3NlVGFnLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0eWxlTm9kZU9wZW5U
YWcpOiBFeHRyYWN0ZWQgZnJvbSB3cmFwV2l0aFN0eWxlTm9kZS4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQpOiBXcmFw
cyB0ZXh0IG5vZGUgd2l0aCBhIHN0eWxlIHNwYW4gaWYgbmVlZGVkLgorICAgICAgICBTZXQgZGlz
cGxheTogaW5saW5lIGFuZCBmbG9hdDogbm9uZSBzbyB0aGF0IGl0IHdvbid0IGJlIGNvbnZlcnRl
ZCB0byBhIGJsb2NrIG9uIHBhc3RlIHNpZGUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudCk6IEFkZCB3cmFwcGluZyBzdHlsZSBpZiBhcHBy
b3ByaWF0ZTsgUmVtb3ZlIGFueSBwcm9wZXJ0aWVzCisgICAgICAgIHRoYXQgYXJlIG92ZXJyaWRk
ZW4gYnkgZGVmYXVsdCBzdHlsZSBhbmQgYW55IHN0eWxlIHRoYXQgbWF5IGNvbmZsaWN0IHdpdGgg
dGhlIGNvbXB1dGVkIHN0eWxlIG9mIG5vZGUgdG8KKyAgICAgICAgYXZvaWQgbW9kaWZ5aW5nIHRo
ZSBhcHBlYXJhbmNlIG9mIHRoZSBzZXJpYWxpemVkIG5vZGVzLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKTogQ29tcHV0ZSB3cmFwcGlu
ZyBzdHlsZTsgY29waWVzIG9mIHRoaXMgc3R5bGUgYXJlCisgICAgICAgIG1vZGlmaWVkIGFzIG5l
ZWRlZCB3aGVuIHNlcmlhbGl6aW5nIHRvcC1sZXZlbCBlbGVtZW50cyBvciB0ZXh0IG5vZGVzLiBX
ZSBjYWxsIHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uCisgICAgICAgIHdpdGggc2hvdWxk
RW1pdCBzZXQgZmFsc2UgZmlyc3QgdG8gY29tcHV0ZSB0aGUgaGlnaGVzdCBub2RlIHRvIGJlIHNl
cmlhbGl6ZWQuIFRoZSBzZWNvbmQgY2FsbCB0bworICAgICAgICB0cmF2ZXJzZU5vZGVzRm9yU2Vy
aWFsaXphdGlvbiB3aWxsIGFjdHVhbGx5IHNlcmlhbGl6ZSB0aGUgbm9kZXMuCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6
YXRpb24pOiBFeHRyYWN0ZWQgZnJvbSBzZXJpYWxpemVOb2Rlcy4KKyAgICAgICAgT3V0cHV0cyBz
dHJpbmcgb25seSBpZiBzaG91bGRFbWl0IGlzIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVNYXJrdXApOiBObyBsb25nZXIgYWRkcyB3cmFwcGluZyBzcGFucy4KKwogMjAxMS0wOC0wOSAg
RW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3dpdGNoIFJlbmRl
ckJsb2NrIHRvIHRvIG5ldyBsYXlvdXQgdHlwZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAJKHJldmlzaW9uIDkyNzA2KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsNyArNTU3LDEwIEBA
IHZvaWQgRWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0aW8KICAgICBpZiAoIXRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX211dGFibGVTdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgdGV4dERlY29yYXRpb25z
SW5FZmZlY3QtPmNzc1RleHQoKSwgbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHko
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikpOworICAgIGlmICh0ZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdC0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0aW9uc0luRWZmZWN0LT5jc3NU
ZXh0KCksIG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KENTU1Byb3BlcnR5VGV4
dERlY29yYXRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKICAgICBtX211dGFibGVTdHlsZS0+
cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7
CiB9CiAKQEAgLTk1Nyw5ICs5NjAsMTggQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxl
RnJvbVJ1bGVzQQogICAgICAgICBjb21wdXRlZFN0eWxlLT5yZW1vdmVQcm9wZXJ0aWVzSW5FbGVt
ZW50RGVmYXVsdFN0eWxlKGVsZW1lbnQpOwogICAgICAgICBtX211dGFibGVTdHlsZSA9IGdldFBy
b3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgY29tcHV0ZWRTdHlsZS0+bV9tdXRh
YmxlU3R5bGUuZ2V0KCkpOwogICAgIH0KKworICAgIC8vIDMuIElmIHRoaXMgZWxlbWVudCBpcyBh
IHNwYW4gYW5kIGhhcyBkaXNwbGF5OiBpbmxpbmUgb3IgZmxvYXQ6IG5vbmUsIHJlbW92ZSB0aGVt
IHVubGVzcyB0aGV5IGFyZSBvdmVycmlkZW4gYnkgcnVsZXMuCisgICAgLy8gVGhlc2UgcnVsZXMg
YXJlIGFkZGVkIGJ5IHNlcmlhbGl6YXRpb24gY29kZSB0byB3cmFwIHRleHQgbm9kZXMuCisgICAg
aWYgKGlzU3R5bGVTcGFuKGVsZW1lbnQpKSB7CisgICAgICAgIGlmICghc3R5bGVGcm9tTWF0Y2hl
ZFJ1bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlzcGxheSkgJiYgZ2V0SWRl
bnRpZmllclZhbHVlKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eURpc3BsYXkpID09
IENTU1ZhbHVlSW5saW5lKQorICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3Bl
cnR5KENTU1Byb3BlcnR5RGlzcGxheSk7CisgICAgICAgIGlmICghc3R5bGVGcm9tTWF0Y2hlZFJ1
bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RmxvYXQpICYmIGdldElkZW50aWZp
ZXJWYWx1ZShtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlGbG9hdCkgPT0gQ1NTVmFs
dWVOb25lKQorICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1By
b3BlcnR5RmxvYXQpOworICAgIH0KIH0KIAotdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVByb3Bl
cnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoU3R5bGVkRWxlbWVudCogZWxlbWVudCkKK3ZvaWQg
RWRpdGluZ1N0eWxlOjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKEVsZW1l
bnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX211dGFibGVTdHlsZSB8fCAhbV9tdXRhYmxlU3R5
bGUtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CkBAIC05NzQsNiArOTg2LDE0IEBAIHZvaWQg
RWRpdGluZ1N0eWxlOjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGUKIAogICAgIG1fbXV0YWJsZVN0eWxl
LT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQocHJvcGVydGllc1RvUmVtb3ZlLmRhdGEoKSwgcHJvcGVy
dGllc1RvUmVtb3ZlLnNpemUoKSk7CiB9CisKK3ZvaWQgRWRpdGluZ1N0eWxlOjpmb3JjZUlubGlu
ZSgpCit7CisgICAgaWYgKCFtX211dGFibGVTdHlsZSkKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUg
PSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uc3QgYm9vbCBw
cm9wZXJ0eUlzSW1wb3J0YW50ID0gdHJ1ZTsKKyAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwgcHJvcGVydHlJc0ltcG9ydGFu
dCk7Cit9CiAgICAgCiAKIHN0YXRpYyB2b2lkIHJlY29uY2lsZVRleHREZWNvcmF0aW9uUHJvcGVy
dGllcyhDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCkBAIC0xMTc4LDEzICsxMTk4
LDEzIEBAIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHIKICAgICBkaWZm
VGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwg
YmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsKICAgICBkaWZmVGV4dERlY29yYXRp
b25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsKIAotICAgIGlmIChmb250V2Vp
Z2h0SXNCb2xkKHJlc3VsdC5nZXQoKSkgPT0gZm9udFdlaWdodElzQm9sZChiYXNlU3R5bGUpKQor
ICAgIGlmIChiYXNlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U2l6
ZSkgJiYgZm9udFdlaWdodElzQm9sZChyZXN1bHQuZ2V0KCkpID09IGZvbnRXZWlnaHRJc0JvbGQo
YmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRXZWlnaHQpOwogCi0gICAgaWYgKGdldFJHQkFGb250Q29sb3IocmVzdWx0LmdldCgpKSA9PSBn
ZXRSR0JBRm9udENvbG9yKGJhc2VTdHlsZSkpCisgICAgaWYgKGJhc2VTdHlsZS0+Z2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSAmJiBnZXRSR0JBRm9udENvbG9yKHJlc3VsdC5n
ZXQoKSkgPT0gZ2V0UkdCQUZvbnRDb2xvcihiYXNlU3R5bGUpKQogICAgICAgICByZXN1bHQtPnJl
bW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IpOwogCi0gICAgaWYgKGdldFRleHRBbGlnbm1l
bnQocmVzdWx0LmdldCgpKSA9PSBnZXRUZXh0QWxpZ25tZW50KGJhc2VTdHlsZSkpCisgICAgaWYg
KGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVRleHRBbGlnbikgJiYg
Z2V0VGV4dEFsaWdubWVudChyZXN1bHQuZ2V0KCkpID09IGdldFRleHRBbGlnbm1lbnQoYmFzZVN0
eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGln
bik7CiAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5oCShyZXZpc2lvbiA5MjcwNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIGNsYXNzIENT
U1ZhbHVlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTEVsZW1l
bnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgUG9zaXRpb247CkBAIC0xMjYsNiArMTI3LDggQEAgcHVi
bGljOgogICAgIHZvaWQgbWVyZ2VTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50Kik7CiAgICAg
dm9pZCBtZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50Kik7
CiAgICAgdm9pZCByZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVudCos
IE5vZGUqIGNvbnRleHQpOworICAgIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1
bHRTdHlsZShFbGVtZW50Kik7CisgICAgdm9pZCBmb3JjZUlubGluZSgpOwogCiAgICAgZmxvYXQg
Zm9udFNpemVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YTsgfQogICAgIGJv
b2wgaGFzRm9udFNpemVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YSAhPSBO
b0ZvbnREZWx0YTsgfQpAQCAtMTQ0LDcgKzE0Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleHRy
YWN0Rm9udFNpemVEZWx0YSgpOwogICAgIGJvb2wgY29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZF
bGVtZW50KFN0eWxlZEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlLCBWZWN0
b3I8Q1NTUHJvcGVydHlJRD4qIGNvbmZsaWN0aW5nUHJvcGVydGllcykgY29uc3Q7CiAgICAgdm9p
ZCBtZXJnZVN0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKik7Ci0gICAgdm9pZCByZW1v
dmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKFN0eWxlZEVsZW1lbnQqKTsKIAogICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbV9tdXRhYmxlU3R5bGU7CiAgICAg
Ym9vbCBtX3Nob3VsZFVzZUZpeGVkRGVmYXVsdEZvbnRTaXplOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAkocmV2aXNpb24gOTI3MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMiArMTIwLDcgQEAgY2xhc3MgU3R5
bGVkTWFya3VwQWNjdW11bGF0b3IgOiBwdWJsaWMgTQogcHVibGljOgogICAgIGVudW0gUmFuZ2VG
dWxseVNlbGVjdHNOb2RlIHsgRG9lc0Z1bGx5U2VsZWN0Tm9kZSwgRG9lc05vdEZ1bGx5U2VsZWN0
Tm9kZSB9OwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9k
ZXMsIEVBYnNvbHV0ZVVSTHMgc2hvdWxkUmVzb2x2ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hh
bmdlIHNob3VsZEFubm90YXRlLCBjb25zdCBSYW5nZSogcmFuZ2UpCi0gICAgOiBNYXJrdXBBY2N1
bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHJhbmdlKQotICAgICwgbV9zaG91bGRB
bm5vdGF0ZShzaG91bGRBbm5vdGF0ZSkKLSAgICB7Ci0gICAgfQotCisgICAgU3R5bGVkTWFya3Vw
QWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMsIEVBbm5vdGF0
ZUZvckludGVyY2hhbmdlLCBjb25zdCBSYW5nZSosIE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlh
bGl6ZWQgPSAwKTsKICAgICBOb2RlKiBzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5v
ZGUqIHBhc3RFbmQpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiBzKSB7IHJldHVybiBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RyaW5nKHMpOyB9CiAgICAg
dm9pZCB3cmFwV2l0aE5vZGUoTm9kZSosIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZh
bHNlLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKTsKQEAgLTEz
MywxOCArMTI4LDM3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGFrZVJlc3VsdHMoKTsKIAogcHJp
dmF0ZToKKyAgICB2b2lkIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcoVmVjdG9yPFVDaGFyPiYsIENT
U1N0eWxlRGVjbGFyYXRpb24qLCBEb2N1bWVudCosIGJvb2wgaXNCbG9jayA9IGZhbHNlKTsKKyAg
ICBjb25zdCBTdHJpbmcgc3R5bGVOb2RlQ2xvc2VUYWcoYm9vbCBpc0Jsb2NrID0gZmFsc2UpOwog
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRUZXh0KFZlY3RvcjxVQ2hhcj4mIG91dCwgVGV4dCopOwog
ICAgIFN0cmluZyByZW5kZXJlZFRleHQoY29uc3QgTm9kZSosIGNvbnN0IFJhbmdlKik7CiAgICAg
U3RyaW5nIHN0cmluZ1ZhbHVlRm9yUmFuZ2UoY29uc3QgTm9kZSosIGNvbnN0IFJhbmdlKik7CiAg
ICAgdm9pZCBhcHBlbmRFbGVtZW50KFZlY3RvcjxVQ2hhcj4mIG91dCwgRWxlbWVudCogZWxlbWVu
dCwgYm9vbCBhZGREaXNwbGF5SW5saW5lLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUpOwogICAgIHZv
aWQgYXBwZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQsIE5h
bWVzcGFjZXMqKSB7IGFwcGVuZEVsZW1lbnQob3V0LCBlbGVtZW50LCBmYWxzZSwgRG9lc0Z1bGx5
U2VsZWN0Tm9kZSk7IH0KIAorICAgIE5vZGUqIHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9u
KE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCwgYm9vbCBzaG91bGRFbWl0KTsKKwogICAg
IGJvb2wgc2hvdWxkQW5ub3RhdGUoKSB7IHJldHVybiBtX3Nob3VsZEFubm90YXRlID09IEFubm90
YXRlRm9ySW50ZXJjaGFuZ2U7IH0KKyAgICBib29sIHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShO
b2RlKiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faGlnaGVzdE5vZGVUb0Jl
U2VyaWFsaXplZCAmJiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQtPnBhcmVudE5vZGUoKSA9
PSBub2RlLT5wYXJlbnROb2RlKCkKKyAgICAgICAgICAgICYmIG1fd3JhcHBpbmdTdHlsZSAmJiBt
X3dyYXBwaW5nU3R5bGUtPnN0eWxlKCk7CisgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gbV9y
ZXZlcnNlZFByZWNlZGluZ01hcmt1cDsKICAgICBjb25zdCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5n
ZSBtX3Nob3VsZEFubm90YXRlOworICAgIE5vZGUqIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXpl
ZDsKKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBtX3dyYXBwaW5nU3R5bGU7CiB9OwogCitpbmxp
bmUgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yKFZlY3Rv
cjxOb2RlKj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzIHNob3VsZFJlc29sdmVVUkxzLCBFQW5ub3Rh
dGVGb3JJbnRlcmNoYW5nZSBzaG91bGRBbm5vdGF0ZSwKKyAgICBjb25zdCBSYW5nZSogcmFuZ2Us
IE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpCisgICAgOiBNYXJrdXBBY2N1bXVsYXRv
cihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHJhbmdlKQorICAgICwgbV9zaG91bGRBbm5vdGF0
ZShzaG91bGRBbm5vdGF0ZSkKKyAgICAsIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZChoaWdo
ZXN0Tm9kZVRvQmVTZXJpYWxpemVkKQoreworfQorCiB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxh
dG9yOjp3cmFwV2l0aE5vZGUoTm9kZSogbm9kZSwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVz
LCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNOb2RlKQogewogICAgIFZl
Y3RvcjxVQ2hhcj4gbWFya3VwOwpAQCAtMTYwLDIwICsxNzQsMzAgQEAgdm9pZCBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhObwogCiB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9y
Ojp3cmFwV2l0aFN0eWxlTm9kZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGlzQmxvY2spCiB7CisgICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOwor
ICAgIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcob3BlblRhZywgc3R5bGUsIGRvY3VtZW50LCBpc0Js
b2NrKTsKKyAgICBtX3JldmVyc2VkUHJlY2VkaW5nTWFya3VwLmFwcGVuZChTdHJpbmc6OmFkb3B0
KG9wZW5UYWcpKTsKKyAgICBhcHBlbmRTdHJpbmcoc3R5bGVOb2RlQ2xvc2VUYWcoaXNCbG9jaykp
OworfQorCit2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVu
VGFnKFZlY3RvcjxVQ2hhcj4mIG91dCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIERvY3Vt
ZW50KiBkb2N1bWVudCwgYm9vbCBpc0Jsb2NrKQorewogICAgIC8vIEFsbCB0ZXh0LWRlY29yYXRp
b24tcmVsYXRlZCBlbGVtZW50cyBzaG91bGQgaGF2ZSBiZWVuIHRyZWF0ZWQgYXMgc3BlY2lhbCBh
bmNlc3RvcnMKICAgICAvLyBJZiB3ZSBldmVyIGhpdCB0aGlzIEFTU0VSVCwgd2Ugc2hvdWxkIGV4
cG9ydCBTdHlsZUNoYW5nZSBpbiBBcHBseVN0eWxlQ29tbWFuZCBhbmQgdXNlIGl0IGhlcmUKICAg
ICBBU1NFUlQocHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvbikgJiYgcHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkaXZTdHlsZSwgKCI8ZGl2IHN0eWxlPVwiIikpOwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkaXZDbG9zZSwgKCI8L2Rpdj4iKSk7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0eWxlU3Bhbk9wZW4sICgi
PHNwYW4gY2xhc3M9XCIiIEFwcGxlU3R5bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIikpOworICAg
IGFwcGVuZChvdXQsIGlzQmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOworICAgIGFw
cGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnQtPmlzSFRN
TERvY3VtZW50KCkpOworICAgIG91dC5hcHBlbmQoJ1wiJyk7CisgICAgb3V0LmFwcGVuZCgnPicp
OworfQorCitjb25zdCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNs
b3NlVGFnKGJvb2wgaXNCbG9jaykKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgZGl2Q2xvc2UsICgiPC9kaXY+IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCBzdHlsZVNwYW5DbG9zZSwgKCI8L3NwYW4+IikpOwotICAgIFZlY3RvcjxVQ2hh
cj4gb3BlblRhZzsKLSAgICBhcHBlbmQob3BlblRhZywgaXNCbG9jayA/IGRpdlN0eWxlIDogc3R5
bGVTcGFuT3Blbik7Ci0gICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3BlblRhZywgc3R5bGUtPmNz
c1RleHQoKSwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOwotICAgIG9wZW5UYWcuYXBwZW5k
KCdcIicpOwotICAgIG9wZW5UYWcuYXBwZW5kKCc+Jyk7Ci0gICAgbV9yZXZlcnNlZFByZWNlZGlu
Z01hcmt1cC5hcHBlbmQoU3RyaW5nOjphZG9wdChvcGVuVGFnKSk7Ci0gICAgYXBwZW5kU3RyaW5n
KGlzQmxvY2sgPyBkaXZDbG9zZSA6IHN0eWxlU3BhbkNsb3NlKTsKKyAgICByZXR1cm4gaXNCbG9j
ayA/IGRpdkNsb3NlIDogc3R5bGVTcGFuQ2xvc2U7CiB9CiAKIFN0cmluZyBTdHlsZWRNYXJrdXBB
Y2N1bXVsYXRvcjo6dGFrZVJlc3VsdHMoKQpAQCAtMTkxLDE3ICsyMTUsMzQgQEAgU3RyaW5nIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdQogfQogCiB2b2lkIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjphcHBlbmRUZXh0KFZlY3RvcjxVQ2hhcj4mIG91dCwgVGV4dCogdGV4dCkKLXsK
LSAgICBpZiAoIXNob3VsZEFubm90YXRlKCkgfHwgKHRleHQtPnBhcmVudEVsZW1lbnQoKSAmJiB0
ZXh0LT5wYXJlbnRFbGVtZW50KCktPnRhZ1FOYW1lKCkgPT0gdGV4dGFyZWFUYWcpKSB7Cit7ICAg
IAorICAgIGJvb2wgcGFyZW50SXNUZXh0YXJlYSA9IHRleHQtPnBhcmVudEVsZW1lbnQoKSAmJiB0
ZXh0LT5wYXJlbnRFbGVtZW50KCktPnRhZ1FOYW1lKCkgPT0gdGV4dGFyZWFUYWc7CisgICAgYm9v
bCB3cmFwcGluZ1NwYW4gPSBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUodGV4dCkgJiYgIXBhcmVu
dElzVGV4dGFyZWE7CisgICAgaWYgKHdyYXBwaW5nU3BhbikgeworICAgICAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiB3cmFwcGluZ1N0eWxlID0gbV93cmFwcGluZ1N0eWxlLT5jb3B5KCk7CisgICAg
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81MzcxNTM2PgorICAgICAgICAvLyBNYWtlIHN1cmUgc3Bh
bnMgYXJlIGlubGluZSBzdHlsZSBpbiBwYXN0ZSBzaWRlIGUuZy4gc3BhbiB7IGRpc3BsYXk6IGJs
b2NrIH0KKyAgICAgICAgd3JhcHBpbmdTdHlsZS0+Zm9yY2VJbmxpbmUoKTsKKyAgICAgICAgLy8g
RklYTUU6IHNob3VsZCB0aGlzIGJlIGluY2x1ZGVkIGluIGZvcmNlSW5saW5lPworICAgICAgICB3
cmFwcGluZ1N0eWxlLT5zdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBDU1NW
YWx1ZU5vbmUpOworCisgICAgICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsKKyAgICAgICAgYXBw
ZW5kU3R5bGVOb2RlT3BlblRhZyhvcGVuVGFnLCB3cmFwcGluZ1N0eWxlLT5zdHlsZSgpLCB0ZXh0
LT5kb2N1bWVudCgpKTsKKyAgICAgICAgYXBwZW5kKG91dCwgU3RyaW5nOjphZG9wdChvcGVuVGFn
KSk7CisgICAgfQorCisgICAgaWYgKCFzaG91bGRBbm5vdGF0ZSgpIHx8IHBhcmVudElzVGV4dGFy
ZWEpCiAgICAgICAgIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRUZXh0KG91dCwgdGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICBlbHNlIHsKKyAgICAgICAgYm9vbCB1c2VSZW5kZXJlZFRleHQg
PSAhZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZSh0ZXh0KSwgc2VsZWN0
VGFnKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnQgPSB1c2VSZW5kZXJlZFRleHQgPyByZW5kZXJl
ZFRleHQodGV4dCwgbV9yYW5nZSkgOiBzdHJpbmdWYWx1ZUZvclJhbmdlKHRleHQsIG1fcmFuZ2Up
OworICAgICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcjsKKyAgICAgICAgYXBwZW5kQ2hhcmFjdGVy
c1JlcGxhY2luZ0VudGl0aWVzKGJ1ZmZlciwgY29udGVudC5jaGFyYWN0ZXJzKCksIGNvbnRlbnQu
bGVuZ3RoKCksIEVudGl0eU1hc2tJblBDREFUQSk7CisgICAgICAgIGFwcGVuZChvdXQsIGNvbnZl
cnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYXQoU3RyaW5nOjphZG9wdChidWZmZXIpLCB0ZXh0
KSk7CiAgICAgfQogCi0gICAgYm9vbCB1c2VSZW5kZXJlZFRleHQgPSAhZW5jbG9zaW5nTm9kZVdp
dGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZSh0ZXh0KSwgc2VsZWN0VGFnKTsKLSAgICBTdHJpbmcg
Y29udGVudCA9IHVzZVJlbmRlcmVkVGV4dCA/IHJlbmRlcmVkVGV4dCh0ZXh0LCBtX3JhbmdlKSA6
IHN0cmluZ1ZhbHVlRm9yUmFuZ2UodGV4dCwgbV9yYW5nZSk7Ci0gICAgVmVjdG9yPFVDaGFyPiBi
dWZmZXI7Ci0gICAgYXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0aWVzKGJ1ZmZlciwgY29u
dGVudC5jaGFyYWN0ZXJzKCksIGNvbnRlbnQubGVuZ3RoKCksIEVudGl0eU1hc2tJblBDREFUQSk7
Ci0gICAgYXBwZW5kKG91dCwgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChTdHJp
bmc6OmFkb3B0KGJ1ZmZlciksIHRleHQpKTsKKyAgICBpZiAod3JhcHBpbmdTcGFuKQorICAgICAg
ICBhcHBlbmQob3V0LCBzdHlsZU5vZGVDbG9zZVRhZygpKTsKIH0KICAgICAKIFN0cmluZyBTdHls
ZWRNYXJrdXBBY2N1bXVsYXRvcjo6cmVuZGVyZWRUZXh0KGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0
IFJhbmdlKiByYW5nZSkKQEAgLTI0NSwzMCArMjg2LDQ2IEBAIHZvaWQgU3R5bGVkTWFya3VwQWNj
dW11bGF0b3I6OmFwcGVuZEVsZW0KIAogICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGVs
ZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5s
ZW5ndGgoKTsKKyAgICBib29sIHNob3VsZEFubm90YXRlT3JGb3JjZUlubGluZSA9IGVsZW1lbnQt
PmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5SW5saW5l
KTsKKyAgICBib29sIHNob3VsZE92ZXJyaWRlU3R5bGVBdHRyID0gc2hvdWxkQW5ub3RhdGVPckZv
cmNlSW5saW5lIHx8IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KTsKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIEF0dHJpYnV0
ZSogYXR0cmlidXRlID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgLy8g
V2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgc2VwYXJhdGVseSwgYmVsb3cuCi0gICAg
ICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSA9PSBzdHlsZUF0dHIgJiYgZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUpKQorICAg
ICAgICBpZiAoYXR0cmlidXRlLT5uYW1lKCkgPT0gc3R5bGVBdHRyICYmIHNob3VsZE92ZXJyaWRl
U3R5bGVBdHRyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGFwcGVuZEF0dHJpYnV0
ZShvdXQsIGVsZW1lbnQsICphdHRyaWJ1dGUsIDApOwogICAgIH0KIAotICAgIGlmIChlbGVtZW50
LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkgfHwgYWRkRGlzcGxheUlubGlu
ZSkpIHsKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6
OmNyZWF0ZSh0b0hUTUxFbGVtZW50KGVsZW1lbnQpLT5nZXRJbmxpbmVTdHlsZURlY2woKSk7Ci0g
ICAgICAgIGlmIChzaG91bGRBbm5vdGF0ZSgpKQotICAgICAgICAgICAgc3R5bGUtPm1lcmdlU3R5
bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKHRvSFRNTEVsZW1lbnQoZWxlbWVudCkpOwotICAg
ICAgICBpZiAoYWRkRGlzcGxheUlubGluZSkKLSAgICAgICAgICAgIHN0eWxlLT5zdHlsZSgpLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCB0cnVlKTsKLQot
ICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgZnVsbHkgc2VsZWN0ZWQgYnkgdGhlIHJhbmdl
LCB0aGVuIHdlIGRvbid0IHdhbnQgdG8ga2VlcCBzdHlsZXMgdGhhdCBhZmZlY3QgaXRzIHJlbGF0
aW9uc2hpcCB0byB0aGUgbm9kZXMgYXJvdW5kIGl0Ci0gICAgICAgIC8vIG9ubHkgdGhlIG9uZXMg
dGhhdCBhZmZlY3QgaXQgYW5kIHRoZSBub2RlcyB3aXRoaW4gaXQuCi0gICAgICAgIGlmIChyYW5n
ZUZ1bGx5U2VsZWN0c05vZGUgPT0gRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSkKLSAgICAgICAgICAg
IHN0eWxlLT5zdHlsZSgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0KTsKKyAgICBp
ZiAoc2hvdWxkT3ZlcnJpZGVTdHlsZUF0dHIpIHsKKyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gbmV3SW5saW5lU3R5bGU7CiAKLSAgICAgICAgaWYgKCFzdHlsZS0+aXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxlbWVudCkpIHsKKyAgICAgICAg
ICAgIG5ld0lubGluZVN0eWxlID0gbV93cmFwcGluZ1N0eWxlLT5jb3B5KCk7CisgICAgICAgICAg
ICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1bHRTdHlsZShl
bGVtZW50KTsKKyAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUNvbmZsaWN0
aW5nV2l0aFN0eWxlT2ZOb2RlKGVsZW1lbnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKworICAgICAgICBpZiAo
ZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkgJiYgc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+
KGVsZW1lbnQpLT5pbmxpbmVTdHlsZURlY2woKSkKKyAgICAgICAgICAgIG5ld0lubGluZVN0eWxl
LT5vdmVycmlkZVdpdGhTdHlsZShzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCkt
PmlubGluZVN0eWxlRGVjbCgpKTsKKworICAgICAgICBpZiAoc2hvdWxkQW5ub3RhdGVPckZvcmNl
SW5saW5lKSB7CisgICAgICAgICAgICBpZiAoc2hvdWxkQW5ub3RhdGUoKSkKKyAgICAgICAgICAg
ICAgICBuZXdJbmxpbmVTdHlsZS0+bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24o
dG9IVE1MRWxlbWVudChlbGVtZW50KSk7CisKKyAgICAgICAgICAgIGlmIChhZGREaXNwbGF5SW5s
aW5lKQorICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5mb3JjZUlubGluZSgpOworCisg
ICAgICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgZnVsbHkgc2VsZWN0ZWQgYnkgdGhlIHJh
bmdlLCB0aGVuIHdlIGRvbid0IHdhbnQgdG8ga2VlcCBzdHlsZXMgdGhhdCBhZmZlY3QgaXRzIHJl
bGF0aW9uc2hpcCB0byB0aGUgbm9kZXMgYXJvdW5kIGl0CisgICAgICAgICAgICAvLyBvbmx5IHRo
ZSBvbmVzIHRoYXQgYWZmZWN0IGl0IGFuZCB0aGUgbm9kZXMgd2l0aGluIGl0LgorICAgICAgICAg
ICAgaWYgKHJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9PSBEb2VzTm90RnVsbHlTZWxlY3ROb2RlICYm
IG5ld0lubGluZVN0eWxlLT5zdHlsZSgpKQorICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxl
LT5zdHlsZSgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0KTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghbmV3SW5saW5lU3R5bGUtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0eWxlUHJlZml4LCAoIiBzdHlsZT1c
IiIpKTsKICAgICAgICAgICAgIGFwcGVuZChvdXQsIHN0eWxlUHJlZml4KTsKLSAgICAgICAgICAg
IGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgc3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSwgZG9j
dW1lbnRJc0hUTUwpOworICAgICAgICAgICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3V0LCBuZXdJ
bmxpbmVTdHlsZS0+c3R5bGUoKS0+Y3NzVGV4dCgpLCBkb2N1bWVudElzSFRNTCk7CiAgICAgICAg
ICAgICBvdXQuYXBwZW5kKCdcIicpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjc4LDYgKzMzNSwy
OSBAQCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtCiAKIE5vZGUqIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5v
ZGUqIHBhc3RFbmQpCiB7CisgICAgaWYgKCFtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpIHsK
KyAgICAgICAgTm9kZSogbGFzdENsb3NlZCA9IHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9u
KHN0YXJ0Tm9kZSwgcGFzdEVuZCwgZmFsc2UpOworICAgICAgICBtX2hpZ2hlc3ROb2RlVG9CZVNl
cmlhbGl6ZWQgPSBsYXN0Q2xvc2VkOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBwYXJlbnRPZkhp
Z2hlc3ROb2RlID0gbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID8gbV9oaWdoZXN0Tm9kZVRv
QmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgOiAwOworICAgIGlmIChwYXJlbnRPZkhpZ2hlc3RO
b2RlKSB7CisgICAgICAgIG1fd3JhcHBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBh
cmVudE9mSGlnaGVzdE5vZGUsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0luaGVyaXRhYmxlUHJvcGVy
dGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAgICAvLyBTdHlsZXMgdGhh
dCBNYWlsIGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcGxhY2VkIG9uIHRo
ZSBNYWlsIGJsb2NrcXVvdGUsCisgICAgICAgIC8vIHRvIGhlbHAgdXMgZGlmZmVyZW50aWF0ZSB0
aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxpZWQuCisgICAgICAg
IC8vIFRoaXMgaGVscHMgdXMgZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJs
b2NrcXVvdGVzIHJpZ2h0LgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPnJlbW92ZVN0eWxlQWRk
ZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUo
cGFyZW50T2ZIaWdoZXN0Tm9kZSksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGluZ0Jv
dW5kYXJ5KSk7CisKKyAgICAgICAgLy8gQ2FsbCBjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVy
dGllcyBmaXJzdCBvciBvdGhlcndpc2UgaXQnbGwgY29weSB0aGUgdmFsdWUgb3ZlciBmcm9tIGlu
LWVmZmVjdCB0byB0ZXh0LWRlY29yYXRpb25zLgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPmNv
bGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCk7CisgICAgfQorCisgICAgcmV0dXJuIHRy
YXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKHN0YXJ0Tm9kZSwgcGFzdEVuZCwgdHJ1ZSk7Cit9
CisKK05vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0cmF2ZXJzZU5vZGVzRm9yU2VyaWFs
aXphdGlvbihOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQsIGJvb2wgc2hvdWxkRW1pdCkK
K3sKICAgICBWZWN0b3I8Tm9kZSo+IGFuY2VzdG9yc1RvQ2xvc2U7CiAgICAgTm9kZSogbmV4dDsK
ICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gMDsKQEAgLTMwNCwxMSArMzg0LDEzIEBAIE5vZGUqIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemUKICAgICAgICAgICAgICAgICBuZXh0ID0g
cGFzdEVuZDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEFkZCB0aGUgbm9kZSB0
byB0aGUgbWFya3VwIGlmIHdlJ3JlIG5vdCBza2lwcGluZyB0aGUgZGVzY2VuZGFudHMKLSAgICAg
ICAgICAgIGFwcGVuZFN0YXJ0VGFnKG4pOworICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisg
ICAgICAgICAgICAgICAgYXBwZW5kU3RhcnRUYWcobik7CiAKICAgICAgICAgICAgIC8vIElmIG5v
ZGUgaGFzIG5vIGNoaWxkcmVuLCBjbG9zZSB0aGUgdGFnIG5vdy4KICAgICAgICAgICAgIGlmICgh
bi0+Y2hpbGROb2RlQ291bnQoKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhuKTsK
KyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kRW5kVGFnKG4pOwogICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBuOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBvcGVuZWRUYWcgPSB0cnVlOwpAQCAtMzI1LDcg
KzQwNyw4IEBAIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemUKICAgICAg
ICAgICAgICAgICBpZiAobmV4dCAhPSBwYXN0RW5kICYmIG5leHQtPmlzRGVzY2VuZGFudE9mKGFu
Y2VzdG9yKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgLy8g
Tm90IGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLCBjbG9zZSBhbmNlc3RvcnMgdXAgdG8gc2libGlu
ZyBvZiBuZXh0IG5vZGUuCi0gICAgICAgICAgICAgICAgYXBwZW5kRW5kVGFnKGFuY2VzdG9yKTsK
KyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kRW5kVGFnKGFuY2VzdG9yKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0gYW5jZXN0
b3I7CiAgICAgICAgICAgICAgICAgYW5jZXN0b3JzVG9DbG9zZS5yZW1vdmVMYXN0KCk7CiAgICAg
ICAgICAgICB9CkBAIC0zNDAsNyArNDIzLDggQEAgTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OnNlcmlhbGl6ZQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIG9yIGIpIGFuY2VzdG9ycyB0aGF0IHdlIG5ldmVyIGVuY291bnRlcmVk
IGR1cmluZyBhIHByZS1vcmRlciB0cmF2ZXJzYWwgc3RhcnRpbmcgYXQgc3RhcnROb2RlOgogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhcnROb2RlLT5pc0Rlc2NlbmRhbnRPZihwYXJlbnQp
KTsKLSAgICAgICAgICAgICAgICAgICAgd3JhcFdpdGhOb2RlKHBhcmVudCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFdp
dGhOb2RlKHBhcmVudCk7CiAgICAgICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBwYXJlbnQ7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTEzLDcgKzU5NywxMyBAQCBT
dHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAKICAgICBkb2N1bWVudC0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHNob3Vs
ZEFubm90YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCkpOworICAgIE5vZGUqIGJvZHkgPSBlbmNsb3Np
bmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2VzdG9yKSwgYm9keVRh
Zyk7CisgICAgTm9kZSogZnVsbHlTZWxlY3RlZFJvb3QgPSAwOworICAgIC8vIEZJWE1FOiBEbyB0
aGlzIGZvciBhbGwgZnVsbHkgc2VsZWN0ZWQgYmxvY2tzLCBub3QganVzdCB0aGUgYm9keS4KKyAg
ICBpZiAoYm9keSAmJiBhcmVSYW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25G
cm9tQ29udGVudHNPZk5vZGUoYm9keSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgcmFuZ2Up
KQorICAgICAgICBmdWxseVNlbGVjdGVkUm9vdCA9IGJvZHk7CisgICAgTm9kZSogc3BlY2lhbENv
bW1vbkFuY2VzdG9yID0gaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKHVwZGF0ZWRSYW5nZS5n
ZXQoKSwgZnVsbHlTZWxlY3RlZFJvb3QsIHNob3VsZEFubm90YXRlKTsKKyAgICBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHNob3Vs
ZEFubm90YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIHNwZWNpYWxDb21tb25BbmNlc3Rvcik7CiAg
ICAgTm9kZSogcGFzdEVuZCA9IHVwZGF0ZWRSYW5nZS0+cGFzdExhc3ROb2RlKCk7CiAKICAgICBO
b2RlKiBzdGFydE5vZGUgPSB1cGRhdGVkUmFuZ2UtPmZpcnN0Tm9kZSgpOwpAQCAtNTM5LDE0ICs2
MjksNiBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgICAg
IEFTU0VSVCghZWMpOwogICAgIH0KIAotICAgIE5vZGUqIGJvZHkgPSBlbmNsb3NpbmdOb2RlV2l0
aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2VzdG9yKSwgYm9keVRhZyk7Ci0gICAg
Tm9kZSogZnVsbHlTZWxlY3RlZFJvb3QgPSAwOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIGZvciBh
bGwgZnVsbHkgc2VsZWN0ZWQgYmxvY2tzLCBub3QganVzdCB0aGUgYm9keS4KLSAgICBpZiAoYm9k
eSAmJiBhcmVSYW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVu
dHNPZk5vZGUoYm9keSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgcmFuZ2UpKQotICAgICAg
ICBmdWxseVNlbGVjdGVkUm9vdCA9IGJvZHk7Ci0KLSAgICBOb2RlKiBzcGVjaWFsQ29tbW9uQW5j
ZXN0b3IgPSBoaWdoZXN0QW5jZXN0b3JUb1dyYXBNYXJrdXAodXBkYXRlZFJhbmdlLmdldCgpLCBm
dWxseVNlbGVjdGVkUm9vdCwgc2hvdWxkQW5ub3RhdGUpOwotCiAgICAgTm9kZSogbGFzdENsb3Nl
ZCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKHN0YXJ0Tm9kZSwgcGFzdEVuZCk7CiAKICAg
ICBpZiAoc3BlY2lhbENvbW1vbkFuY2VzdG9yICYmIGxhc3RDbG9zZWQpIHsKQEAgLTU4NiwyMCAr
NjY4LDYgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgLy8gQWRkIGEgd3JhcHBlciBzcGFuIHdpdGggdGhlIHN0eWxlcyB0
aGF0IGFsbCBvZiB0aGUgbm9kZXMgaW4gdGhlIG1hcmt1cCBpbmhlcml0LgotICAgIENvbnRhaW5l
ck5vZGUqIHBhcmVudE9mTGFzdENsb3NlZCA9IGxhc3RDbG9zZWQgPyBsYXN0Q2xvc2VkLT5wYXJl
bnROb2RlKCkgOiAwOwotICAgIGlmIChwYXJlbnRPZkxhc3RDbG9zZWQgJiYgcGFyZW50T2ZMYXN0
Q2xvc2VkLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocGFyZW50T2ZMYXN0Q2xvc2VkLCBFZGl0aW5nU3R5bGU6
OkVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk7
Ci0KLSAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRlIHNo
b3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLCB0byBoZWxwCi0gICAg
ICAgIC8vIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1
c2VyIGhhcyBhcHBsaWVkLiAgVGhpcyBoZWxwcyB1cwotICAgICAgICAvLyBnZXQgdGhlIGNvbG9y
IG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQuCi0gICAgICAgIHN0eWxl
LT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlv
bkluTm9kZShwYXJlbnRPZkxhc3RDbG9zZWQpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0Vk
aXRpbmdCb3VuZGFyeSkpOwotCi0gICAgICAgIGlmICghc3R5bGUtPmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIGFjY3VtdWxhdG9yLndyYXBXaXRoU3R5bGVOb2RlKHN0eWxlLT5zdHlsZSgpLCBkb2N1
bWVudCk7Ci0gICAgfQotCiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmNoYW5nZSBuZXdsaW5lIHNo
b3VsZCBiZSBwbGFjZWQgaW4gdGhlIGJsb2NrIHRoYXQgaXQncyBpbiwgbm90IGFmdGVyIGFsbCBv
ZiB0aGUgY29udGVudCwgdW5jb25kaXRpb25hbGx5LgogICAgIGlmIChzaG91bGRBbm5vdGF0ZSA9
PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlICYmIG5lZWRJbnRlcmNoYW5nZU5ld2xpbmVBZnRlcih2
aXNpYmxlRW5kLnByZXZpb3VzKCkpKQogICAgICAgICBhY2N1bXVsYXRvci5hcHBlbmRTdHJpbmco
aW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNzIxKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzMgQEAKKzIw
MTEtMDgtMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29w
eWluZyBjYW4gcmVzdWx0IGluIHNwYW4gYXJvdW5kIGJsb2NrIGVsZW1lbnRzIG9uIHRoZSBjbGlw
Ym9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0
NTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBvdmVyaGF1bGVkIHRoZSB3YXkgd2UgcHJlc2VydmUgc3R5bGVzIHdoZW4gY29weWlu
ZyBhbmQgcGFzdGluZyBIVE1MIGNvbnRlbnRzLiBNYW55IHRlc3RzIHByb2dyZXNzZWQKKyAgICAg
ICAgYW5kIGxvc3Qgd3JhcHBpbmcgc3BhbnMgd2hpbGUgb3RoZXJzIGFyZSBvYnNlcnZpbmcgZGlm
ZmVyZW50IG1hcmt1cCBvbiB0aGUgY2xpcGJvYXJkIGFzIGV4cGVjdGVkLgorCisgICAgICAgICog
ZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFrLXByZXNlcnZlcy11bmRlcmxpbmUt
Y29sb3ItZXhwZWN0ZWQudHh0OiBzcGFuJ3Mgc3R5bGUgYXR0cmlidXRlIG5vdyBoYXMKKyAgICAg
ICAgYSB0cmFpbGluZyBzcGFjZS4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2Vy
dC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQ6IExpZ2h0R3JheSBp
cyBub3cgcmdiKDIxMSwgMjExLCAyMTEpLgorICAgICAgICAqIGVkaXRpbmcvaW5zZXJ0aW5nL3Bh
Z2Utem9vbS1mb250LXNpemUtZXhwZWN0ZWQudHh0OiBTcGFuJ3Mgc3R5bGUgYXR0cmlidXRlIGxv
c3QgdGhlIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC80OTMw
OTg2LTItZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQv
ZGF0YS10cmFuc2Zlci1pdGVtcy1leHBlY3RlZC50eHQ6IERpZmZlcmVudCBzZXJpYWxpemF0aW9u
LgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3Rl
ZC50eHQ6IERpdHRvLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5Nzc3
LWZpeC1leHBlY3RlZC50eHQ6IE5vIGxvbmdlciBuZXN0cyB1bCBlcnJvbmVvdXNseSBvciBhbGln
bnMgdGhlIGlubmVyIGxpc3QKKyAgICAgICAgdG8gdGhlIHJpZ2h0LgorICAgICAgICAqIGVkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQ6IE5vIGxvbmdlciBw
cm9kdWNlcyBlcnJvbmVvdXMgd3JhcHBpbmcgc3Bhbi4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIGVkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAg
ICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dDogRGl0dG8u
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtd2l0aC1zdHlsZS00LWV4
cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogZmFzdC9ldmVudHMvb25kcm9wLXRleHQtaHRt
bC1leHBlY3RlZC50eHQ6IERpZmZlcmVudCBzZXJpYWxpemF0aW9uLgorICAgICAgICAqIHBsYXRm
b3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhw
ZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUt
MDAyLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC1tYWMvZWRp
dGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4K
KwogMjAxMS0wOC0wOSAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBsZS5jb20+CiAKICAgICAgICAg
QWRkIGEgUmFkYXIgbnVtYmVyIHRvIGEgc2tpcHBlZCB0ZXN0LgpJbmRleDogTGF5b3V0VGVzdHMv
ZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFrLXByZXNlcnZlcy11bmRlcmxpbmUt
Y29sb3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvZGVs
ZXRpbmcvZGVsZXRpbmctbGluZS1icmVhay1wcmVzZXJ2ZXMtdW5kZXJsaW5lLWNvbG9yLWV4cGVj
dGVkLnR4dAkocmV2aXNpb24gOTI3MDYpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5n
L2RlbGV0aW5nLWxpbmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1jb2xvci1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDcgKzEzLDcgQEAgQWZ0ZXI6CiB8IDxkaXY+CiB8ICAg
IlRoaXMgc2hvdWxkIG5vdCBiZSB1bmRlcmxpbmVkLjwjc2VsZWN0aW9uLWNhcmV0PiIKIHwgICA8
c3Bhbj4KLXwgICAgIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246IHVuZGVybGluZTsgY29sb3I6IGJs
dWU7IgorfCAgICAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjogYmx1
ZTsgIgogfCAgICAgPHNwYW4+CiB8ICAgICAgIHN0eWxlPSJjb2xvcjpyZWQ7IgogfCAgICAgICAi
VGhpcyBzaG91bGQgYmUgdW5kZXJsaW5lZC4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4
ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQt
bGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5Mjcw
NikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1u
b25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNCw3ICs0
LDcgQEAgVGhpcyB0ZXN0cyBsaXN0IGNyZWF0aW9uIGluIGFuIGVkaXRhYmxlIAogfCAgICAgIkVk
aXRhYmw8I3NlbGVjdGlvbi1hbmNob3I+ZSBwYXJhZ3JhcGggY29udGFpbmluZyBhICIKIHwgICAg
IDxzcGFuPgogfCAgICAgICBjb250ZW50ZWRpdGFibGU9ImZhbHNlIgotfCAgICAgICBzdHlsZT0i
YmFja2dyb3VuZC1jb2xvcjogTGlnaHRHcmF5OyIKK3wgICAgICAgc3R5bGU9ImJhY2tncm91bmQt
Y29sb3I6IHJnYigyMTEsIDIxMSwgMjExKTsgIgogfCAgICAgICAibm9uLWVkaXRhYmxlIgogfCAg
ICAgIiBpbiB0aGUgbWlkZGxlIgogfCAgICAgPGJyPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGlu
Zy9pbnNlcnRpbmcvcGFnZS16b29tLWZvbnQtc2l6ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRpbmcvcGFnZS16b29tLWZvbnQtc2l6ZS1leHBl
Y3RlZC50eHQJKHJldmlzaW9uIDkyNzA2KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9pbnNlcnRp
bmcvcGFnZS16b29tLWZvbnQtc2l6ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
NyArMSw3IEBACiBUZXN0IHRvIG1ha2Ugc3VyZSB0aGF0IHBhc3RpbmcgdGV4dCB3aXRoIGEgZm9u
dCBzaXplIGludG8gYSBxdWlya3MgbW9kZSBkb2N1bWVudCB0aGF0IGlzIHpvb21lZCBkb2VzIG5v
dCBhbHRlciB0aGUgZm9udCBzaXplLgogCiBQYXN0ZSBIZXJlOlRoaXMgZm9udCBpcyBzaXplIDE2
cHguCi1QYXN0ZSBIZXJlOjxzcGFuIHN0eWxlPSJmb250LXNpemU6IDE2cHg7ICIgY2xhc3M9IkFw
cGxlLXN0eWxlLXNwYW4iPlRoaXMgZm9udCBpcyBzaXplIDE2cHguPC9zcGFuPgorUGFzdGUgSGVy
ZTo8c3BhbiBzdHlsZT0iZm9udC1zaXplOiAxNnB4IiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiI+
VGhpcyBmb250IGlzIHNpemUgMTZweC48L3NwYW4+CiBkb2N1bWVudC5jb21wYXRNb2RlOiBCYWNr
Q29tcGF0CiBQQVNTCiAKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC80OTMw
OTg2LTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC80OTMwOTg2LTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjcwNikKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC80OTMwOTg2LTItZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDIgKzEsMiBAQAogVGhpcyB0ZXN0cyB0byBtYWtlIHN1cmUgdGhhdCBjb250
ZW50IHRoYXQgaXMgY29sb3JlZCBieSB0aGUgdXNlciBpcyBwYXN0ZWQgd2l0aCB0aGF0IGNvbG9y
IGR1cmluZyBhIFBhc3RlIGFzIFF1b3RhdGlvbi4KLTxibG9ja3F1b3RlPjxzcGFuIGNsYXNzPSJB
cHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29sb3I6IHJlZDsgIj5UaGlzIHRleHQgc2hvdWxkIGJl
IHJlZCAoaXQgc2hvdWxkIGJlIHdyYXBwZWQgaW4gYSBzdHlsZSBzcGFuKS48L3NwYW4+PC9ibG9j
a3F1b3RlPgorPGJsb2NrcXVvdGU+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxl
PSJjb2xvcjogcmVkOyI+VGhpcyB0ZXh0IHNob3VsZCBiZSByZWQgKGl0IHNob3VsZCBiZSB3cmFw
cGVkIGluIGEgc3R5bGUgc3BhbikuPC9zcGFuPjwvYmxvY2txdW90ZT4KSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zl
ci1pdGVtcy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzA2KQorKysgTGF5b3V0VGVzdHMvZWRp
dGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0yMCw2ICsyMCw2IEBAIFRlc3RpbmcgaWYgRGF0YVRyYW5zZmVySXRlbXMgY2Fu
IGJlIGFjY2UKIERhdGFUcmFuc2Zlckl0ZW0gYWNjZXNzZWQgb3V0c2lkZSBldmVudCBoYW5kbGVy
IQogY29weTogaXRlbXNbMF0gdmFsdWU6IEhlbGxvIFdvcmxkIQogY29weTogaXRlbXNbMV0gdmFs
dWU6IDxiPkhlbGxvIFdvcmxkIQotcGFzdGU6IGl0ZW1zWzBdIHZhbHVlOiA8c3BhbiBjbGFzcz0i
QXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtc3R5bGU6
IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRl
ci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQt
YWxpZ246IC13ZWJraXQtYXV0bzsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5v
bmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13
ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1zaXpl
LWFkanVzdDogYXV0bzsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6
IG1lZGl1bTsgIj5UaGlzIGZpbGUgdGVzdHMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYW5kIHBy
b3BlcnRpZXMgb2YgRGF0YVRyYW5zZmVySXRlbXMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuPC9z
cGFuPgorcGFzdGU6IGl0ZW1zWzBdIHZhbHVlOiA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3Bh
biIgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7IGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12
YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3Jt
YWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IC13ZWJraXQt
YXV0bzsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNl
OiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zaXpl
LWFkanVzdDogYXV0bzsgLXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6
IG1lZGl1bTsgZGlzcGxheTogaW5saW5lICFpbXBvcnRhbnQ7IGZsb2F0OiBub25lOyAiPlRoaXMg
ZmlsZSB0ZXN0cyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBhbmQgcHJvcGVydGllcyBvZiBEYXRh
VHJhbnNmZXJJdGVtcy4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC48L3NwYW4+CiBwYXN0ZTogaXRl
bXNbMV0gdmFsdWU6IFRoaXMgZmlsZSB0ZXN0cyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSBhbmQg
cHJvcGVydGllcyBvZiBEYXRhVHJhbnNmZXJJdGVtcy4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4K
IApJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1s
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjcwNikKKysrIExh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiBDT05TT0xFIE1FU1NBR0U6IGxpbmUg
MjE6IHRleHQvcGxhaW46IFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9o
dG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC4gCi1DT05TT0xF
IE1FU1NBR0U6IGxpbmUgMjM6IHRleHQvaHRtbDogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNw
YW4iIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyAgZm9udC1zdHlsZTogbm9ybWFsOyBmb250
LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5v
cm1hbDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogLXdlYmtp
dC1hdXRvOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3Bh
Y2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LWRl
Y29yYXRpb25zLWluLWVmZmVjdDogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBhdXRv
OyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IGZvbnQtc2l6ZTogbWVkaXVtOyAiPlRo
aXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGNsaXBi
b2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC48c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVk
LXNwYWNlIj7CoDwvc3Bhbj48L3NwYW4+CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjM6IHRleHQv
aHRtbDogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJjb2xvcjogcmdiKDAs
IDAsIDApOyAgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13
ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5vcm1h
bDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogLXdlYmtpdC1hdXRvOyB0ZXh0LWluZGVudDogMHB4
OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3
b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBhdXRvOyAtd2Via2l0
LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IGZvbnQtc2l6ZTogbWVkaXVtOyBkaXNwbGF5OiBpbmxp
bmUgIWltcG9ydGFudDsgZmxvYXQ6IG5vbmU7ICI+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2Ug
Y2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJvYXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2
ZW50LjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFuPjwvc3Bhbj4K
IFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGNs
aXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4K
IFBhc3RlIGNvbnRlbnQgaW4gdGhpcyBkaXYuVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2Fu
IGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJvYXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2ZW50
LsKgCiBQQVNTCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtNDAz
OTc3Ny1maXgtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS00MDM5Nzc3LWZpeC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzA2
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNTEsMTEgKzUxLDEwIEBAIEFjdHVhbCByZXN1
bHQ6CiAiCiB8IDx1bD4KIHwgICBzdHlsZT0idGV4dC1hbGlnbjpyaWdodDsiCi18ICAgPHVsPgot
fCAgICAgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0OyAiCi18ICAgICA8bGk+Ci18ICAgICAgICJB
IgorfCAgIDxsaT4KK3wgICAgICJBIgogfCAgIDxkaXY+Cit8ICAgICBzdHlsZT0idGV4dC1hbGln
bjogLXdlYmtpdC1hdXRvOyAiCiB8ICAgICA8dWw+CiB8ICAgICAgIDxsaT4KIHwgICAgICAgICA8
YT4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXBy
ZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3MDYpCisrKyBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0zLDEwICszLDcgQEAgWW91IHNob3VsZCBzZWUgbWFya3Vw
IGluIHRoZSBlZGl0YWJsZSByZQogfCA8cHJlPgogfCAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIK
IHwgICBpZD0icHJlIgotfCAgIDxzcGFuPgotfCAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4i
Ci18ICAgICBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAi
Ci18ICAgICA8cHJlPgotfCAgICAgICBjb250ZW50ZWRpdGFibGU9InRydWUiCi18ICAgICAgIGlk
PSJwcmUiCi18ICAgICAgICI8aW5wdXQgdHlwZT0nYnV0dG9uJz5mb288YnI+YmFyPGI+YmF6PC9i
Pjwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICA8cHJlPgorfCAgICAgY29udGVudGVkaXRhYmxlPSJ0
cnVlIgorfCAgICAgaWQ9InByZSIKK3wgICAgICI8aW5wdXQgdHlwZT0nYnV0dG9uJz5mb288YnI+
YmFyPGI+YmF6PC9iPjwjc2VsZWN0aW9uLWNhcmV0PiIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJ
KHJldmlzaW9uIDkyNzA2KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LXByZS0wMDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC03LDQgKzcsNCBAQCBiYXIK
IGZvbwogYmFyCiBleGVjQ3V0Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmci
PiA8cHJlPjxicj48L3ByZT4gPC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0
IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0
eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNwYWNlOiBub3JtYWw7ICI+PHByZT5mb28g
YmFyPC9wcmU+PC9zcGFuPjwvcHJlPiA8L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9
InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48cHJlPmZvbyBiYXI8L3ByZT48L3ByZT4gPC9k
aXY+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjcwNikKKysrIExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMiw0ICsyLDQgQEAgVGhpcyBpcyBhIGxheW91dCB0ZXN0IGZvciByZGFyOi8v
cHJvYmxlbQogZm9vCiBiYXIKIGV4ZWNDb3B5Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9
ImVkaXRpbmciPiA8cHJlPmZvbyBiYXI8L3ByZT4gPC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8
ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHNwYW4gY2xhc3M9IkFwcGxlLXN0
eWxlLXNwYW4iIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNwYWNlOiBub3JtYWw7
ICI+PHByZT5mb28gYmFyPC9wcmU+PC9zcGFuPjwvcHJlPiA8L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1h
bmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48cHJlPmZvbyBiYXI8L3By
ZT48L3ByZT4gPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtdGV4dC0wMTItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzA2
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVj
dGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNiw0ICs2LDQgQEAgZm9vCiBmb28KIAogZXhlY0Nv
cHlDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90
ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9ImVkaXRpbmciPjwvZGl2
PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+
PGJsb2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlZGl0
aW5nIj48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtc2l6ZTogbWVk
aXVtOyAiPjxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZv
bzwvYmxvY2txdW90ZT48L2Rpdj48ZGl2Pjxicj48L2Rpdj48L2Rpdj48L3NwYW4+PC9kaXY+Citl
eGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48Ymxv
Y2txdW90ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+IDxkaXYgY2xhc3M9ImVkaXRpbmci
PjxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxv
Y2txdW90ZT48L2Rpdj48ZGl2Pjxicj48L2Rpdj48L2Rpdj48L2Rpdj4KSW5kZXg6IExheW91dFRl
c3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LXdpdGgtc3R5bGUtNC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRl
eHQtd2l0aC1zdHlsZS00LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3MDYpCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLTQtZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC05LDkgKzksNyBAQCBCZWZvcmUgY29weToKIEFmdGVyIHBh
c3RlOgogfCA8Yj4KIHwgICBzdHlsZT0iYm9yZGVyOiBzb2xpZCA1cHggYmx1ZTtwYWRkaW5nOiA1
cHg7IgotfCAgIDxzcGFuPgotfCAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iCit8ICAgPGk+
CiB8ICAgICBzdHlsZT0iZm9udC13ZWlnaHQ6IG5vcm1hbDsgIgotfCAgICAgPGk+Ci18ICAgICAg
ICJoZWxsbzwjc2VsZWN0aW9uLWNhcmV0PiIKK3wgICAgICJoZWxsbzwjc2VsZWN0aW9uLWNhcmV0
PiIKIHwgICA8YnI+CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9vbmRyb3AtdGV4dC1o
dG1sLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2V2ZW50cy9v
bmRyb3AtdGV4dC1odG1sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3MDYpCisrKyBMYXlvdXRU
ZXN0cy9mYXN0L2V2ZW50cy9vbmRyb3AtdGV4dC1odG1sLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKIENPTlNPTEUgTUVTU0FHRTogbGluZSAyMTogdGV4dC9wbGFp
bjogVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUg
ZHJhZyBvYmplY3QgZHVyaW5nIGFuIG9uZHJvcCBldmVudC4gCi1DT05TT0xFIE1FU1NBR0U6IGxp
bmUgMjM6IHRleHQvaHRtbDogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJj
b2xvcjogcmdiKDAsIDAsIDApOyAgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5v
cm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1o
ZWlnaHQ6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogLXdlYmtpdC1hdXRvOyB0ZXh0
LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsg
d2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWlu
LWVmZmVjdDogbm9uZTsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBhdXRvOyAtd2Via2l0LXRl
eHQtc3Ryb2tlLXdpZHRoOiAwcHg7IGZvbnQtc2l6ZTogbWVkaXVtOyAiPlRoaXMgdGVzdCB2ZXJp
ZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGRyYWcgb2JqZWN0IGR1cmlu
ZyBhbiBvbmRyb3AgZXZlbnQuPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8
L3NwYW4+PC9zcGFuPgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiB0ZXh0L2h0bWw6IDxzcGFu
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgIGZv
bnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3Jt
YWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6
IDI7IHRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu
c2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5n
OiAwcHg7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsgLXdlYmtpdC10ZXh0LXN0cm9r
ZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgZGlzcGxheTogaW5saW5lICFpbXBvcnRh
bnQ7IGZsb2F0OiBub25lOyAiPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4
dC9odG1sIGZyb20gdGhlIGRyYWcgb2JqZWN0IGR1cmluZyBhbiBvbmRyb3AgZXZlbnQuPHNwYW4g
Y2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3NwYW4+PC9zcGFuPgogVGhpcyB0ZXN0
IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgZHJhZyBvYmplY3Qg
ZHVyaW5nIGFuIG9uZHJvcCBldmVudC4gVGhpcyB0ZXN0IHJlcXVpcmVzIERSVC4KIFBBU1MKSW5k
ZXg6IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1w
cmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjcwNikKKysrIExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAgQEAKLVRoaXMgdGVzdHMgYSBidWcg
d2hlbiBjb3B5aW5nIEhUTUwgbWFya3VwIGluc2lkZSA8cHJlPiB0YWdzLiBXaGVuIHBhc3RlZCwg
dGhpcyBjb250ZW50IHdvdWxkIGFwcGVhciBhcyB0aGUgcmVuZGVyZWQgZm9ybSBvZiB0aGF0IG1h
cmt1cC4KLVlvdSBzaG91bGQgc2VlIG1hcmt1cCBpbiB0aGUgZWRpdGFibGUgcmVnaW9uIGJlbG93
LiBTZWUgPHJkYXI6Ly81MDI3ODU3Pi4KLXwgPHByZT4KLXwgICBjb250ZW50ZWRpdGFibGU9InRy
dWUiCi18ICAgaWQ9InByZSIKLXwgICA8c3Bhbj4KLXwgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1z
cGFuIgotfCAgICAgc3R5bGU9ImZvbnQtZmFtaWx5OiAndGltZXMgbmV3IHJvbWFuJzsgd2hpdGUt
c3BhY2U6IG5vcm1hbDsgIgotfCAgICAgPHByZT4KLXwgICAgICAgY29udGVudGVkaXRhYmxlPSJ0
cnVlIgotfCAgICAgICBpZD0icHJlIgotfCAgICAgICAiPGlucHV0IHR5cGU9J2J1dHRvbic+Zm9v
PGJyPmJhcjxiPmJhejwvYj48I3NlbGVjdGlvbi1jYXJldD4iCkluZGV4OiBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdp
bi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHJldmlzaW9u
IDkyNzA2KQorKysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwx
MCArMCwwIEBACi1UZXN0czogCi1Db3B5aW5nIGFuZCBwYXN0aW5nIGNvbnRlbnQgaW5zaWRlIG9m
IGEgUFJFIHRhZy4gVGhpcyB0ZXN0IHdhcyBjcmVhdGVkIGFmdGVyIGZpeGluZyAzOTE4MDU2Lgot
RXhwZWN0ZWQgUmVzdWx0czogCi1UaGUgUFJFIHRhZyBhbmQgdGhlIGZvcm1hdHRpbmcgb2YgdGhl
IHRleHQgaW5zaWRlIG9mIHRoZSBQUkUgc2hvdWxkIGJlIG1haW50YWluZWQuIFNob3VsZCBzZWUg
dGhpcyBjb250ZW50IGluIHRoZSByZWQgYm94IGJlbG93OgotZm9vCi1iYXIKLWZvbwotYmFyCi1l
eGVjQ3V0Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxicj48
L3ByZT4gPC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRp
dGluZyI+IDxwcmU+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJmb250LWZh
bWlseTogJ3RpbWVzIG5ldyByb21hbic7IHdoaXRlLXNwYWNlOiBub3JtYWw7ICI+PHByZT5mb28g
YmFyPC9wcmU+PC9zcGFuPjwvcHJlPiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL3BsYXRmb3Jt
L2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3MDYp
CisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzAsMCBA
QAotVGhpcyBpcyBhIGxheW91dCB0ZXN0IGZvciByZGFyOi8vcHJvYmxlbS80MzcwMjA5ICJSZXBy
b2R1Y2libGUgY3Jhc2ggd2hlbiBwYXN0aW5nIG92ZXIgd2hpdGVzcGFjZTpwcmUgdGV4dCIuIFRo
ZSB0ZXh0IGJlbG93IGlzIHNlbGVjdGVkLCBjb3BpZWQsIGFuZCBwYXN0ZWQgb3ZlciBpdHNlbGYu
IFlvdSdsbCBzZWUgZm9vL25iYXIgaWYgc3VjY2Vzc2Z1bC4KLWZvbwotYmFyCi1leGVjQ29weUNv
bW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT5mb28gYmFyPC9wcmU+
IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmci
PiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1pbHk6
ICd0aW1lcyBuZXcgcm9tYW4nOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9vIGJhcjwv
cHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC1t
YWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC1tYWMvZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3MDYpCisrKyBMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC1tYWMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4t
cHJlLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1UaGlzIHRl
c3RzIGEgYnVnIHdoZW4gY29weWluZyBIVE1MIG1hcmt1cCBpbnNpZGUgPHByZT4gdGFncy4gV2hl
biBwYXN0ZWQsIHRoaXMgY29udGVudCB3b3VsZCBhcHBlYXIgYXMgdGhlIHJlbmRlcmVkIGZvcm0g
b2YgdGhhdCBtYXJrdXAuCi1Zb3Ugc2hvdWxkIHNlZSBtYXJrdXAgaW4gdGhlIGVkaXRhYmxlIHJl
Z2lvbiBiZWxvdy4gU2VlIDxyZGFyOi8vNTAyNzg1Nz4uCi18IDxwcmU+Ci18ICAgY29udGVudGVk
aXRhYmxlPSJ0cnVlIgotfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFzcz0iQXBw
bGUtc3R5bGUtc3BhbiIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTogJ1RpbWVzIE5ldyBSb21h
bic7IHdoaXRlLXNwYWNlOiBub3JtYWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRl
ZGl0YWJsZT0idHJ1ZSIKLXwgICAgICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdi
dXR0b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+Igo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103414</attachid>
            <date>2011-08-09 16:20:26 -0700</date>
            <delta_ts>2011-08-10 18:45:10 -0700</delta_ts>
            <desc>reverted 2 bad rebaselines</desc>
            <filename>bug-34564-20110809162025.patch</filename>
            <type>text/plain</type>
            <size>40791</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNzIxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMDkgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29weWluZyBjYW4gcmVzdWx0IGlu
IHNwYW4gYXJvdW5kIGJsb2NrIGVsZW1lbnRzIG9uIHRoZSBjbGlwYm9hcmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29tcGxldGVseSBvdmVyaGF1bGVk
IHRoZSB3YXkgV2ViS2l0IHByZXNlcnZlcyBzdHlsZSBpbiBjb3B5IGFuZCBwYXN0ZS4gSW5zdGVh
ZCBvZiB3cmFwcGluZyB0aGUgZW50aXJlCisgICAgICAgIHNlcmlhbGl6ZWQgY29udGVudHMgYnkg
YSBBcHBsZSBzdHlsZSBzcGFuLCBXZWJLaXQgbm93IGFkZHMgaW5saW5lIHN0eWxlIHRvIHRoZSB0
b3AgbGV2ZWwgZWxlbWVudHMsCisgICAgICAgIHdyYXAgdG9wIGxldmVsIHRleHQgbm9kZXMgYnkg
YSBzdHlsZSBzcGFuLgorCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVy
dGllcyk6IFJlbW92ZSB0ZXh0LWRlY29yYXRpb24gcHJvcGVydHkgd2hlbiB0aGUgdmFsdWUKKyAg
ICAgICAgb2YgLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCBpcyBub25lLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRl
eHQpOiBTaW5jZSBkaXNwbGF5OiBpbmxpbmUgYW5kIGZsb2F0OiBub25lIGFyZSBub3cKKyAgICAg
ICAgYWRkZWQgb24gY29weSwgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgb24gcGFzdGUuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZh
dWx0U3R5bGUpOiBUYWtlcyBFbGVtZW50KiBpbnN0ZWFkIG9mIFN0eWxlZEVsZW1lbnQqLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpmb3JjZUlubGluZSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0UHJvcGVydGllc05vdEluKTogUmVtb3ZlIHByb3BlcnRpZXMgb25seSB3
aGVuIHRoZSBiYXNlIHN0eWxlIGhhcyB0aGVtLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0
eWxlLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OlN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yKTogVGFrZXMgaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFwV2l0aFN0eWxlTm9kZSk6IENh
bGxzIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcgYW5kIHN0eWxlTm9kZUNsb3NlVGFnLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0eWxlTm9kZU9wZW5U
YWcpOiBFeHRyYWN0ZWQgZnJvbSB3cmFwV2l0aFN0eWxlTm9kZS4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQpOiBXcmFw
cyB0ZXh0IG5vZGUgd2l0aCBhIHN0eWxlIHNwYW4gaWYgbmVlZGVkLgorICAgICAgICBTZXQgZGlz
cGxheTogaW5saW5lIGFuZCBmbG9hdDogbm9uZSBzbyB0aGF0IGl0IHdvbid0IGJlIGNvbnZlcnRl
ZCB0byBhIGJsb2NrIG9uIHBhc3RlIHNpZGUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudCk6IEFkZCB3cmFwcGluZyBzdHlsZSBpZiBhcHBy
b3ByaWF0ZTsgUmVtb3ZlIGFueSBwcm9wZXJ0aWVzCisgICAgICAgIHRoYXQgYXJlIG92ZXJyaWRk
ZW4gYnkgZGVmYXVsdCBzdHlsZSBhbmQgYW55IHN0eWxlIHRoYXQgbWF5IGNvbmZsaWN0IHdpdGgg
dGhlIGNvbXB1dGVkIHN0eWxlIG9mIG5vZGUgdG8KKyAgICAgICAgYXZvaWQgbW9kaWZ5aW5nIHRo
ZSBhcHBlYXJhbmNlIG9mIHRoZSBzZXJpYWxpemVkIG5vZGVzLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKTogQ29tcHV0ZSB3cmFwcGlu
ZyBzdHlsZTsgY29waWVzIG9mIHRoaXMgc3R5bGUgYXJlCisgICAgICAgIG1vZGlmaWVkIGFzIG5l
ZWRlZCB3aGVuIHNlcmlhbGl6aW5nIHRvcC1sZXZlbCBlbGVtZW50cyBvciB0ZXh0IG5vZGVzLiBX
ZSBjYWxsIHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uCisgICAgICAgIHdpdGggc2hvdWxk
RW1pdCBzZXQgZmFsc2UgZmlyc3QgdG8gY29tcHV0ZSB0aGUgaGlnaGVzdCBub2RlIHRvIGJlIHNl
cmlhbGl6ZWQuIFRoZSBzZWNvbmQgY2FsbCB0bworICAgICAgICB0cmF2ZXJzZU5vZGVzRm9yU2Vy
aWFsaXphdGlvbiB3aWxsIGFjdHVhbGx5IHNlcmlhbGl6ZSB0aGUgbm9kZXMuCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6
YXRpb24pOiBFeHRyYWN0ZWQgZnJvbSBzZXJpYWxpemVOb2Rlcy4KKyAgICAgICAgT3V0cHV0cyBz
dHJpbmcgb25seSBpZiBzaG91bGRFbWl0IGlzIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVNYXJrdXApOiBObyBsb25nZXIgYWRkcyB3cmFwcGluZyBzcGFucy4KKwogMjAxMS0wOC0wOSAg
RW1pbCBBIEVrbHVuZCAgPGVhZUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgU3dpdGNoIFJlbmRl
ckJsb2NrIHRvIHRvIG5ldyBsYXlvdXQgdHlwZXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdGluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0VkaXRpbmdTdHlsZS5jcHAJKHJldmlzaW9uIDkyNzA2KQorKysgU291cmNlL1dlYkNvcmUvZWRp
dGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NTcsNyArNTU3LDEwIEBA
IHZvaWQgRWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0aW8KICAgICBpZiAoIXRleHRE
ZWNvcmF0aW9uc0luRWZmZWN0KQogICAgICAgICByZXR1cm47CiAKLSAgICBtX211dGFibGVTdHls
ZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwgdGV4dERlY29yYXRpb25z
SW5FZmZlY3QtPmNzc1RleHQoKSwgbV9tdXRhYmxlU3R5bGUtPmdldFByb3BlcnR5UHJpb3JpdHko
Q1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikpOworICAgIGlmICh0ZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdC0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnNldFByb3BlcnR5
KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0aW9uc0luRWZmZWN0LT5jc3NU
ZXh0KCksIG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9yaXR5KENTU1Byb3BlcnR5VGV4
dERlY29yYXRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQ
cm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKICAgICBtX211dGFibGVTdHlsZS0+
cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCk7
CiB9CiAKQEAgLTk1Nyw5ICs5NjAsMTggQEAgdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVN0eWxl
RnJvbVJ1bGVzQQogICAgICAgICBjb21wdXRlZFN0eWxlLT5yZW1vdmVQcm9wZXJ0aWVzSW5FbGVt
ZW50RGVmYXVsdFN0eWxlKGVsZW1lbnQpOwogICAgICAgICBtX211dGFibGVTdHlsZSA9IGdldFBy
b3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgY29tcHV0ZWRTdHlsZS0+bV9tdXRh
YmxlU3R5bGUuZ2V0KCkpOwogICAgIH0KKworICAgIC8vIDMuIElmIHRoaXMgZWxlbWVudCBpcyBh
IHNwYW4gYW5kIGhhcyBkaXNwbGF5OiBpbmxpbmUgb3IgZmxvYXQ6IG5vbmUsIHJlbW92ZSB0aGVt
IHVubGVzcyB0aGV5IGFyZSBvdmVycmlkZW4gYnkgcnVsZXMuCisgICAgLy8gVGhlc2UgcnVsZXMg
YXJlIGFkZGVkIGJ5IHNlcmlhbGl6YXRpb24gY29kZSB0byB3cmFwIHRleHQgbm9kZXMuCisgICAg
aWYgKGlzU3R5bGVTcGFuKGVsZW1lbnQpKSB7CisgICAgICAgIGlmICghc3R5bGVGcm9tTWF0Y2hl
ZFJ1bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RGlzcGxheSkgJiYgZ2V0SWRl
bnRpZmllclZhbHVlKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBDU1NQcm9wZXJ0eURpc3BsYXkpID09
IENTU1ZhbHVlSW5saW5lKQorICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3Bl
cnR5KENTU1Byb3BlcnR5RGlzcGxheSk7CisgICAgICAgIGlmICghc3R5bGVGcm9tTWF0Y2hlZFJ1
bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5RmxvYXQpICYmIGdldElkZW50aWZp
ZXJWYWx1ZShtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTUHJvcGVydHlGbG9hdCkgPT0gQ1NTVmFs
dWVOb25lKQorICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1By
b3BlcnR5RmxvYXQpOworICAgIH0KIH0KIAotdm9pZCBFZGl0aW5nU3R5bGU6OnJlbW92ZVByb3Bl
cnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoU3R5bGVkRWxlbWVudCogZWxlbWVudCkKK3ZvaWQg
RWRpdGluZ1N0eWxlOjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKEVsZW1l
bnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX211dGFibGVTdHlsZSB8fCAhbV9tdXRhYmxlU3R5
bGUtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CkBAIC05NzQsNiArOTg2LDE0IEBAIHZvaWQg
RWRpdGluZ1N0eWxlOjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGUKIAogICAgIG1fbXV0YWJsZVN0eWxl
LT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQocHJvcGVydGllc1RvUmVtb3ZlLmRhdGEoKSwgcHJvcGVy
dGllc1RvUmVtb3ZlLnNpemUoKSk7CiB9CisKK3ZvaWQgRWRpdGluZ1N0eWxlOjpmb3JjZUlubGlu
ZSgpCit7CisgICAgaWYgKCFtX211dGFibGVTdHlsZSkKKyAgICAgICAgbV9tdXRhYmxlU3R5bGUg
PSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7CisgICAgY29uc3QgYm9vbCBw
cm9wZXJ0eUlzSW1wb3J0YW50ID0gdHJ1ZTsKKyAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVy
dHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwgcHJvcGVydHlJc0ltcG9ydGFu
dCk7Cit9CiAgICAgCiAKIHN0YXRpYyB2b2lkIHJlY29uY2lsZVRleHREZWNvcmF0aW9uUHJvcGVy
dGllcyhDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUpCkBAIC0xMTc4LDEzICsxMTk4
LDEzIEBAIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gZ2V0UHIKICAgICBkaWZm
VGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbiwg
YmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsKICAgICBkaWZmVGV4dERlY29yYXRp
b25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVj
dCwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsKIAotICAgIGlmIChmb250V2Vp
Z2h0SXNCb2xkKHJlc3VsdC5nZXQoKSkgPT0gZm9udFdlaWdodElzQm9sZChiYXNlU3R5bGUpKQor
ICAgIGlmIChiYXNlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUoQ1NTUHJvcGVydHlGb250U2l6
ZSkgJiYgZm9udFdlaWdodElzQm9sZChyZXN1bHQuZ2V0KCkpID09IGZvbnRXZWlnaHRJc0JvbGQo
YmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZv
bnRXZWlnaHQpOwogCi0gICAgaWYgKGdldFJHQkFGb250Q29sb3IocmVzdWx0LmdldCgpKSA9PSBn
ZXRSR0JBRm9udENvbG9yKGJhc2VTdHlsZSkpCisgICAgaWYgKGJhc2VTdHlsZS0+Z2V0UHJvcGVy
dHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSAmJiBnZXRSR0JBRm9udENvbG9yKHJlc3VsdC5n
ZXQoKSkgPT0gZ2V0UkdCQUZvbnRDb2xvcihiYXNlU3R5bGUpKQogICAgICAgICByZXN1bHQtPnJl
bW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IpOwogCi0gICAgaWYgKGdldFRleHRBbGlnbm1l
bnQocmVzdWx0LmdldCgpKSA9PSBnZXRUZXh0QWxpZ25tZW50KGJhc2VTdHlsZSkpCisgICAgaWYg
KGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eVRleHRBbGlnbikgJiYg
Z2V0VGV4dEFsaWdubWVudChyZXN1bHQuZ2V0KCkpID09IGdldFRleHRBbGlnbm1lbnQoYmFzZVN0
eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHRBbGln
bik7CiAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRp
bmdTdHlsZS5oCShyZXZpc2lvbiA5MjcwNikKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3LDcgQEAgY2xhc3MgQ1NTTXV0
YWJsZVN0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDU1NQcmltaXRpdmVWYWx1ZTsKIGNsYXNzIENT
U1ZhbHVlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50OwogY2xhc3MgSFRNTEVsZW1l
bnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgUG9zaXRpb247CkBAIC0xMjYsNiArMTI3LDggQEAgcHVi
bGljOgogICAgIHZvaWQgbWVyZ2VTdHlsZUZyb21SdWxlcyhTdHlsZWRFbGVtZW50Kik7CiAgICAg
dm9pZCBtZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlvbihTdHlsZWRFbGVtZW50Kik7
CiAgICAgdm9pZCByZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRleHQoU3R5bGVkRWxlbWVudCos
IE5vZGUqIGNvbnRleHQpOworICAgIHZvaWQgcmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1
bHRTdHlsZShFbGVtZW50Kik7CisgICAgdm9pZCBmb3JjZUlubGluZSgpOwogCiAgICAgZmxvYXQg
Zm9udFNpemVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YTsgfQogICAgIGJv
b2wgaGFzRm9udFNpemVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNpemVEZWx0YSAhPSBO
b0ZvbnREZWx0YTsgfQpAQCAtMTQ0LDcgKzE0Nyw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBleHRy
YWN0Rm9udFNpemVEZWx0YSgpOwogICAgIGJvb2wgY29uZmxpY3RzV2l0aElubGluZVN0eWxlT2ZF
bGVtZW50KFN0eWxlZEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIGV4dHJhY3RlZFN0eWxlLCBWZWN0
b3I8Q1NTUHJvcGVydHlJRD4qIGNvbmZsaWN0aW5nUHJvcGVydGllcykgY29uc3Q7CiAgICAgdm9p
ZCBtZXJnZVN0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9uKik7Ci0gICAgdm9pZCByZW1v
dmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKFN0eWxlZEVsZW1lbnQqKTsKIAogICAg
IFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbV9tdXRhYmxlU3R5bGU7CiAgICAg
Ym9vbCBtX3Nob3VsZFVzZUZpeGVkRGVmYXVsdEZvbnRTaXplOwpJbmRleDogU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvbWFya3VwLmNwcAkocmV2aXNpb24gOTI3MDYpCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMiArMTIwLDcgQEAgY2xhc3MgU3R5
bGVkTWFya3VwQWNjdW11bGF0b3IgOiBwdWJsaWMgTQogcHVibGljOgogICAgIGVudW0gUmFuZ2VG
dWxseVNlbGVjdHNOb2RlIHsgRG9lc0Z1bGx5U2VsZWN0Tm9kZSwgRG9lc05vdEZ1bGx5U2VsZWN0
Tm9kZSB9OwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9k
ZXMsIEVBYnNvbHV0ZVVSTHMgc2hvdWxkUmVzb2x2ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hh
bmdlIHNob3VsZEFubm90YXRlLCBjb25zdCBSYW5nZSogcmFuZ2UpCi0gICAgOiBNYXJrdXBBY2N1
bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHJhbmdlKQotICAgICwgbV9zaG91bGRB
bm5vdGF0ZShzaG91bGRBbm5vdGF0ZSkKLSAgICB7Ci0gICAgfQotCisgICAgU3R5bGVkTWFya3Vw
QWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMsIEVBbm5vdGF0
ZUZvckludGVyY2hhbmdlLCBjb25zdCBSYW5nZSosIE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlh
bGl6ZWQgPSAwKTsKICAgICBOb2RlKiBzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5v
ZGUqIHBhc3RFbmQpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRTdHJpbmcoY29uc3QgU3RyaW5n
JiBzKSB7IHJldHVybiBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3RyaW5nKHMpOyB9CiAgICAg
dm9pZCB3cmFwV2l0aE5vZGUoTm9kZSosIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcyA9IGZh
bHNlLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlTZWxlY3ROb2RlKTsKQEAgLTEz
MywxOCArMTI4LDM3IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGFrZVJlc3VsdHMoKTsKIAogcHJp
dmF0ZToKKyAgICB2b2lkIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcoVmVjdG9yPFVDaGFyPiYsIENT
U1N0eWxlRGVjbGFyYXRpb24qLCBEb2N1bWVudCosIGJvb2wgaXNCbG9jayA9IGZhbHNlKTsKKyAg
ICBjb25zdCBTdHJpbmcgc3R5bGVOb2RlQ2xvc2VUYWcoYm9vbCBpc0Jsb2NrID0gZmFsc2UpOwog
ICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRUZXh0KFZlY3RvcjxVQ2hhcj4mIG91dCwgVGV4dCopOwog
ICAgIFN0cmluZyByZW5kZXJlZFRleHQoY29uc3QgTm9kZSosIGNvbnN0IFJhbmdlKik7CiAgICAg
U3RyaW5nIHN0cmluZ1ZhbHVlRm9yUmFuZ2UoY29uc3QgTm9kZSosIGNvbnN0IFJhbmdlKik7CiAg
ICAgdm9pZCBhcHBlbmRFbGVtZW50KFZlY3RvcjxVQ2hhcj4mIG91dCwgRWxlbWVudCogZWxlbWVu
dCwgYm9vbCBhZGREaXNwbGF5SW5saW5lLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUpOwogICAgIHZv
aWQgYXBwZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBvdXQsIEVsZW1lbnQqIGVsZW1lbnQsIE5h
bWVzcGFjZXMqKSB7IGFwcGVuZEVsZW1lbnQob3V0LCBlbGVtZW50LCBmYWxzZSwgRG9lc0Z1bGx5
U2VsZWN0Tm9kZSk7IH0KIAorICAgIE5vZGUqIHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9u
KE5vZGUqIHN0YXJ0Tm9kZSwgTm9kZSogcGFzdEVuZCwgYm9vbCBzaG91bGRFbWl0KTsKKwogICAg
IGJvb2wgc2hvdWxkQW5ub3RhdGUoKSB7IHJldHVybiBtX3Nob3VsZEFubm90YXRlID09IEFubm90
YXRlRm9ySW50ZXJjaGFuZ2U7IH0KKyAgICBib29sIHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShO
b2RlKiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faGlnaGVzdE5vZGVUb0Jl
U2VyaWFsaXplZCAmJiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQtPnBhcmVudE5vZGUoKSA9
PSBub2RlLT5wYXJlbnROb2RlKCkKKyAgICAgICAgICAgICYmIG1fd3JhcHBpbmdTdHlsZSAmJiBt
X3dyYXBwaW5nU3R5bGUtPnN0eWxlKCk7CisgICAgfQogCiAgICAgVmVjdG9yPFN0cmluZz4gbV9y
ZXZlcnNlZFByZWNlZGluZ01hcmt1cDsKICAgICBjb25zdCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5n
ZSBtX3Nob3VsZEFubm90YXRlOworICAgIE5vZGUqIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXpl
ZDsKKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBtX3dyYXBwaW5nU3R5bGU7CiB9OwogCitpbmxp
bmUgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yKFZlY3Rv
cjxOb2RlKj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzIHNob3VsZFJlc29sdmVVUkxzLCBFQW5ub3Rh
dGVGb3JJbnRlcmNoYW5nZSBzaG91bGRBbm5vdGF0ZSwKKyAgICBjb25zdCBSYW5nZSogcmFuZ2Us
IE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpCisgICAgOiBNYXJrdXBBY2N1bXVsYXRv
cihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHJhbmdlKQorICAgICwgbV9zaG91bGRBbm5vdGF0
ZShzaG91bGRBbm5vdGF0ZSkKKyAgICAsIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZChoaWdo
ZXN0Tm9kZVRvQmVTZXJpYWxpemVkKQoreworfQorCiB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxh
dG9yOjp3cmFwV2l0aE5vZGUoTm9kZSogbm9kZSwgYm9vbCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVz
LCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxseVNlbGVjdHNOb2RlKQogewogICAgIFZl
Y3RvcjxVQ2hhcj4gbWFya3VwOwpAQCAtMTYwLDIwICsxNzQsMzAgQEAgdm9pZCBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhObwogCiB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9y
Ojp3cmFwV2l0aFN0eWxlTm9kZShDU1NTdHlsZURlY2xhcmF0aW9uKiBzdHlsZSwgRG9jdW1lbnQq
IGRvY3VtZW50LCBib29sIGlzQmxvY2spCiB7CisgICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOwor
ICAgIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcob3BlblRhZywgc3R5bGUsIGRvY3VtZW50LCBpc0Js
b2NrKTsKKyAgICBtX3JldmVyc2VkUHJlY2VkaW5nTWFya3VwLmFwcGVuZChTdHJpbmc6OmFkb3B0
KG9wZW5UYWcpKTsKKyAgICBhcHBlbmRTdHJpbmcoc3R5bGVOb2RlQ2xvc2VUYWcoaXNCbG9jaykp
OworfQorCit2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRTdHlsZU5vZGVPcGVu
VGFnKFZlY3RvcjxVQ2hhcj4mIG91dCwgQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIERvY3Vt
ZW50KiBkb2N1bWVudCwgYm9vbCBpc0Jsb2NrKQorewogICAgIC8vIEFsbCB0ZXh0LWRlY29yYXRp
b24tcmVsYXRlZCBlbGVtZW50cyBzaG91bGQgaGF2ZSBiZWVuIHRyZWF0ZWQgYXMgc3BlY2lhbCBh
bmNlc3RvcnMKICAgICAvLyBJZiB3ZSBldmVyIGhpdCB0aGlzIEFTU0VSVCwgd2Ugc2hvdWxkIGV4
cG9ydCBTdHlsZUNoYW5nZSBpbiBBcHBseVN0eWxlQ29tbWFuZCBhbmQgdXNlIGl0IGhlcmUKICAg
ICBBU1NFUlQocHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NTUHJvcGVydHlU
ZXh0RGVjb3JhdGlvbikgJiYgcHJvcGVydHlNaXNzaW5nT3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NT
UHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVmZmVjdCkpOwogICAgIERFRklORV9TVEFU
SUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkaXZTdHlsZSwgKCI8ZGl2IHN0eWxlPVwiIikpOwotICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkaXZDbG9zZSwgKCI8L2Rpdj4iKSk7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0eWxlU3Bhbk9wZW4sICgi
PHNwYW4gY2xhc3M9XCIiIEFwcGxlU3R5bGVTcGFuQ2xhc3MgIlwiIHN0eWxlPVwiIikpOworICAg
IGFwcGVuZChvdXQsIGlzQmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOworICAgIGFw
cGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnQtPmlzSFRN
TERvY3VtZW50KCkpOworICAgIG91dC5hcHBlbmQoJ1wiJyk7CisgICAgb3V0LmFwcGVuZCgnPicp
OworfQorCitjb25zdCBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnN0eWxlTm9kZUNs
b3NlVGFnKGJvb2wgaXNCbG9jaykKK3sKKyAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0
cmluZywgZGl2Q2xvc2UsICgiPC9kaXY+IikpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29u
c3QgU3RyaW5nLCBzdHlsZVNwYW5DbG9zZSwgKCI8L3NwYW4+IikpOwotICAgIFZlY3RvcjxVQ2hh
cj4gb3BlblRhZzsKLSAgICBhcHBlbmQob3BlblRhZywgaXNCbG9jayA/IGRpdlN0eWxlIDogc3R5
bGVTcGFuT3Blbik7Ci0gICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3BlblRhZywgc3R5bGUtPmNz
c1RleHQoKSwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOwotICAgIG9wZW5UYWcuYXBwZW5k
KCdcIicpOwotICAgIG9wZW5UYWcuYXBwZW5kKCc+Jyk7Ci0gICAgbV9yZXZlcnNlZFByZWNlZGlu
Z01hcmt1cC5hcHBlbmQoU3RyaW5nOjphZG9wdChvcGVuVGFnKSk7Ci0gICAgYXBwZW5kU3RyaW5n
KGlzQmxvY2sgPyBkaXZDbG9zZSA6IHN0eWxlU3BhbkNsb3NlKTsKKyAgICByZXR1cm4gaXNCbG9j
ayA/IGRpdkNsb3NlIDogc3R5bGVTcGFuQ2xvc2U7CiB9CiAKIFN0cmluZyBTdHlsZWRNYXJrdXBB
Y2N1bXVsYXRvcjo6dGFrZVJlc3VsdHMoKQpAQCAtMTkxLDE3ICsyMTUsMzQgQEAgU3RyaW5nIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdQogfQogCiB2b2lkIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjphcHBlbmRUZXh0KFZlY3RvcjxVQ2hhcj4mIG91dCwgVGV4dCogdGV4dCkKLXsK
LSAgICBpZiAoIXNob3VsZEFubm90YXRlKCkgfHwgKHRleHQtPnBhcmVudEVsZW1lbnQoKSAmJiB0
ZXh0LT5wYXJlbnRFbGVtZW50KCktPnRhZ1FOYW1lKCkgPT0gdGV4dGFyZWFUYWcpKSB7Cit7ICAg
IAorICAgIGJvb2wgcGFyZW50SXNUZXh0YXJlYSA9IHRleHQtPnBhcmVudEVsZW1lbnQoKSAmJiB0
ZXh0LT5wYXJlbnRFbGVtZW50KCktPnRhZ1FOYW1lKCkgPT0gdGV4dGFyZWFUYWc7CisgICAgYm9v
bCB3cmFwcGluZ1NwYW4gPSBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUodGV4dCkgJiYgIXBhcmVu
dElzVGV4dGFyZWE7CisgICAgaWYgKHdyYXBwaW5nU3BhbikgeworICAgICAgICBSZWZQdHI8RWRp
dGluZ1N0eWxlPiB3cmFwcGluZ1N0eWxlID0gbV93cmFwcGluZ1N0eWxlLT5jb3B5KCk7CisgICAg
ICAgIC8vIDxyZGFyOi8vcHJvYmxlbS81MzcxNTM2PgorICAgICAgICAvLyBNYWtlIHN1cmUgc3Bh
bnMgYXJlIGlubGluZSBzdHlsZSBpbiBwYXN0ZSBzaWRlIGUuZy4gc3BhbiB7IGRpc3BsYXk6IGJs
b2NrIH0KKyAgICAgICAgd3JhcHBpbmdTdHlsZS0+Zm9yY2VJbmxpbmUoKTsKKyAgICAgICAgLy8g
RklYTUU6IHNob3VsZCB0aGlzIGJlIGluY2x1ZGVkIGluIGZvcmNlSW5saW5lPworICAgICAgICB3
cmFwcGluZ1N0eWxlLT5zdHlsZSgpLT5zZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0LCBDU1NW
YWx1ZU5vbmUpOworCisgICAgICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsKKyAgICAgICAgYXBw
ZW5kU3R5bGVOb2RlT3BlblRhZyhvcGVuVGFnLCB3cmFwcGluZ1N0eWxlLT5zdHlsZSgpLCB0ZXh0
LT5kb2N1bWVudCgpKTsKKyAgICAgICAgYXBwZW5kKG91dCwgU3RyaW5nOjphZG9wdChvcGVuVGFn
KSk7CisgICAgfQorCisgICAgaWYgKCFzaG91bGRBbm5vdGF0ZSgpIHx8IHBhcmVudElzVGV4dGFy
ZWEpCiAgICAgICAgIE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRUZXh0KG91dCwgdGV4dCk7Ci0g
ICAgICAgIHJldHVybjsKKyAgICBlbHNlIHsKKyAgICAgICAgYm9vbCB1c2VSZW5kZXJlZFRleHQg
PSAhZW5jbG9zaW5nTm9kZVdpdGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZSh0ZXh0KSwgc2VsZWN0
VGFnKTsKKyAgICAgICAgU3RyaW5nIGNvbnRlbnQgPSB1c2VSZW5kZXJlZFRleHQgPyByZW5kZXJl
ZFRleHQodGV4dCwgbV9yYW5nZSkgOiBzdHJpbmdWYWx1ZUZvclJhbmdlKHRleHQsIG1fcmFuZ2Up
OworICAgICAgICBWZWN0b3I8VUNoYXI+IGJ1ZmZlcjsKKyAgICAgICAgYXBwZW5kQ2hhcmFjdGVy
c1JlcGxhY2luZ0VudGl0aWVzKGJ1ZmZlciwgY29udGVudC5jaGFyYWN0ZXJzKCksIGNvbnRlbnQu
bGVuZ3RoKCksIEVudGl0eU1hc2tJblBDREFUQSk7CisgICAgICAgIGFwcGVuZChvdXQsIGNvbnZl
cnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYXQoU3RyaW5nOjphZG9wdChidWZmZXIpLCB0ZXh0
KSk7CiAgICAgfQogCi0gICAgYm9vbCB1c2VSZW5kZXJlZFRleHQgPSAhZW5jbG9zaW5nTm9kZVdp
dGhUYWcoZmlyc3RQb3NpdGlvbkluTm9kZSh0ZXh0KSwgc2VsZWN0VGFnKTsKLSAgICBTdHJpbmcg
Y29udGVudCA9IHVzZVJlbmRlcmVkVGV4dCA/IHJlbmRlcmVkVGV4dCh0ZXh0LCBtX3JhbmdlKSA6
IHN0cmluZ1ZhbHVlRm9yUmFuZ2UodGV4dCwgbV9yYW5nZSk7Ci0gICAgVmVjdG9yPFVDaGFyPiBi
dWZmZXI7Ci0gICAgYXBwZW5kQ2hhcmFjdGVyc1JlcGxhY2luZ0VudGl0aWVzKGJ1ZmZlciwgY29u
dGVudC5jaGFyYWN0ZXJzKCksIGNvbnRlbnQubGVuZ3RoKCksIEVudGl0eU1hc2tJblBDREFUQSk7
Ci0gICAgYXBwZW5kKG91dCwgY29udmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChTdHJp
bmc6OmFkb3B0KGJ1ZmZlciksIHRleHQpKTsKKyAgICBpZiAod3JhcHBpbmdTcGFuKQorICAgICAg
ICBhcHBlbmQob3V0LCBzdHlsZU5vZGVDbG9zZVRhZygpKTsKIH0KICAgICAKIFN0cmluZyBTdHls
ZWRNYXJrdXBBY2N1bXVsYXRvcjo6cmVuZGVyZWRUZXh0KGNvbnN0IE5vZGUqIG5vZGUsIGNvbnN0
IFJhbmdlKiByYW5nZSkKQEAgLTI0NSwzMCArMjg2LDQ2IEBAIHZvaWQgU3R5bGVkTWFya3VwQWNj
dW11bGF0b3I6OmFwcGVuZEVsZW0KIAogICAgIE5hbWVkTm9kZU1hcCogYXR0cmlidXRlcyA9IGVs
ZW1lbnQtPmF0dHJpYnV0ZXMoKTsKICAgICB1bnNpZ25lZCBsZW5ndGggPSBhdHRyaWJ1dGVzLT5s
ZW5ndGgoKTsKKyAgICBib29sIHNob3VsZEFubm90YXRlT3JGb3JjZUlubGluZSA9IGVsZW1lbnQt
PmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5SW5saW5l
KTsKKyAgICBib29sIHNob3VsZE92ZXJyaWRlU3R5bGVBdHRyID0gc2hvdWxkQW5ub3RhdGVPckZv
cmNlSW5saW5lIHx8IHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KTsKICAgICBmb3Ig
KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7CiAgICAgICAgIEF0dHJpYnV0
ZSogYXR0cmlidXRlID0gYXR0cmlidXRlcy0+YXR0cmlidXRlSXRlbShpKTsKICAgICAgICAgLy8g
V2UnbGwgaGFuZGxlIHRoZSBzdHlsZSBhdHRyaWJ1dGUgc2VwYXJhdGVseSwgYmVsb3cuCi0gICAg
ICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSA9PSBzdHlsZUF0dHIgJiYgZWxlbWVudC0+aXNIVE1M
RWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUpKQorICAg
ICAgICBpZiAoYXR0cmlidXRlLT5uYW1lKCkgPT0gc3R5bGVBdHRyICYmIHNob3VsZE92ZXJyaWRl
U3R5bGVBdHRyKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGFwcGVuZEF0dHJpYnV0
ZShvdXQsIGVsZW1lbnQsICphdHRyaWJ1dGUsIDApOwogICAgIH0KIAotICAgIGlmIChlbGVtZW50
LT5pc0hUTUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkgfHwgYWRkRGlzcGxheUlubGlu
ZSkpIHsKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUgPSBFZGl0aW5nU3R5bGU6
OmNyZWF0ZSh0b0hUTUxFbGVtZW50KGVsZW1lbnQpLT5nZXRJbmxpbmVTdHlsZURlY2woKSk7Ci0g
ICAgICAgIGlmIChzaG91bGRBbm5vdGF0ZSgpKQotICAgICAgICAgICAgc3R5bGUtPm1lcmdlU3R5
bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKHRvSFRNTEVsZW1lbnQoZWxlbWVudCkpOwotICAg
ICAgICBpZiAoYWRkRGlzcGxheUlubGluZSkKLSAgICAgICAgICAgIHN0eWxlLT5zdHlsZSgpLT5z
ZXRQcm9wZXJ0eShDU1NQcm9wZXJ0eURpc3BsYXksIENTU1ZhbHVlSW5saW5lLCB0cnVlKTsKLQot
ICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgZnVsbHkgc2VsZWN0ZWQgYnkgdGhlIHJhbmdl
LCB0aGVuIHdlIGRvbid0IHdhbnQgdG8ga2VlcCBzdHlsZXMgdGhhdCBhZmZlY3QgaXRzIHJlbGF0
aW9uc2hpcCB0byB0aGUgbm9kZXMgYXJvdW5kIGl0Ci0gICAgICAgIC8vIG9ubHkgdGhlIG9uZXMg
dGhhdCBhZmZlY3QgaXQgYW5kIHRoZSBub2RlcyB3aXRoaW4gaXQuCi0gICAgICAgIGlmIChyYW5n
ZUZ1bGx5U2VsZWN0c05vZGUgPT0gRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSkKLSAgICAgICAgICAg
IHN0eWxlLT5zdHlsZSgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0KTsKKyAgICBp
ZiAoc2hvdWxkT3ZlcnJpZGVTdHlsZUF0dHIpIHsKKyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHls
ZT4gbmV3SW5saW5lU3R5bGU7CiAKLSAgICAgICAgaWYgKCFzdHlsZS0+aXNFbXB0eSgpKSB7Cisg
ICAgICAgIGlmIChzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxlbWVudCkpIHsKKyAgICAgICAg
ICAgIG5ld0lubGluZVN0eWxlID0gbV93cmFwcGluZ1N0eWxlLT5jb3B5KCk7CisgICAgICAgICAg
ICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlUHJvcGVydGllc0luRWxlbWVudERlZmF1bHRTdHlsZShl
bGVtZW50KTsKKyAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVTdHlsZUNvbmZsaWN0
aW5nV2l0aFN0eWxlT2ZOb2RlKGVsZW1lbnQpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAg
IG5ld0lubGluZVN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUoKTsKKworICAgICAgICBpZiAo
ZWxlbWVudC0+aXNTdHlsZWRFbGVtZW50KCkgJiYgc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+
KGVsZW1lbnQpLT5pbmxpbmVTdHlsZURlY2woKSkKKyAgICAgICAgICAgIG5ld0lubGluZVN0eWxl
LT5vdmVycmlkZVdpdGhTdHlsZShzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50Kj4oZWxlbWVudCkt
PmlubGluZVN0eWxlRGVjbCgpKTsKKworICAgICAgICBpZiAoc2hvdWxkQW5ub3RhdGVPckZvcmNl
SW5saW5lKSB7CisgICAgICAgICAgICBpZiAoc2hvdWxkQW5ub3RhdGUoKSkKKyAgICAgICAgICAg
ICAgICBuZXdJbmxpbmVTdHlsZS0+bWVyZ2VTdHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24o
dG9IVE1MRWxlbWVudChlbGVtZW50KSk7CisKKyAgICAgICAgICAgIGlmIChhZGREaXNwbGF5SW5s
aW5lKQorICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxlLT5mb3JjZUlubGluZSgpOworCisg
ICAgICAgICAgICAvLyBJZiB0aGUgbm9kZSBpcyBub3QgZnVsbHkgc2VsZWN0ZWQgYnkgdGhlIHJh
bmdlLCB0aGVuIHdlIGRvbid0IHdhbnQgdG8ga2VlcCBzdHlsZXMgdGhhdCBhZmZlY3QgaXRzIHJl
bGF0aW9uc2hpcCB0byB0aGUgbm9kZXMgYXJvdW5kIGl0CisgICAgICAgICAgICAvLyBvbmx5IHRo
ZSBvbmVzIHRoYXQgYWZmZWN0IGl0IGFuZCB0aGUgbm9kZXMgd2l0aGluIGl0LgorICAgICAgICAg
ICAgaWYgKHJhbmdlRnVsbHlTZWxlY3RzTm9kZSA9PSBEb2VzTm90RnVsbHlTZWxlY3ROb2RlICYm
IG5ld0lubGluZVN0eWxlLT5zdHlsZSgpKQorICAgICAgICAgICAgICAgIG5ld0lubGluZVN0eWxl
LT5zdHlsZSgpLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eUZsb2F0KTsKKyAgICAgICAgfQor
CisgICAgICAgIGlmICghbmV3SW5saW5lU3R5bGUtPmlzRW1wdHkoKSkgewogICAgICAgICAgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIHN0eWxlUHJlZml4LCAoIiBzdHlsZT1c
IiIpKTsKICAgICAgICAgICAgIGFwcGVuZChvdXQsIHN0eWxlUHJlZml4KTsKLSAgICAgICAgICAg
IGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgc3R5bGUtPnN0eWxlKCktPmNzc1RleHQoKSwgZG9j
dW1lbnRJc0hUTUwpOworICAgICAgICAgICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3V0LCBuZXdJ
bmxpbmVTdHlsZS0+c3R5bGUoKS0+Y3NzVGV4dCgpLCBkb2N1bWVudElzSFRNTCk7CiAgICAgICAg
ICAgICBvdXQuYXBwZW5kKCdcIicpOwogICAgICAgICB9CiAgICAgfQpAQCAtMjc4LDYgKzMzNSwy
OSBAQCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRFbGVtCiAKIE5vZGUqIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemVOb2RlcyhOb2RlKiBzdGFydE5vZGUsIE5v
ZGUqIHBhc3RFbmQpCiB7CisgICAgaWYgKCFtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQpIHsK
KyAgICAgICAgTm9kZSogbGFzdENsb3NlZCA9IHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9u
KHN0YXJ0Tm9kZSwgcGFzdEVuZCwgZmFsc2UpOworICAgICAgICBtX2hpZ2hlc3ROb2RlVG9CZVNl
cmlhbGl6ZWQgPSBsYXN0Q2xvc2VkOworICAgIH0KKyAgICAKKyAgICBOb2RlKiBwYXJlbnRPZkhp
Z2hlc3ROb2RlID0gbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID8gbV9oaWdoZXN0Tm9kZVRv
QmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgOiAwOworICAgIGlmIChwYXJlbnRPZkhpZ2hlc3RO
b2RlKSB7CisgICAgICAgIG1fd3JhcHBpbmdTdHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKHBh
cmVudE9mSGlnaGVzdE5vZGUsIEVkaXRpbmdTdHlsZTo6RWRpdGluZ0luaGVyaXRhYmxlUHJvcGVy
dGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKworICAgICAgICAvLyBTdHlsZXMgdGhh
dCBNYWlsIGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxkIG9ubHkgYmUgcGxhY2VkIG9uIHRo
ZSBNYWlsIGJsb2NrcXVvdGUsCisgICAgICAgIC8vIHRvIGhlbHAgdXMgZGlmZmVyZW50aWF0ZSB0
aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIgaGFzIGFwcGxpZWQuCisgICAgICAg
IC8vIFRoaXMgaGVscHMgdXMgZ2V0IHRoZSBjb2xvciBvZiBjb250ZW50IHBhc3RlZCBpbnRvIGJs
b2NrcXVvdGVzIHJpZ2h0LgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPnJlbW92ZVN0eWxlQWRk
ZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUo
cGFyZW50T2ZIaWdoZXN0Tm9kZSksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRpdGluZ0Jv
dW5kYXJ5KSk7CisKKyAgICAgICAgLy8gQ2FsbCBjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVy
dGllcyBmaXJzdCBvciBvdGhlcndpc2UgaXQnbGwgY29weSB0aGUgdmFsdWUgb3ZlciBmcm9tIGlu
LWVmZmVjdCB0byB0ZXh0LWRlY29yYXRpb25zLgorICAgICAgICBtX3dyYXBwaW5nU3R5bGUtPmNv
bGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCk7CisgICAgfQorCisgICAgcmV0dXJuIHRy
YXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKHN0YXJ0Tm9kZSwgcGFzdEVuZCwgdHJ1ZSk7Cit9
CisKK05vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0cmF2ZXJzZU5vZGVzRm9yU2VyaWFs
aXphdGlvbihOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQsIGJvb2wgc2hvdWxkRW1pdCkK
K3sKICAgICBWZWN0b3I8Tm9kZSo+IGFuY2VzdG9yc1RvQ2xvc2U7CiAgICAgTm9kZSogbmV4dDsK
ICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gMDsKQEAgLTMwNCwxMSArMzg0LDEzIEBAIE5vZGUqIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemUKICAgICAgICAgICAgICAgICBuZXh0ID0g
cGFzdEVuZDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEFkZCB0aGUgbm9kZSB0
byB0aGUgbWFya3VwIGlmIHdlJ3JlIG5vdCBza2lwcGluZyB0aGUgZGVzY2VuZGFudHMKLSAgICAg
ICAgICAgIGFwcGVuZFN0YXJ0VGFnKG4pOworICAgICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisg
ICAgICAgICAgICAgICAgYXBwZW5kU3RhcnRUYWcobik7CiAKICAgICAgICAgICAgIC8vIElmIG5v
ZGUgaGFzIG5vIGNoaWxkcmVuLCBjbG9zZSB0aGUgdGFnIG5vdy4KICAgICAgICAgICAgIGlmICgh
bi0+Y2hpbGROb2RlQ291bnQoKSkgewotICAgICAgICAgICAgICAgIGFwcGVuZEVuZFRhZyhuKTsK
KyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kRW5kVGFnKG4pOwogICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBuOwogICAgICAgICAg
ICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBvcGVuZWRUYWcgPSB0cnVlOwpAQCAtMzI1LDcg
KzQwNyw4IEBAIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemUKICAgICAg
ICAgICAgICAgICBpZiAobmV4dCAhPSBwYXN0RW5kICYmIG5leHQtPmlzRGVzY2VuZGFudE9mKGFu
Y2VzdG9yKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgLy8g
Tm90IGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLCBjbG9zZSBhbmNlc3RvcnMgdXAgdG8gc2libGlu
ZyBvZiBuZXh0IG5vZGUuCi0gICAgICAgICAgICAgICAgYXBwZW5kRW5kVGFnKGFuY2VzdG9yKTsK
KyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kRW5kVGFnKGFuY2VzdG9yKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xvc2VkID0gYW5jZXN0
b3I7CiAgICAgICAgICAgICAgICAgYW5jZXN0b3JzVG9DbG9zZS5yZW1vdmVMYXN0KCk7CiAgICAg
ICAgICAgICB9CkBAIC0zNDAsNyArNDIzLDggQEAgTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OnNlcmlhbGl6ZQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
ICAgICAgICAgICAgIC8vIG9yIGIpIGFuY2VzdG9ycyB0aGF0IHdlIG5ldmVyIGVuY291bnRlcmVk
IGR1cmluZyBhIHByZS1vcmRlciB0cmF2ZXJzYWwgc3RhcnRpbmcgYXQgc3RhcnROb2RlOgogICAg
ICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhcnROb2RlLT5pc0Rlc2NlbmRhbnRPZihwYXJlbnQp
KTsKLSAgICAgICAgICAgICAgICAgICAgd3JhcFdpdGhOb2RlKHBhcmVudCk7CisgICAgICAgICAg
ICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgICAgICAgICAgd3JhcFdp
dGhOb2RlKHBhcmVudCk7CiAgICAgICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBwYXJlbnQ7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTEzLDcgKzU5NywxMyBAQCBT
dHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAKICAgICBkb2N1bWVudC0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAgICBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHNob3Vs
ZEFubm90YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCkpOworICAgIE5vZGUqIGJvZHkgPSBlbmNsb3Np
bmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2VzdG9yKSwgYm9keVRh
Zyk7CisgICAgTm9kZSogZnVsbHlTZWxlY3RlZFJvb3QgPSAwOworICAgIC8vIEZJWE1FOiBEbyB0
aGlzIGZvciBhbGwgZnVsbHkgc2VsZWN0ZWQgYmxvY2tzLCBub3QganVzdCB0aGUgYm9keS4KKyAg
ICBpZiAoYm9keSAmJiBhcmVSYW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25G
cm9tQ29udGVudHNPZk5vZGUoYm9keSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgcmFuZ2Up
KQorICAgICAgICBmdWxseVNlbGVjdGVkUm9vdCA9IGJvZHk7CisgICAgTm9kZSogc3BlY2lhbENv
bW1vbkFuY2VzdG9yID0gaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKHVwZGF0ZWRSYW5nZS5n
ZXQoKSwgZnVsbHlTZWxlY3RlZFJvb3QsIHNob3VsZEFubm90YXRlKTsKKyAgICBTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHNob3Vs
ZEFubm90YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIHNwZWNpYWxDb21tb25BbmNlc3Rvcik7CiAg
ICAgTm9kZSogcGFzdEVuZCA9IHVwZGF0ZWRSYW5nZS0+cGFzdExhc3ROb2RlKCk7CiAKICAgICBO
b2RlKiBzdGFydE5vZGUgPSB1cGRhdGVkUmFuZ2UtPmZpcnN0Tm9kZSgpOwpAQCAtNTM5LDE0ICs2
MjksNiBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgICAg
IEFTU0VSVCghZWMpOwogICAgIH0KIAotICAgIE5vZGUqIGJvZHkgPSBlbmNsb3NpbmdOb2RlV2l0
aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2VzdG9yKSwgYm9keVRhZyk7Ci0gICAg
Tm9kZSogZnVsbHlTZWxlY3RlZFJvb3QgPSAwOwotICAgIC8vIEZJWE1FOiBEbyB0aGlzIGZvciBh
bGwgZnVsbHkgc2VsZWN0ZWQgYmxvY2tzLCBub3QganVzdCB0aGUgYm9keS4KLSAgICBpZiAoYm9k
eSAmJiBhcmVSYW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rpb25Gcm9tQ29udGVu
dHNPZk5vZGUoYm9keSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgcmFuZ2UpKQotICAgICAg
ICBmdWxseVNlbGVjdGVkUm9vdCA9IGJvZHk7Ci0KLSAgICBOb2RlKiBzcGVjaWFsQ29tbW9uQW5j
ZXN0b3IgPSBoaWdoZXN0QW5jZXN0b3JUb1dyYXBNYXJrdXAodXBkYXRlZFJhbmdlLmdldCgpLCBm
dWxseVNlbGVjdGVkUm9vdCwgc2hvdWxkQW5ub3RhdGUpOwotCiAgICAgTm9kZSogbGFzdENsb3Nl
ZCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKHN0YXJ0Tm9kZSwgcGFzdEVuZCk7CiAKICAg
ICBpZiAoc3BlY2lhbENvbW1vbkFuY2VzdG9yICYmIGxhc3RDbG9zZWQpIHsKQEAgLTU4NiwyMCAr
NjY4LDYgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFuZ2UsIAogICAgICAg
ICB9CiAgICAgfQogCi0gICAgLy8gQWRkIGEgd3JhcHBlciBzcGFuIHdpdGggdGhlIHN0eWxlcyB0
aGF0IGFsbCBvZiB0aGUgbm9kZXMgaW4gdGhlIG1hcmt1cCBpbmhlcml0LgotICAgIENvbnRhaW5l
ck5vZGUqIHBhcmVudE9mTGFzdENsb3NlZCA9IGxhc3RDbG9zZWQgPyBsYXN0Q2xvc2VkLT5wYXJl
bnROb2RlKCkgOiAwOwotICAgIGlmIChwYXJlbnRPZkxhc3RDbG9zZWQgJiYgcGFyZW50T2ZMYXN0
Q2xvc2VkLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxl
ID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocGFyZW50T2ZMYXN0Q2xvc2VkLCBFZGl0aW5nU3R5bGU6
OkVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5kQ29sb3JJbkVmZmVjdCk7
Ci0KLSAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBjb250cmlidXRlIHNo
b3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLCB0byBoZWxwCi0gICAg
ICAgIC8vIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25lcyB0aGF0IHRoZSB1
c2VyIGhhcyBhcHBsaWVkLiAgVGhpcyBoZWxwcyB1cwotICAgICAgICAvLyBnZXQgdGhlIGNvbG9y
IG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQuCi0gICAgICAgIHN0eWxl
LT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlv
bkluTm9kZShwYXJlbnRPZkxhc3RDbG9zZWQpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0Vk
aXRpbmdCb3VuZGFyeSkpOwotCi0gICAgICAgIGlmICghc3R5bGUtPmlzRW1wdHkoKSkKLSAgICAg
ICAgICAgIGFjY3VtdWxhdG9yLndyYXBXaXRoU3R5bGVOb2RlKHN0eWxlLT5zdHlsZSgpLCBkb2N1
bWVudCk7Ci0gICAgfQotCiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmNoYW5nZSBuZXdsaW5lIHNo
b3VsZCBiZSBwbGFjZWQgaW4gdGhlIGJsb2NrIHRoYXQgaXQncyBpbiwgbm90IGFmdGVyIGFsbCBv
ZiB0aGUgY29udGVudCwgdW5jb25kaXRpb25hbGx5LgogICAgIGlmIChzaG91bGRBbm5vdGF0ZSA9
PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlICYmIG5lZWRJbnRlcmNoYW5nZU5ld2xpbmVBZnRlcih2
aXNpYmxlRW5kLnByZXZpb3VzKCkpKQogICAgICAgICBhY2N1bXVsYXRvci5hcHBlbmRTdHJpbmco
aW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKTsKSW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNzIxKQorKysg
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIw
MTEtMDgtMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29w
eWluZyBjYW4gcmVzdWx0IGluIHNwYW4gYXJvdW5kIGJsb2NrIGVsZW1lbnRzIG9uIHRoZSBjbGlw
Ym9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0
NTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBvdmVyaGF1bGVkIHRoZSB3YXkgd2UgcHJlc2VydmUgc3R5bGVzIHdoZW4gY29weWlu
ZyBhbmQgcGFzdGluZyBIVE1MIGNvbnRlbnRzLiBNYW55IHRlc3RzIHByb2dyZXNzZWQKKyAgICAg
ICAgYW5kIGxvc3Qgd3JhcHBpbmcgc3BhbnMgd2hpbGUgb3RoZXJzIGFyZSBvYnNlcnZpbmcgZGlm
ZmVyZW50IG1hcmt1cCBvbiB0aGUgY2xpcGJvYXJkIGFzIGV4cGVjdGVkLgorCisgICAgICAgICog
ZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFrLXByZXNlcnZlcy11bmRlcmxpbmUt
Y29sb3ItZXhwZWN0ZWQudHh0OiBzcGFuJ3Mgc3R5bGUgYXR0cmlidXRlIG5vdyBoYXMKKyAgICAg
ICAgYSB0cmFpbGluZyBzcGFjZS4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWNDb21tYW5kL2luc2Vy
dC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQ6IExpZ2h0R3JheSBp
cyBub3cgcmdiKDIxMSwgMjExLCAyMTEpLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9k
YXRhLXRyYW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4dDogRGlmZmVyZW50IHNlcmlhbGl6YXRpb24u
CisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1sLWV4cGVjdGVk
LnR4dDogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3Nzct
Zml4LWV4cGVjdGVkLnR4dDogTm8gbG9uZ2VyIG5lc3RzIHVsIGVycm9uZW91c2x5IG9yIGFsaWdu
cyB0aGUgaW5uZXIgbGlzdAorICAgICAgICB0byB0aGUgcmlnaHQuCisgICAgICAgICogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dDogTm8gbG9uZ2VyIHBy
b2R1Y2VzIGVycm9uZW91cyB3cmFwcGluZyBzcGFuLgorICAgICAgICAqIGVkaXRpbmcvcGFzdGVi
b2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAg
KiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0ZWQudHh0OiBEaXR0by4K
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLTQtZXhw
ZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9vbmRyb3AtdGV4dC1odG1s
LWV4cGVjdGVkLnR4dDogRGlmZmVyZW50IHNlcmlhbGl6YXRpb24uCisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBl
Y3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dDogUmVtb3ZlZC4KKyAgICAg
ICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0w
MDItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0LW1hYy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgor
CiAyMDExLTA4LTA5ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBB
ZGQgYSBSYWRhciBudW1iZXIgdG8gYSBza2lwcGVkIHRlc3QuCkluZGV4OiBMYXlvdXRUZXN0cy9l
ZGl0aW5nL2RlbGV0aW5nL2RlbGV0aW5nLWxpbmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1j
b2xvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxl
dGluZy9kZWxldGluZy1saW5lLWJyZWFrLXByZXNlcnZlcy11bmRlcmxpbmUtY29sb3ItZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA5MjcwNikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcv
ZGVsZXRpbmctbGluZS1icmVhay1wcmVzZXJ2ZXMtdW5kZXJsaW5lLWNvbG9yLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNyArMTMsNyBAQCBBZnRlcjoKIHwgPGRpdj4KIHwgICAi
VGhpcyBzaG91bGQgbm90IGJlIHVuZGVybGluZWQuPCNzZWxlY3Rpb24tY2FyZXQ+IgogfCAgIDxz
cGFuPgotfCAgICAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBjb2xvcjogYmx1
ZTsiCit8ICAgICBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNvbG9yOiBibHVl
OyAiCiB8ICAgICA8c3Bhbj4KIHwgICAgICAgc3R5bGU9ImNvbG9yOnJlZDsiCiB8ICAgICAgICJU
aGlzIHNob3VsZCBiZSB1bmRlcmxpbmVkLiIKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvZXhl
Y0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1s
aXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzA2
KQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5v
bmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00LDcgKzQs
NyBAQCBUaGlzIHRlc3RzIGxpc3QgY3JlYXRpb24gaW4gYW4gZWRpdGFibGUgCiB8ICAgICAiRWRp
dGFibDwjc2VsZWN0aW9uLWFuY2hvcj5lIHBhcmFncmFwaCBjb250YWluaW5nIGEgIgogfCAgICAg
PHNwYW4+CiB8ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiCi18ICAgICAgIHN0eWxlPSJi
YWNrZ3JvdW5kLWNvbG9yOiBMaWdodEdyYXk7IgorfCAgICAgICBzdHlsZT0iYmFja2dyb3VuZC1j
b2xvcjogcmdiKDIxMSwgMjExLCAyMTEpOyAiCiB8ICAgICAgICJub24tZWRpdGFibGUiCiB8ICAg
ICAiIGluIHRoZSBtaWRkbGUiCiB8ICAgICA8YnI+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiA5MjcwNikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVi
b2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MjAsNiArMjAsNiBAQCBUZXN0aW5nIGlmIERhdGFUcmFuc2Zlckl0ZW1zIGNhbiBiZSBhY2NlCiBE
YXRhVHJhbnNmZXJJdGVtIGFjY2Vzc2VkIG91dHNpZGUgZXZlbnQgaGFuZGxlciEKIGNvcHk6IGl0
ZW1zWzBdIHZhbHVlOiBIZWxsbyBXb3JsZCEKIGNvcHk6IGl0ZW1zWzFdIHZhbHVlOiA8Yj5IZWxs
byBXb3JsZCEKLXBhc3RlOiBpdGVtc1swXSB2YWx1ZTogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxl
LXNwYW4iIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LXN0eWxlOiBub3JtYWw7IGZv
bnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzog
bm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiAtd2Vi
a2l0LWF1dG87IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1z
cGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQt
ZGVjb3JhdGlvbnMtaW4tZWZmZWN0OiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1
dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgZm9udC1zaXplOiBtZWRpdW07ICI+
VGhpcyBmaWxlIHRlc3RzIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IGFuZCBwcm9wZXJ0aWVzIG9m
IERhdGFUcmFuc2Zlckl0ZW1zLiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJULjwvc3Bhbj4KK3Bhc3Rl
OiBpdGVtc1swXSB2YWx1ZTogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJj
b2xvcjogcmdiKDAsIDAsIDApOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9y
bWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhl
aWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiAtd2Via2l0LWF1dG87IHRleHQt
aW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3
aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1
dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgZm9udC1zaXplOiBtZWRpdW07IGRp
c3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyBmbG9hdDogbm9uZTsgIj5UaGlzIGZpbGUgdGVzdHMg
dGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYW5kIHByb3BlcnRpZXMgb2YgRGF0YVRyYW5zZmVySXRl
bXMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuPC9zcGFuPgogcGFzdGU6IGl0ZW1zWzFdIHZhbHVl
OiBUaGlzIGZpbGUgdGVzdHMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYW5kIHByb3BlcnRpZXMg
b2YgRGF0YVRyYW5zZmVySXRlbXMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCiAKSW5kZXg6IExh
eW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUt
dGV4dC1odG1sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3MDYpCisrKyBMYXlvdXRUZXN0cy9l
ZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIxOiB0ZXh0L3Bs
YWluOiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRo
ZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuIAotQ09OU09MRSBNRVNTQUdFOiBs
aW5lIDIzOiB0ZXh0L2h0bWw6IDxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0i
Y29sb3I6IHJnYigwLCAwLCAwKTsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBu
b3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUt
aGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgdGV4
dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7
IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1p
bi1lZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsgLXdlYmtpdC10
ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgIj5UaGlzIHRlc3QgdmVy
aWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5n
IGFuIG9ucGFzdGUgZXZlbnQuPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8
L3NwYW4+PC9zcGFuPgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiB0ZXh0L2h0bWw6IDxzcGFu
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgIGZv
bnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3Jt
YWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6
IDI7IHRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFu
c2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5n
OiAwcHg7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsgLXdlYmtpdC10ZXh0LXN0cm9r
ZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgZGlzcGxheTogaW5saW5lICFpbXBvcnRh
bnQ7IGZsb2F0OiBub25lOyAiPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4
dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC48c3BhbiBj
bGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj7CoDwvc3Bhbj48L3NwYW4+CiBUaGlzIHRlc3Qg
dmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVy
aW5nIGFuIG9ucGFzdGUgZXZlbnQuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCiBQYXN0ZSBjb250
ZW50IGluIHRoaXMgZGl2LlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9o
dG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC7CoAogUEFTUwpJ
bmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQv
cGFzdGUtNDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjcwNikKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5Nzc3LWZpeC1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMCBAQCBBY3R1YWwgcmVzdWx0OgogIgogfCA8
dWw+CiB8ICAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7IgotfCAgIDx1bD4KLXwgICAgIHN0eWxl
PSJ0ZXh0LWFsaWduOiByaWdodDsgIgotfCAgICAgPGxpPgotfCAgICAgICAiQSIKK3wgICA8bGk+
Cit8ICAgICAiQSIKIHwgICA8ZGl2PgorfCAgICAgc3R5bGU9InRleHQtYWxpZ246IC13ZWJraXQt
YXV0bzsgIgogfCAgICAgPHVsPgogfCAgICAgICA8bGk+CiB8ICAgICAgICAgPGE+CkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1j
b2RlLWluLXByZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzA2KQorKysgTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtMywxMCArMyw3IEBAIFlvdSBzaG91bGQgc2VlIG1hcmt1cCBpbiB0aGUgZWRp
dGFibGUgcmUKIHwgPHByZT4KIHwgICBjb250ZW50ZWRpdGFibGU9InRydWUiCiB8ICAgaWQ9InBy
ZSIKLXwgICA8c3Bhbj4KLXwgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgotfCAgICAgc3R5
bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIgotfCAgICAgPHBy
ZT4KLXwgICAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgotfCAgICAgICBpZD0icHJlIgotfCAg
ICAgICAiPGlucHV0IHR5cGU9J2J1dHRvbic+Zm9vPGJyPmJhcjxiPmJhejwvYj48I3NlbGVjdGlv
bi1jYXJldD4iCit8ICAgPHByZT4KK3wgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKK3wgICAg
IGlkPSJwcmUiCit8ICAgICAiPGlucHV0IHR5cGU9J2J1dHRvbic+Zm9vPGJyPmJhcjxiPmJhejwv
Yj48I3NlbGVjdGlvbi1jYXJldD4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5
MjcwNikKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNyw0ICs3LDQgQEAgYmFyCiBmb28KIGJhcgog
ZXhlY0N1dENvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48YnI+
PC9wcmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVk
aXRpbmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1m
YW1pbHk6IFRpbWVzOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9vIGJhcjwvcHJlPjwv
c3Bhbj48L3ByZT4gPC9kaXY+CitleGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFz
cz0iZWRpdGluZyI+IDxwcmU+PHByZT5mb28gYmFyPC9wcmU+PC9wcmU+IDwvZGl2PgpJbmRleDog
TGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUt
MDAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3MDYpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTIsNCArMiw0IEBAIFRoaXMgaXMgYSBsYXlvdXQgdGVzdCBmb3IgcmRhcjovL3Byb2JsZW0KIGZv
bwogYmFyCiBleGVjQ29weUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4g
PHByZT5mb28gYmFyPC9wcmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVz
dCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBz
dHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9v
IGJhcjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CitleGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlk
PSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHByZT5mb28gYmFyPC9wcmU+PC9wcmU+IDwv
ZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEy
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjcwNikKKysrIExheW91
dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTYsNCArNiw0IEBAIGZvbwogZm9vCiAKIGV4ZWNDb3B5Q29tbWFuZDog
PGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9vPC9ibG9j
a3F1b3RlPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlZGl0aW5nIj48L2Rpdj4KLWV4ZWNQYXN0
ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2PjxibG9ja3F1b3Rl
PmZvbzwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGluZyI+PHNwYW4g
Y2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJmb250LXNpemU6IG1lZGl1bTsgIj48ZGl2
IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2NrcXVv
dGU+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9zcGFuPjwvZGl2PgorZXhlY1Bhc3RlQ29t
bWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+Zm9v
PC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlZGl0aW5nIj48ZGl2IGlkPSJ0
ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2NrcXVvdGU+PC9k
aXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLTQtZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LXdpdGgtc3R5
bGUtNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzA2KQorKysgTGF5b3V0VGVzdHMvZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtd2l0aC1zdHlsZS00LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtOSw5ICs5LDcgQEAgQmVmb3JlIGNvcHk6CiBBZnRlciBwYXN0ZToKIHwgPGI+
CiB8ICAgc3R5bGU9ImJvcmRlcjogc29saWQgNXB4IGJsdWU7cGFkZGluZzogNXB4OyIKLXwgICA8
c3Bhbj4KLXwgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgorfCAgIDxpPgogfCAgICAgc3R5
bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7ICIKLXwgICAgIDxpPgotfCAgICAgICAiaGVsbG88I3Nl
bGVjdGlvbi1jYXJldD4iCit8ICAgICAiaGVsbG88I3NlbGVjdGlvbi1jYXJldD4iCiB8ICAgPGJy
PgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25kcm9wLXRleHQtaHRtbC1leHBlY3Rl
ZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25kcm9wLXRleHQt
aHRtbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzA2KQorKysgTGF5b3V0VGVzdHMvZmFzdC9l
dmVudHMvb25kcm9wLXRleHQtaHRtbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEs
NCArMSw0IEBACiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6IHRleHQvcGxhaW46IFRoaXMgdGVz
dCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGRyYWcgb2JqZWN0
IGR1cmluZyBhbiBvbmRyb3AgZXZlbnQuIAotQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiB0ZXh0
L2h0bWw6IDxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29sb3I6IHJnYigw
LCAwLCAwKTsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQt
d2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3Jt
YWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgdGV4dC1pbmRlbnQ6IDBw
eDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsg
d29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1lZmZlY3Q6IG5v
bmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsgLXdlYmtpdC10ZXh0LXN0cm9rZS13
aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3
ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBkcmFnIG9iamVjdCBkdXJpbmcgYW4gb25kcm9w
IGV2ZW50LjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFuPjwvc3Bh
bj4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMzogdGV4dC9odG1sOiA8c3BhbiBjbGFzcz0iQXBw
bGUtc3R5bGUtc3BhbiIgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7ICBmb250LXN0eWxlOiBu
b3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXIt
c3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFs
aWduOiAtd2Via2l0LWF1dG87IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25l
OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Vi
a2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBw
eDsgZm9udC1zaXplOiBtZWRpdW07IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyBmbG9hdDog
bm9uZTsgIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9t
IHRoZSBkcmFnIG9iamVjdCBkdXJpbmcgYW4gb25kcm9wIGV2ZW50LjxzcGFuIGNsYXNzPSJBcHBs
ZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFuPjwvc3Bhbj4KIFRoaXMgdGVzdCB2ZXJpZmllcyB0
aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGRyYWcgb2JqZWN0IGR1cmluZyBhbiBv
bmRyb3AgZXZlbnQuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCiBQQVNTCkluZGV4OiBMYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUt
aW4tcHJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVk
LnR4dAkocmV2aXNpb24gOTI3MDYpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13
aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1UaGlzIHRlc3RzIGEgYnVnIHdoZW4gY29weWlu
ZyBIVE1MIG1hcmt1cCBpbnNpZGUgPHByZT4gdGFncy4gV2hlbiBwYXN0ZWQsIHRoaXMgY29udGVu
dCB3b3VsZCBhcHBlYXIgYXMgdGhlIHJlbmRlcmVkIGZvcm0gb2YgdGhhdCBtYXJrdXAuCi1Zb3Ug
c2hvdWxkIHNlZSBtYXJrdXAgaW4gdGhlIGVkaXRhYmxlIHJlZ2lvbiBiZWxvdy4gU2VlIDxyZGFy
Oi8vNTAyNzg1Nz4uCi18IDxwcmU+Ci18ICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgotfCAgIGlk
PSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIKLXwgICAg
IHN0eWxlPSJmb250LWZhbWlseTogJ3RpbWVzIG5ldyByb21hbic7IHdoaXRlLXNwYWNlOiBub3Jt
YWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIKLXwgICAg
ICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxicj5iYXI8Yj5i
YXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hy
b21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9w
YXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5MjcwNikKKysr
IExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAgKzAsMCBAQAot
VGVzdHM6IAotQ29weWluZyBhbmQgcGFzdGluZyBjb250ZW50IGluc2lkZSBvZiBhIFBSRSB0YWcu
IFRoaXMgdGVzdCB3YXMgY3JlYXRlZCBhZnRlciBmaXhpbmcgMzkxODA1Ni4KLUV4cGVjdGVkIFJl
c3VsdHM6IAotVGhlIFBSRSB0YWcgYW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSB0ZXh0IGluc2lk
ZSBvZiB0aGUgUFJFIHNob3VsZCBiZSBtYWludGFpbmVkLiBTaG91bGQgc2VlIHRoaXMgY29udGVu
dCBpbiB0aGUgcmVkIGJveCBiZWxvdzoKLWZvbwotYmFyCi1mb28KLWJhcgotZXhlY0N1dENvbW1h
bmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48YnI+PC9wcmU+IDwvZGl2
PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJl
PjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1pbHk6ICd0aW1l
cyBuZXcgcm9tYW4nOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9vIGJhcjwvcHJlPjwv
c3Bhbj48L3ByZT4gPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13
aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzA2KQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUt
MDAyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICswLDAgQEAKLVRoaXMgaXMg
YSBsYXlvdXQgdGVzdCBmb3IgcmRhcjovL3Byb2JsZW0vNDM3MDIwOSAiUmVwcm9kdWNpYmxlIGNy
YXNoIHdoZW4gcGFzdGluZyBvdmVyIHdoaXRlc3BhY2U6cHJlIHRleHQiLiBUaGUgdGV4dCBiZWxv
dyBpcyBzZWxlY3RlZCwgY29waWVkLCBhbmQgcGFzdGVkIG92ZXIgaXRzZWxmLiBZb3UnbGwgc2Vl
IGZvby9uYmFyIGlmIHN1Y2Nlc3NmdWwuCi1mb28KLWJhcgotZXhlY0NvcHlDb21tYW5kOiA8ZGl2
IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+Zm9vIGJhcjwvcHJlPiA8L2Rpdj4KLWV4
ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3Bh
biBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAndGltZXMgbmV3
IHJvbWFuJzsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIj48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+
PC9wcmU+IDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbWFjL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2Rl
LWluLXByZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzA2KQorKysgTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQtbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyB0ZXN0cyBhIGJ1ZyB3
aGVuIGNvcHlpbmcgSFRNTCBtYXJrdXAgaW5zaWRlIDxwcmU+IHRhZ3MuIFdoZW4gcGFzdGVkLCB0
aGlzIGNvbnRlbnQgd291bGQgYXBwZWFyIGFzIHRoZSByZW5kZXJlZCBmb3JtIG9mIHRoYXQgbWFy
a3VwLgotWW91IHNob3VsZCBzZWUgbWFya3VwIGluIHRoZSBlZGl0YWJsZSByZWdpb24gYmVsb3cu
IFNlZSA8cmRhcjovLzUwMjc4NTc+LgotfCA8cHJlPgotfCAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSIKLXwgICBpZD0icHJlIgotfCAgIDxzcGFuPgotfCAgICAgY2xhc3M9IkFwcGxlLXN0eWxlLXNw
YW4iCi18ICAgICBzdHlsZT0iZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4nOyB3aGl0ZS1z
cGFjZTogbm9ybWFsOyAiCi18ICAgICA8cHJlPgotfCAgICAgICBjb250ZW50ZWRpdGFibGU9InRy
dWUiCi18ICAgICAgIGlkPSJwcmUiCi18ICAgICAgICI8aW5wdXQgdHlwZT0nYnV0dG9uJz5mb288
YnI+YmFyPGI+YmF6PC9iPjwjc2VsZWN0aW9uLWNhcmV0PiIK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103567</attachid>
            <date>2011-08-10 18:45:16 -0700</date>
            <delta_ts>2011-08-10 18:46:52 -0700</delta_ts>
            <desc>Updated per comment #38</desc>
            <filename>bug-34564-20110810184514.patch</filename>
            <type>text/plain</type>
            <size>41142</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMTAgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29weWluZyBjYW4gcmVzdWx0IGlu
IHNwYW4gYXJvdW5kIGJsb2NrIGVsZW1lbnRzIG9uIHRoZSBjbGlwYm9hcmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29tcGxldGVseSBvdmVyaGF1bGVk
IHRoZSB3YXkgV2ViS2l0IHByZXNlcnZlcyBzdHlsZSBpbiBjb3B5IGFuZCBwYXN0ZS4gSW5zdGVh
ZCBvZiB3cmFwcGluZyB0aGUgZW50aXJlCisgICAgICAgIHNlcmlhbGl6ZWQgY29udGVudHMgYnkg
YSBBcHBsZSBzdHlsZSBzcGFuLCBXZWJLaXQgbm93IGFkZHMgaW5saW5lIHN0eWxlIHRvIHRoZSB0
b3AgbGV2ZWwgZWxlbWVudHMsCisgICAgICAgIHdyYXAgdG9wIGxldmVsIHRleHQgbm9kZXMgYnkg
YSBzdHlsZSBzcGFuLgorCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVy
dGllcyk6IFJlbW92ZSB0ZXh0LWRlY29yYXRpb24gcHJvcGVydHkgd2hlbiB0aGUgdmFsdWUKKyAg
ICAgICAgb2YgLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCBpcyBub25lLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRl
eHQpOiBTaW5jZSBkaXNwbGF5OiBpbmxpbmUgYW5kIGZsb2F0OiBub25lIGFyZSBub3cKKyAgICAg
ICAgYWRkZWQgb24gY29weSwgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgb24gcGFzdGUuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZh
dWx0U3R5bGUpOiBUYWtlcyBFbGVtZW50KiBpbnN0ZWFkIG9mIFN0eWxlZEVsZW1lbnQqLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpmb3JjZUlubGluZSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0UHJvcGVydGllc05vdEluKTogUmVtb3ZlIHByb3BlcnRpZXMgb25seSB3
aGVuIHRoZSBiYXNlIHN0eWxlIGhhcyB0aGVtLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0
eWxlLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OlN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yKTogVGFrZXMgaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFwV2l0aFN0eWxlTm9kZSk6IENh
bGxzIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcgYW5kIHN0eWxlTm9kZUNsb3NlVGFnLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0eWxlTm9kZU9wZW5U
YWcpOiBFeHRyYWN0ZWQgZnJvbSB3cmFwV2l0aFN0eWxlTm9kZS4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQpOiBXcmFw
cyB0ZXh0IG5vZGUgd2l0aCBhIHN0eWxlIHNwYW4gaWYgbmVlZGVkLgorICAgICAgICBTZXQgZGlz
cGxheTogaW5saW5lIGFuZCBmbG9hdDogbm9uZSBzbyB0aGF0IGl0IHdvbid0IGJlIGNvbnZlcnRl
ZCB0byBhIGJsb2NrIG9uIHBhc3RlIHNpZGUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudCk6IEFkZCB3cmFwcGluZyBzdHlsZSBpZiBhcHBy
b3ByaWF0ZTsgUmVtb3ZlIGFueSBwcm9wZXJ0aWVzCisgICAgICAgIHRoYXQgYXJlIG92ZXJyaWRk
ZW4gYnkgZGVmYXVsdCBzdHlsZSBhbmQgYW55IHN0eWxlIHRoYXQgbWF5IGNvbmZsaWN0IHdpdGgg
dGhlIGNvbXB1dGVkIHN0eWxlIG9mIG5vZGUgdG8KKyAgICAgICAgYXZvaWQgbW9kaWZ5aW5nIHRo
ZSBhcHBlYXJhbmNlIG9mIHRoZSBzZXJpYWxpemVkIG5vZGVzLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKTogQ29tcHV0ZSB3cmFwcGlu
ZyBzdHlsZTsgY29waWVzIG9mIHRoaXMgc3R5bGUgYXJlCisgICAgICAgIG1vZGlmaWVkIGFzIG5l
ZWRlZCB3aGVuIHNlcmlhbGl6aW5nIHRvcC1sZXZlbCBlbGVtZW50cyBvciB0ZXh0IG5vZGVzLiBX
ZSBjYWxsIHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uCisgICAgICAgIHdpdGggc2hvdWxk
RW1pdCBzZXQgZmFsc2UgZmlyc3QgdG8gY29tcHV0ZSB0aGUgaGlnaGVzdCBub2RlIHRvIGJlIHNl
cmlhbGl6ZWQuIFRoZSBzZWNvbmQgY2FsbCB0bworICAgICAgICB0cmF2ZXJzZU5vZGVzRm9yU2Vy
aWFsaXphdGlvbiB3aWxsIGFjdHVhbGx5IHNlcmlhbGl6ZSB0aGUgbm9kZXMuCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6
YXRpb24pOiBFeHRyYWN0ZWQgZnJvbSBzZXJpYWxpemVOb2Rlcy4KKyAgICAgICAgT3V0cHV0cyBz
dHJpbmcgb25seSBpZiBzaG91bGRFbWl0IGlzIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVNYXJrdXApOiBObyBsb25nZXIgYWRkcyB3cmFwcGluZyBzcGFucy4KKwogMjAxMS0wOC0xMCAg
QWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENoZWNrIHRo
YXQgd2UgZG8gbm90IG5lZWQgbGF5b3V0IGJlZm9yZSB0cnlpbmcgdG8gZGlydHkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHJldmlzaW9uIDkyNzgxKQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NTcsNyArNTU3LDEwIEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0
aW8KICAgICBpZiAoIXRleHREZWNvcmF0aW9uc0luRWZmZWN0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
biwgdGV4dERlY29yYXRpb25zSW5FZmZlY3QtPmNzc1RleHQoKSwgbV9tdXRhYmxlU3R5bGUtPmdl
dFByb3BlcnR5UHJpb3JpdHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikpOworICAgIGlmICh0
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdC0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgbV9tdXRhYmxl
U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0
aW9uc0luRWZmZWN0LT5jc3NUZXh0KCksIG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9y
aXR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIG1fbXV0
YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKICAg
ICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCk7CiB9CiAKQEAgLTk1Nyw5ICs5NjAsMTggQEAgdm9pZCBFZGl0aW5n
U3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQQogICAgICAgICBjb21wdXRlZFN0eWxlLT5yZW1v
dmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKGVsZW1lbnQpOwogICAgICAgICBtX211
dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgY29t
cHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUuZ2V0KCkpOwogICAgIH0KKworICAgIC8vIDMuIElm
IHRoaXMgZWxlbWVudCBpcyBhIHNwYW4gYW5kIGhhcyBkaXNwbGF5OiBpbmxpbmUgb3IgZmxvYXQ6
IG5vbmUsIHJlbW92ZSB0aGVtIHVubGVzcyB0aGV5IGFyZSBvdmVycmlkZW4gYnkgcnVsZXMuCisg
ICAgLy8gVGhlc2UgcnVsZXMgYXJlIGFkZGVkIGJ5IHNlcmlhbGl6YXRpb24gY29kZSB0byB3cmFw
IHRleHQgbm9kZXMuCisgICAgaWYgKGlzU3R5bGVTcGFuKGVsZW1lbnQpKSB7CisgICAgICAgIGlm
ICghc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
RGlzcGxheSkgJiYgZ2V0SWRlbnRpZmllclZhbHVlKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBDU1NQ
cm9wZXJ0eURpc3BsYXkpID09IENTU1ZhbHVlSW5saW5lKQorICAgICAgICAgICAgbV9tdXRhYmxl
U3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSk7CisgICAgICAgIGlmICgh
c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rmxv
YXQpICYmIGdldElkZW50aWZpZXJWYWx1ZShtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTUHJvcGVy
dHlGbG9hdCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJl
bW92ZVByb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQpOworICAgIH0KIH0KIAotdm9pZCBFZGl0aW5n
U3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoU3R5bGVkRWxlbWVu
dCogZWxlbWVudCkKK3ZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50
RGVmYXVsdFN0eWxlKEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX211dGFibGVTdHls
ZSB8fCAhbV9tdXRhYmxlU3R5bGUtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CkBAIC05NzQs
NiArOTg2LDE0IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGUKIAog
ICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQocHJvcGVydGllc1RvUmVt
b3ZlLmRhdGEoKSwgcHJvcGVydGllc1RvUmVtb3ZlLnNpemUoKSk7CiB9CisKK3ZvaWQgRWRpdGlu
Z1N0eWxlOjpmb3JjZUlubGluZSgpCit7CisgICAgaWYgKCFtX211dGFibGVTdHlsZSkKKyAgICAg
ICAgbV9tdXRhYmxlU3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7
CisgICAgY29uc3QgYm9vbCBwcm9wZXJ0eUlzSW1wb3J0YW50ID0gdHJ1ZTsKKyAgICBtX211dGFi
bGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwg
cHJvcGVydHlJc0ltcG9ydGFudCk7Cit9CiAgICAgCiAKIHN0YXRpYyB2b2lkIHJlY29uY2lsZVRl
eHREZWNvcmF0aW9uUHJvcGVydGllcyhDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUp
CkBAIC0xMTc4LDEzICsxMTk4LDEzIEBAIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bj4gZ2V0UHIKICAgICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVy
dHlUZXh0RGVjb3JhdGlvbiwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsKICAg
ICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsK
IAotICAgIGlmIChmb250V2VpZ2h0SXNCb2xkKHJlc3VsdC5nZXQoKSkgPT0gZm9udFdlaWdodElz
Qm9sZChiYXNlU3R5bGUpKQorICAgIGlmIChiYXNlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlGb250U2l6ZSkgJiYgZm9udFdlaWdodElzQm9sZChyZXN1bHQuZ2V0KCkpID09
IGZvbnRXZWlnaHRJc0JvbGQoYmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwogCi0gICAgaWYgKGdldFJHQkFGb250Q29sb3Io
cmVzdWx0LmdldCgpKSA9PSBnZXRSR0JBRm9udENvbG9yKGJhc2VTdHlsZSkpCisgICAgaWYgKGJh
c2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSAmJiBnZXRSR0JB
Rm9udENvbG9yKHJlc3VsdC5nZXQoKSkgPT0gZ2V0UkdCQUZvbnRDb2xvcihiYXNlU3R5bGUpKQog
ICAgICAgICByZXN1bHQtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IpOwogCi0gICAg
aWYgKGdldFRleHRBbGlnbm1lbnQocmVzdWx0LmdldCgpKSA9PSBnZXRUZXh0QWxpZ25tZW50KGJh
c2VTdHlsZSkpCisgICAgaWYgKGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eVRleHRBbGlnbikgJiYgZ2V0VGV4dEFsaWdubWVudChyZXN1bHQuZ2V0KCkpID09IGdldFRl
eHRBbGlnbm1lbnQoYmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShD
U1NQcm9wZXJ0eVRleHRBbGlnbik7CiAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCShyZXZpc2lvbiA5Mjc4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3
LDcgQEAgY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDU1NQcmltaXRp
dmVWYWx1ZTsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50
OwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgUG9zaXRpb247CkBAIC0x
MjYsNiArMTI3LDggQEAgcHVibGljOgogICAgIHZvaWQgbWVyZ2VTdHlsZUZyb21SdWxlcyhTdHls
ZWRFbGVtZW50Kik7CiAgICAgdm9pZCBtZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlv
bihTdHlsZWRFbGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRl
eHQoU3R5bGVkRWxlbWVudCosIE5vZGUqIGNvbnRleHQpOworICAgIHZvaWQgcmVtb3ZlUHJvcGVy
dGllc0luRWxlbWVudERlZmF1bHRTdHlsZShFbGVtZW50Kik7CisgICAgdm9pZCBmb3JjZUlubGlu
ZSgpOwogCiAgICAgZmxvYXQgZm9udFNpemVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNp
emVEZWx0YTsgfQogICAgIGJvb2wgaGFzRm9udFNpemVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9udFNpemVEZWx0YSAhPSBOb0ZvbnREZWx0YTsgfQpAQCAtMTQ0LDcgKzE0Nyw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBleHRyYWN0Rm9udFNpemVEZWx0YSgpOwogICAgIGJvb2wgY29uZmxpY3Rz
V2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIGV4
dHJhY3RlZFN0eWxlLCBWZWN0b3I8Q1NTUHJvcGVydHlJRD4qIGNvbmZsaWN0aW5nUHJvcGVydGll
cykgY29uc3Q7CiAgICAgdm9pZCBtZXJnZVN0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
Kik7Ci0gICAgdm9pZCByZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKFN0eWxl
ZEVsZW1lbnQqKTsKIAogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbV9t
dXRhYmxlU3R5bGU7CiAgICAgYm9vbCBtX3Nob3VsZFVzZUZpeGVkRGVmYXVsdEZvbnRTaXplOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gOTI3ODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMiAr
MTIwLDcgQEAgY2xhc3MgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IgOiBwdWJsaWMgTQogcHVibGlj
OgogICAgIGVudW0gUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHsgRG9lc0Z1bGx5U2VsZWN0Tm9kZSwg
RG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSB9OwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3Io
VmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMgc2hvdWxkUmVzb2x2ZVVSTHMsIEVB
bm5vdGF0ZUZvckludGVyY2hhbmdlIHNob3VsZEFubm90YXRlLCBjb25zdCBSYW5nZSogcmFuZ2Up
Ci0gICAgOiBNYXJrdXBBY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHJhbmdl
KQotICAgICwgbV9zaG91bGRBbm5vdGF0ZShzaG91bGRBbm5vdGF0ZSkKLSAgICB7Ci0gICAgfQot
CisgICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNv
bHV0ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBjb25zdCBSYW5nZSosIE5vZGUqIGhp
Z2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSAwKTsKICAgICBOb2RlKiBzZXJpYWxpemVOb2RlcyhO
b2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRT
dHJpbmcoY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5k
U3RyaW5nKHMpOyB9CiAgICAgdm9pZCB3cmFwV2l0aE5vZGUoTm9kZSosIGJvb2wgY29udmVydEJs
b2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlT
ZWxlY3ROb2RlKTsKQEAgLTEzMywxOCArMTI4LDM4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGFr
ZVJlc3VsdHMoKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWco
VmVjdG9yPFVDaGFyPiYsIENTU1N0eWxlRGVjbGFyYXRpb24qLCBEb2N1bWVudCosIGJvb2wgaXNC
bG9jayA9IGZhbHNlKTsKKyAgICBjb25zdCBTdHJpbmcgc3R5bGVOb2RlQ2xvc2VUYWcoYm9vbCBp
c0Jsb2NrID0gZmFsc2UpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRUZXh0KFZlY3RvcjxVQ2hh
cj4mIG91dCwgVGV4dCopOwogICAgIFN0cmluZyByZW5kZXJlZFRleHQoY29uc3QgTm9kZSosIGNv
bnN0IFJhbmdlKik7CiAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yUmFuZ2UoY29uc3QgTm9kZSos
IGNvbnN0IFJhbmdlKik7CiAgICAgdm9pZCBhcHBlbmRFbGVtZW50KFZlY3RvcjxVQ2hhcj4mIG91
dCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBhZGREaXNwbGF5SW5saW5lLCBSYW5nZUZ1bGx5U2Vs
ZWN0c05vZGUpOwogICAgIHZvaWQgYXBwZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBvdXQsIEVs
ZW1lbnQqIGVsZW1lbnQsIE5hbWVzcGFjZXMqKSB7IGFwcGVuZEVsZW1lbnQob3V0LCBlbGVtZW50
LCBmYWxzZSwgRG9lc0Z1bGx5U2VsZWN0Tm9kZSk7IH0KIAorICAgIGVudW0gTm9kZVRyYXZlcnNh
bE1vZGUgeyBFbWl0UmVzdWx0U3RyaW5nLCBUcmF2ZXJzZVdpdGhvdXRTZXJpYWxpemF0aW9uIH07
CisgICAgTm9kZSogdHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRpb24oTm9kZSogc3RhcnROb2Rl
LCBOb2RlKiBwYXN0RW5kLCBOb2RlVHJhdmVyc2FsTW9kZSk7CisKICAgICBib29sIHNob3VsZEFu
bm90YXRlKCkgeyByZXR1cm4gbV9zaG91bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hh
bmdlOyB9CisgICAgYm9vbCBzaG91bGRBcHBseVdyYXBwaW5nU3R5bGUoTm9kZSogbm9kZSkgY29u
c3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgJiYg
bV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgPT0gbm9kZS0+cGFyZW50
Tm9kZSgpCisgICAgICAgICAgICAmJiBtX3dyYXBwaW5nU3R5bGUgJiYgbV93cmFwcGluZ1N0eWxl
LT5zdHlsZSgpOworICAgIH0KIAogICAgIFZlY3RvcjxTdHJpbmc+IG1fcmV2ZXJzZWRQcmVjZWRp
bmdNYXJrdXA7CiAgICAgY29uc3QgRUFubm90YXRlRm9ySW50ZXJjaGFuZ2UgbV9zaG91bGRBbm5v
dGF0ZTsKKyAgICBOb2RlKiBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQ7CisgICAgUmVmUHRy
PEVkaXRpbmdTdHlsZT4gbV93cmFwcGluZ1N0eWxlOwogfTsKIAoraW5saW5lIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcihWZWN0b3I8Tm9kZSo+KiBub2Rl
cywgRUFic29sdXRlVVJMcyBzaG91bGRSZXNvbHZlVVJMcywgRUFubm90YXRlRm9ySW50ZXJjaGFu
Z2Ugc2hvdWxkQW5ub3RhdGUsCisgICAgY29uc3QgUmFuZ2UqIHJhbmdlLCBOb2RlKiBoaWdoZXN0
Tm9kZVRvQmVTZXJpYWxpemVkKQorICAgIDogTWFya3VwQWNjdW11bGF0b3Iobm9kZXMsIHNob3Vs
ZFJlc29sdmVVUkxzLCByYW5nZSkKKyAgICAsIG1fc2hvdWxkQW5ub3RhdGUoc2hvdWxkQW5ub3Rh
dGUpCisgICAgLCBtX2hpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQoaGlnaGVzdE5vZGVUb0JlU2Vy
aWFsaXplZCkKK3sKK30KKwogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhO
b2RlKE5vZGUqIG5vZGUsIGJvb2wgY29udmVydEJsb2Nrc1RvSW5saW5lcywgUmFuZ2VGdWxseVNl
bGVjdHNOb2RlIHJhbmdlRnVsbHlTZWxlY3RzTm9kZSkKIHsKICAgICBWZWN0b3I8VUNoYXI+IG1h
cmt1cDsKQEAgLTE2MCwyMCArMTc1LDMwIEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6
OndyYXBXaXRoTm8KIAogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhTdHls
ZU5vZGUoQ1NTU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9v
bCBpc0Jsb2NrKQogeworICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsKKyAgICBhcHBlbmRTdHls
ZU5vZGVPcGVuVGFnKG9wZW5UYWcsIHN0eWxlLCBkb2N1bWVudCwgaXNCbG9jayk7CisgICAgbV9y
ZXZlcnNlZFByZWNlZGluZ01hcmt1cC5hcHBlbmQoU3RyaW5nOjphZG9wdChvcGVuVGFnKSk7Cisg
ICAgYXBwZW5kU3RyaW5nKHN0eWxlTm9kZUNsb3NlVGFnKGlzQmxvY2spKTsKK30KKwordm9pZCBT
dHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kU3R5bGVOb2RlT3BlblRhZyhWZWN0b3I8VUNo
YXI+JiBvdXQsIENTU1N0eWxlRGVjbGFyYXRpb24qIHN0eWxlLCBEb2N1bWVudCogZG9jdW1lbnQs
IGJvb2wgaXNCbG9jaykKK3sKICAgICAvLyBBbGwgdGV4dC1kZWNvcmF0aW9uLXJlbGF0ZWQgZWxl
bWVudHMgc2hvdWxkIGhhdmUgYmVlbiB0cmVhdGVkIGFzIHNwZWNpYWwgYW5jZXN0b3JzCiAgICAg
Ly8gSWYgd2UgZXZlciBoaXQgdGhpcyBBU1NFUlQsIHdlIHNob3VsZCBleHBvcnQgU3R5bGVDaGFu
Z2UgaW4gQXBwbHlTdHlsZUNvbW1hbmQgYW5kIHVzZSBpdCBoZXJlCiAgICAgQVNTRVJUKHByb3Bl
cnR5TWlzc2luZ09yRXF1YWxUb05vbmUoc3R5bGUsIENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24p
ICYmIHByb3BlcnR5TWlzc2luZ09yRXF1YWxUb05vbmUoc3R5bGUsIENTU1Byb3BlcnR5V2Via2l0
VGV4dERlY29yYXRpb25zSW5FZmZlY3QpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0
IFN0cmluZywgZGl2U3R5bGUsICgiPGRpdiBzdHlsZT1cIiIpKTsKLSAgICBERUZJTkVfU1RBVElD
X0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2UsICgiPC9kaXY+IikpOwogICAgIERFRklORV9T
VEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHlsZVNwYW5PcGVuLCAoIjxzcGFuIGNsYXNzPVwi
IiBBcHBsZVN0eWxlU3BhbkNsYXNzICJcIiBzdHlsZT1cIiIpKTsKKyAgICBhcHBlbmQob3V0LCBp
c0Jsb2NrID8gZGl2U3R5bGUgOiBzdHlsZVNwYW5PcGVuKTsKKyAgICBhcHBlbmRBdHRyaWJ1dGVW
YWx1ZShvdXQsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKTsK
KyAgICBvdXQuYXBwZW5kKCdcIicpOworICAgIG91dC5hcHBlbmQoJz4nKTsKK30KKworY29uc3Qg
U3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyhib29sIGlz
QmxvY2spCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBTdHJpbmcsIGRpdkNsb3Nl
LCAoIjwvZGl2PiIpKTsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5
bGVTcGFuQ2xvc2UsICgiPC9zcGFuPiIpKTsKLSAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7Ci0g
ICAgYXBwZW5kKG9wZW5UYWcsIGlzQmxvY2sgPyBkaXZTdHlsZSA6IHN0eWxlU3Bhbk9wZW4pOwot
ICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG9wZW5UYWcsIHN0eWxlLT5jc3NUZXh0KCksIGRvY3Vt
ZW50LT5pc0hUTUxEb2N1bWVudCgpKTsKLSAgICBvcGVuVGFnLmFwcGVuZCgnXCInKTsKLSAgICBv
cGVuVGFnLmFwcGVuZCgnPicpOwotICAgIG1fcmV2ZXJzZWRQcmVjZWRpbmdNYXJrdXAuYXBwZW5k
KFN0cmluZzo6YWRvcHQob3BlblRhZykpOwotICAgIGFwcGVuZFN0cmluZyhpc0Jsb2NrID8gZGl2
Q2xvc2UgOiBzdHlsZVNwYW5DbG9zZSk7CisgICAgcmV0dXJuIGlzQmxvY2sgPyBkaXZDbG9zZSA6
IHN0eWxlU3BhbkNsb3NlOwogfQogCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnRh
a2VSZXN1bHRzKCkKQEAgLTE5MSwxNyArMjE2LDM0IEBAIFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1
bXVsYXRvcjo6dGFrZVJlc3UKIH0KIAogdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6YXBw
ZW5kVGV4dChWZWN0b3I8VUNoYXI+JiBvdXQsIFRleHQqIHRleHQpCi17Ci0gICAgaWYgKCFzaG91
bGRBbm5vdGF0ZSgpIHx8ICh0ZXh0LT5wYXJlbnRFbGVtZW50KCkgJiYgdGV4dC0+cGFyZW50RWxl
bWVudCgpLT50YWdRTmFtZSgpID09IHRleHRhcmVhVGFnKSkgeworeyAgICAKKyAgICBib29sIHBh
cmVudElzVGV4dGFyZWEgPSB0ZXh0LT5wYXJlbnRFbGVtZW50KCkgJiYgdGV4dC0+cGFyZW50RWxl
bWVudCgpLT50YWdRTmFtZSgpID09IHRleHRhcmVhVGFnOworICAgIGJvb2wgd3JhcHBpbmdTcGFu
ID0gc2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxlKHRleHQpICYmICFwYXJlbnRJc1RleHRhcmVhOwor
ICAgIGlmICh3cmFwcGluZ1NwYW4pIHsKKyAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gd3Jh
cHBpbmdTdHlsZSA9IG1fd3JhcHBpbmdTdHlsZS0+Y29weSgpOworICAgICAgICAvLyBGSVhNRTog
PHJkYXI6Ly9wcm9ibGVtLzUzNzE1MzY+IFN0eWxlIHJ1bGVzIHRoYXQgbWF0Y2ggcGFzdGVkIGNv
bnRlbnQgY2FuIGNoYW5nZSBpdCdzIGFwcGVhcmFuY2UKKyAgICAgICAgLy8gTWFrZSBzdXJlIHNw
YW5zIGFyZSBpbmxpbmUgc3R5bGUgaW4gcGFzdGUgc2lkZSBlLmcuIHNwYW4geyBkaXNwbGF5OiBi
bG9jayB9LgorICAgICAgICB3cmFwcGluZ1N0eWxlLT5mb3JjZUlubGluZSgpOworICAgICAgICAv
LyBGSVhNRTogU2hvdWxkIHRoaXMgYmUgaW5jbHVkZWQgaW4gZm9yY2VJbmxpbmU/CisgICAgICAg
IHdyYXBwaW5nU3R5bGUtPnN0eWxlKCktPnNldFByb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQsIENT
U1ZhbHVlTm9uZSk7CisKKyAgICAgICAgVmVjdG9yPFVDaGFyPiBvcGVuVGFnOworICAgICAgICBh
cHBlbmRTdHlsZU5vZGVPcGVuVGFnKG9wZW5UYWcsIHdyYXBwaW5nU3R5bGUtPnN0eWxlKCksIHRl
eHQtPmRvY3VtZW50KCkpOworICAgICAgICBhcHBlbmQob3V0LCBTdHJpbmc6OmFkb3B0KG9wZW5U
YWcpKTsKKyAgICB9CisKKyAgICBpZiAoIXNob3VsZEFubm90YXRlKCkgfHwgcGFyZW50SXNUZXh0
YXJlYSkKICAgICAgICAgTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQob3V0LCB0ZXh0KTsK
LSAgICAgICAgcmV0dXJuOworICAgIGVsc2UgeworICAgICAgICBib29sIHVzZVJlbmRlcmVkVGV4
dCA9ICFlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKHRleHQpLCBzZWxl
Y3RUYWcpOworICAgICAgICBTdHJpbmcgY29udGVudCA9IHVzZVJlbmRlcmVkVGV4dCA/IHJlbmRl
cmVkVGV4dCh0ZXh0LCBtX3JhbmdlKSA6IHN0cmluZ1ZhbHVlRm9yUmFuZ2UodGV4dCwgbV9yYW5n
ZSk7CisgICAgICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOworICAgICAgICBhcHBlbmRDaGFyYWN0
ZXJzUmVwbGFjaW5nRW50aXRpZXMoYnVmZmVyLCBjb250ZW50LmNoYXJhY3RlcnMoKSwgY29udGVu
dC5sZW5ndGgoKSwgRW50aXR5TWFza0luUENEQVRBKTsKKyAgICAgICAgYXBwZW5kKG91dCwgY29u
dmVydEhUTUxUZXh0VG9JbnRlcmNoYW5nZUZvcm1hdChTdHJpbmc6OmFkb3B0KGJ1ZmZlciksIHRl
eHQpKTsKICAgICB9CiAKLSAgICBib29sIHVzZVJlbmRlcmVkVGV4dCA9ICFlbmNsb3NpbmdOb2Rl
V2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKHRleHQpLCBzZWxlY3RUYWcpOwotICAgIFN0cmlu
ZyBjb250ZW50ID0gdXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRleHQsIG1fcmFuZ2Up
IDogc3RyaW5nVmFsdWVGb3JSYW5nZSh0ZXh0LCBtX3JhbmdlKTsKLSAgICBWZWN0b3I8VUNoYXI+
IGJ1ZmZlcjsKLSAgICBhcHBlbmRDaGFyYWN0ZXJzUmVwbGFjaW5nRW50aXRpZXMoYnVmZmVyLCBj
b250ZW50LmNoYXJhY3RlcnMoKSwgY29udGVudC5sZW5ndGgoKSwgRW50aXR5TWFza0luUENEQVRB
KTsKLSAgICBhcHBlbmQob3V0LCBjb252ZXJ0SFRNTFRleHRUb0ludGVyY2hhbmdlRm9ybWF0KFN0
cmluZzo6YWRvcHQoYnVmZmVyKSwgdGV4dCkpOworICAgIGlmICh3cmFwcGluZ1NwYW4pCisgICAg
ICAgIGFwcGVuZChvdXQsIHN0eWxlTm9kZUNsb3NlVGFnKCkpOwogfQogICAgIAogU3RyaW5nIFN0
eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpyZW5kZXJlZFRleHQoY29uc3QgTm9kZSogbm9kZSwgY29u
c3QgUmFuZ2UqIHJhbmdlKQpAQCAtMjQ1LDMwICsyODcsNDYgQEAgdm9pZCBTdHlsZWRNYXJrdXBB
Y2N1bXVsYXRvcjo6YXBwZW5kRWxlbQogCiAgICAgTmFtZWROb2RlTWFwKiBhdHRyaWJ1dGVzID0g
ZWxlbWVudC0+YXR0cmlidXRlcygpOwogICAgIHVuc2lnbmVkIGxlbmd0aCA9IGF0dHJpYnV0ZXMt
Pmxlbmd0aCgpOworICAgIGJvb2wgc2hvdWxkQW5ub3RhdGVPckZvcmNlSW5saW5lID0gZWxlbWVu
dC0+aXNIVE1MRWxlbWVudCgpICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxp
bmUpOworICAgIGJvb2wgc2hvdWxkT3ZlcnJpZGVTdHlsZUF0dHIgPSBzaG91bGRBbm5vdGF0ZU9y
Rm9yY2VJbmxpbmUgfHwgc2hvdWxkQXBwbHlXcmFwcGluZ1N0eWxlKGVsZW1lbnQpOwogICAgIGZv
ciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgQXR0cmli
dXRlKiBhdHRyaWJ1dGUgPSBhdHRyaWJ1dGVzLT5hdHRyaWJ1dGVJdGVtKGkpOwogICAgICAgICAv
LyBXZSdsbCBoYW5kbGUgdGhlIHN0eWxlIGF0dHJpYnV0ZSBzZXBhcmF0ZWx5LCBiZWxvdy4KLSAg
ICAgICAgaWYgKGF0dHJpYnV0ZS0+bmFtZSgpID09IHN0eWxlQXR0ciAmJiBlbGVtZW50LT5pc0hU
TUxFbGVtZW50KCkgJiYgKHNob3VsZEFubm90YXRlKCkgfHwgYWRkRGlzcGxheUlubGluZSkpCisg
ICAgICAgIGlmIChhdHRyaWJ1dGUtPm5hbWUoKSA9PSBzdHlsZUF0dHIgJiYgc2hvdWxkT3ZlcnJp
ZGVTdHlsZUF0dHIpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgYXBwZW5kQXR0cmli
dXRlKG91dCwgZWxlbWVudCwgKmF0dHJpYnV0ZSwgMCk7CiAgICAgfQogCi0gICAgaWYgKGVsZW1l
bnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hvdWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5SW5s
aW5lKSkgewotICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBzdHlsZSA9IEVkaXRpbmdTdHls
ZTo6Y3JlYXRlKHRvSFRNTEVsZW1lbnQoZWxlbWVudCktPmdldElubGluZVN0eWxlRGVjbCgpKTsK
LSAgICAgICAgaWYgKHNob3VsZEFubm90YXRlKCkpCi0gICAgICAgICAgICBzdHlsZS0+bWVyZ2VT
dHlsZUZyb21SdWxlc0ZvclNlcmlhbGl6YXRpb24odG9IVE1MRWxlbWVudChlbGVtZW50KSk7Ci0g
ICAgICAgIGlmIChhZGREaXNwbGF5SW5saW5lKQotICAgICAgICAgICAgc3R5bGUtPnN0eWxlKCkt
PnNldFByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSwgQ1NTVmFsdWVJbmxpbmUsIHRydWUpOwot
Ci0gICAgICAgIC8vIElmIHRoZSBub2RlIGlzIG5vdCBmdWxseSBzZWxlY3RlZCBieSB0aGUgcmFu
Z2UsIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBrZWVwIHN0eWxlcyB0aGF0IGFmZmVjdCBpdHMgcmVs
YXRpb25zaGlwIHRvIHRoZSBub2RlcyBhcm91bmQgaXQKLSAgICAgICAgLy8gb25seSB0aGUgb25l
cyB0aGF0IGFmZmVjdCBpdCBhbmQgdGhlIG5vZGVzIHdpdGhpbiBpdC4KLSAgICAgICAgaWYgKHJh
bmdlRnVsbHlTZWxlY3RzTm9kZSA9PSBEb2VzTm90RnVsbHlTZWxlY3ROb2RlKQotICAgICAgICAg
ICAgc3R5bGUtPnN0eWxlKCktPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQpOworICAg
IGlmIChzaG91bGRPdmVycmlkZVN0eWxlQXR0cikgeworICAgICAgICBSZWZQdHI8RWRpdGluZ1N0
eWxlPiBuZXdJbmxpbmVTdHlsZTsKIAotICAgICAgICBpZiAoIXN0eWxlLT5pc0VtcHR5KCkpIHsK
KyAgICAgICAgaWYgKHNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZShlbGVtZW50KSkgeworICAgICAg
ICAgICAgbmV3SW5saW5lU3R5bGUgPSBtX3dyYXBwaW5nU3R5bGUtPmNvcHkoKTsKKyAgICAgICAg
ICAgIG5ld0lubGluZVN0eWxlLT5yZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxl
KGVsZW1lbnQpOworICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPnJlbW92ZVN0eWxlQ29uZmxp
Y3RpbmdXaXRoU3R5bGVPZk5vZGUoZWxlbWVudCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAg
ICAgbmV3SW5saW5lU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZSgpOworCisgICAgICAgIGlm
IChlbGVtZW50LT5pc1N0eWxlZEVsZW1lbnQoKSAmJiBzdGF0aWNfY2FzdDxTdHlsZWRFbGVtZW50
Kj4oZWxlbWVudCktPmlubGluZVN0eWxlRGVjbCgpKQorICAgICAgICAgICAgbmV3SW5saW5lU3R5
bGUtPm92ZXJyaWRlV2l0aFN0eWxlKHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50
KS0+aW5saW5lU3R5bGVEZWNsKCkpOworCisgICAgICAgIGlmIChzaG91bGRBbm5vdGF0ZU9yRm9y
Y2VJbmxpbmUpIHsKKyAgICAgICAgICAgIGlmIChzaG91bGRBbm5vdGF0ZSgpKQorICAgICAgICAg
ICAgICAgIG5ld0lubGluZVN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlv
bih0b0hUTUxFbGVtZW50KGVsZW1lbnQpKTsKKworICAgICAgICAgICAgaWYgKGFkZERpc3BsYXlJ
bmxpbmUpCisgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUtPmZvcmNlSW5saW5lKCk7CisK
KyAgICAgICAgICAgIC8vIElmIHRoZSBub2RlIGlzIG5vdCBmdWxseSBzZWxlY3RlZCBieSB0aGUg
cmFuZ2UsIHRoZW4gd2UgZG9uJ3Qgd2FudCB0byBrZWVwIHN0eWxlcyB0aGF0IGFmZmVjdCBpdHMg
cmVsYXRpb25zaGlwIHRvIHRoZSBub2RlcyBhcm91bmQgaXQKKyAgICAgICAgICAgIC8vIG9ubHkg
dGhlIG9uZXMgdGhhdCBhZmZlY3QgaXQgYW5kIHRoZSBub2RlcyB3aXRoaW4gaXQuCisgICAgICAg
ICAgICBpZiAocmFuZ2VGdWxseVNlbGVjdHNOb2RlID09IERvZXNOb3RGdWxseVNlbGVjdE5vZGUg
JiYgbmV3SW5saW5lU3R5bGUtPnN0eWxlKCkpCisgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5
bGUtPnN0eWxlKCktPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQpOworICAgICAgICB9
CisKKyAgICAgICAgaWYgKCFuZXdJbmxpbmVTdHlsZS0+aXNFbXB0eSgpKSB7CiAgICAgICAgICAg
ICBERUZJTkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgc3R5bGVQcmVmaXgsICgiIHN0eWxl
PVwiIikpOwogICAgICAgICAgICAgYXBwZW5kKG91dCwgc3R5bGVQcmVmaXgpOwotICAgICAgICAg
ICAgYXBwZW5kQXR0cmlidXRlVmFsdWUob3V0LCBzdHlsZS0+c3R5bGUoKS0+Y3NzVGV4dCgpLCBk
b2N1bWVudElzSFRNTCk7CisgICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVWYWx1ZShvdXQsIG5l
d0lubGluZVN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKICAgICAg
ICAgICAgIG91dC5hcHBlbmQoJ1wiJyk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNzgsNiArMzM2
LDMwIEBAIHZvaWQgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZEVsZW0KIAogTm9kZSog
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKE5vZGUqIHN0YXJ0Tm9kZSwg
Tm9kZSogcGFzdEVuZCkKIHsKKyAgICBpZiAoIW1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCkg
eworICAgICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gdHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRp
b24oc3RhcnROb2RlLCBwYXN0RW5kLCBUcmF2ZXJzZVdpdGhvdXRTZXJpYWxpemF0aW9uKTsKKyAg
ICAgICAgbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkID0gbGFzdENsb3NlZDsKKyAgICB9CisK
KyAgICBOb2RlKiBwYXJlbnRPZkhpZ2hlc3ROb2RlID0gbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxp
emVkID8gbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkLT5wYXJlbnROb2RlKCkgOiAwOworICAg
IGlmIChwYXJlbnRPZkhpZ2hlc3ROb2RlKSB7CisgICAgICAgIG1fd3JhcHBpbmdTdHlsZSA9IEVk
aXRpbmdTdHlsZTo6Y3JlYXRlKHBhcmVudE9mSGlnaGVzdE5vZGUsIEVkaXRpbmdTdHlsZTo6RWRp
dGluZ0luaGVyaXRhYmxlUHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsKKwor
ICAgICAgICAvLyBTdHlsZXMgdGhhdCBNYWlsIGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hvdWxk
IG9ubHkgYmUgcGxhY2VkIG9uIHRoZSBNYWlsIGJsb2NrcXVvdGUsCisgICAgICAgIC8vIHRvIGhl
bHAgdXMgZGlmZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVzZXIg
aGFzIGFwcGxpZWQuCisgICAgICAgIC8vIFRoaXMgaGVscHMgdXMgZ2V0IHRoZSBjb2xvciBvZiBj
b250ZW50IHBhc3RlZCBpbnRvIGJsb2NrcXVvdGVzIHJpZ2h0LgorICAgICAgICBtX3dyYXBwaW5n
U3R5bGUtPnJlbW92ZVN0eWxlQWRkZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShmaXJzdFBv
c2l0aW9uSW5PckJlZm9yZU5vZGUocGFyZW50T2ZIaWdoZXN0Tm9kZSksIGlzTWFpbEJsb2NrcXVv
dGUsIENhbkNyb3NzRWRpdGluZ0JvdW5kYXJ5KSk7CisKKyAgICAgICAgLy8gQ2FsbCBjb2xsYXBz
ZVRleHREZWNvcmF0aW9uUHJvcGVydGllcyBmaXJzdCBvciBvdGhlcndpc2UgaXQnbGwgY29weSB0
aGUgdmFsdWUgb3ZlciBmcm9tIGluLWVmZmVjdCB0byB0ZXh0LWRlY29yYXRpb25zLgorICAgICAg
ICBtX3dyYXBwaW5nU3R5bGUtPmNvbGxhcHNlVGV4dERlY29yYXRpb25Qcm9wZXJ0aWVzKCk7Cisg
ICAgfQorCisgICAgcmV0dXJuIHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uKHN0YXJ0Tm9k
ZSwgcGFzdEVuZCwgRW1pdFJlc3VsdFN0cmluZyk7Cit9CisKK05vZGUqIFN0eWxlZE1hcmt1cEFj
Y3VtdWxhdG9yOjp0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBzdGFydE5vZGUs
IE5vZGUqIHBhc3RFbmQsIE5vZGVUcmF2ZXJzYWxNb2RlIHRyYXZlcnNhbE1vZGUpCit7CisgICAg
Y29uc3QgYm9vbCBzaG91bGRFbWl0ID0gdHJhdmVyc2FsTW9kZSA9PSBFbWl0UmVzdWx0U3RyaW5n
OwogICAgIFZlY3RvcjxOb2RlKj4gYW5jZXN0b3JzVG9DbG9zZTsKICAgICBOb2RlKiBuZXh0Owog
ICAgIE5vZGUqIGxhc3RDbG9zZWQgPSAwOwpAQCAtMzA0LDExICszODYsMTMgQEAgTm9kZSogU3R5
bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZQogICAgICAgICAgICAgICAgIG5leHQgPSBw
YXN0RW5kOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8gQWRkIHRoZSBub2RlIHRv
IHRoZSBtYXJrdXAgaWYgd2UncmUgbm90IHNraXBwaW5nIHRoZSBkZXNjZW5kYW50cwotICAgICAg
ICAgICAgYXBwZW5kU3RhcnRUYWcobik7CisgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAg
ICAgICAgICAgICAgICBhcHBlbmRTdGFydFRhZyhuKTsKIAogICAgICAgICAgICAgLy8gSWYgbm9k
ZSBoYXMgbm8gY2hpbGRyZW4sIGNsb3NlIHRoZSB0YWcgbm93LgogICAgICAgICAgICAgaWYgKCFu
LT5jaGlsZE5vZGVDb3VudCgpKSB7Ci0gICAgICAgICAgICAgICAgYXBwZW5kRW5kVGFnKG4pOwor
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgICAgICBhcHBl
bmRFbmRUYWcobik7CiAgICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9IG47CiAgICAgICAgICAg
ICB9IGVsc2UgewogICAgICAgICAgICAgICAgIG9wZW5lZFRhZyA9IHRydWU7CkBAIC0zMjUsNyAr
NDA5LDggQEAgTm9kZSogU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZQogICAgICAg
ICAgICAgICAgIGlmIChuZXh0ICE9IHBhc3RFbmQgJiYgbmV4dC0+aXNEZXNjZW5kYW50T2YoYW5j
ZXN0b3IpKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAvLyBO
b3QgYXQgdGhlIGVuZCBvZiB0aGUgcmFuZ2UsIGNsb3NlIGFuY2VzdG9ycyB1cCB0byBzaWJsaW5n
IG9mIG5leHQgbm9kZS4KLSAgICAgICAgICAgICAgICBhcHBlbmRFbmRUYWcoYW5jZXN0b3IpOwor
ICAgICAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgICAgICBhcHBl
bmRFbmRUYWcoYW5jZXN0b3IpOwogICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBhbmNlc3Rv
cjsKICAgICAgICAgICAgICAgICBhbmNlc3RvcnNUb0Nsb3NlLnJlbW92ZUxhc3QoKTsKICAgICAg
ICAgICAgIH0KQEAgLTM0MCw3ICs0MjUsOCBAQCBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRv
cjo6c2VyaWFsaXplCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
ICAgICAgICAgICAgLy8gb3IgYikgYW5jZXN0b3JzIHRoYXQgd2UgbmV2ZXIgZW5jb3VudGVyZWQg
ZHVyaW5nIGEgcHJlLW9yZGVyIHRyYXZlcnNhbCBzdGFydGluZyBhdCBzdGFydE5vZGU6CiAgICAg
ICAgICAgICAgICAgICAgIEFTU0VSVChzdGFydE5vZGUtPmlzRGVzY2VuZGFudE9mKHBhcmVudCkp
OwotICAgICAgICAgICAgICAgICAgICB3cmFwV2l0aE5vZGUocGFyZW50KTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHNob3VsZEVtaXQpCisgICAgICAgICAgICAgICAgICAgICAgICB3cmFwV2l0
aE5vZGUocGFyZW50KTsKICAgICAgICAgICAgICAgICAgICAgbGFzdENsb3NlZCA9IHBhcmVudDsK
ICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CkBAIC01MTMsNyArNTk5LDEzIEBAIFN0
cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKIAogICAgIGRvY3VtZW50LT51
cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAotICAgIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yIGFjY3VtdWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgc2hvdWxk
QW5ub3RhdGUsIHVwZGF0ZWRSYW5nZS5nZXQoKSk7CisgICAgTm9kZSogYm9keSA9IGVuY2xvc2lu
Z05vZGVXaXRoVGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUoY29tbW9uQW5jZXN0b3IpLCBib2R5VGFn
KTsKKyAgICBOb2RlKiBmdWxseVNlbGVjdGVkUm9vdCA9IDA7CisgICAgLy8gRklYTUU6IERvIHRo
aXMgZm9yIGFsbCBmdWxseSBzZWxlY3RlZCBibG9ja3MsIG5vdCBqdXN0IHRoZSBib2R5LgorICAg
IGlmIChib2R5ICYmIGFyZVJhbmdlc0VxdWFsKFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZy
b21Db250ZW50c09mTm9kZShib2R5KS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCByYW5nZSkp
CisgICAgICAgIGZ1bGx5U2VsZWN0ZWRSb290ID0gYm9keTsKKyAgICBOb2RlKiBzcGVjaWFsQ29t
bW9uQW5jZXN0b3IgPSBoaWdoZXN0QW5jZXN0b3JUb1dyYXBNYXJrdXAodXBkYXRlZFJhbmdlLmdl
dCgpLCBmdWxseVNlbGVjdGVkUm9vdCwgc2hvdWxkQW5ub3RhdGUpOworICAgIFN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yIGFjY3VtdWxhdG9yKG5vZGVzLCBzaG91bGRSZXNvbHZlVVJMcywgc2hvdWxk
QW5ub3RhdGUsIHVwZGF0ZWRSYW5nZS5nZXQoKSwgc3BlY2lhbENvbW1vbkFuY2VzdG9yKTsKICAg
ICBOb2RlKiBwYXN0RW5kID0gdXBkYXRlZFJhbmdlLT5wYXN0TGFzdE5vZGUoKTsKIAogICAgIE5v
ZGUqIHN0YXJ0Tm9kZSA9IHVwZGF0ZWRSYW5nZS0+Zmlyc3ROb2RlKCk7CkBAIC01MzksMTQgKzYz
MSw2IEBAIFN0cmluZyBjcmVhdGVNYXJrdXAoY29uc3QgUmFuZ2UqIHJhbmdlLCAKICAgICAgICAg
QVNTRVJUKCFlYyk7CiAgICAgfQogCi0gICAgTm9kZSogYm9keSA9IGVuY2xvc2luZ05vZGVXaXRo
VGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUoY29tbW9uQW5jZXN0b3IpLCBib2R5VGFnKTsKLSAgICBO
b2RlKiBmdWxseVNlbGVjdGVkUm9vdCA9IDA7Ci0gICAgLy8gRklYTUU6IERvIHRoaXMgZm9yIGFs
bCBmdWxseSBzZWxlY3RlZCBibG9ja3MsIG5vdCBqdXN0IHRoZSBib2R5LgotICAgIGlmIChib2R5
ICYmIGFyZVJhbmdlc0VxdWFsKFZpc2libGVTZWxlY3Rpb246OnNlbGVjdGlvbkZyb21Db250ZW50
c09mTm9kZShib2R5KS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCByYW5nZSkpCi0gICAgICAg
IGZ1bGx5U2VsZWN0ZWRSb290ID0gYm9keTsKLQotICAgIE5vZGUqIHNwZWNpYWxDb21tb25BbmNl
c3RvciA9IGhpZ2hlc3RBbmNlc3RvclRvV3JhcE1hcmt1cCh1cGRhdGVkUmFuZ2UuZ2V0KCksIGZ1
bGx5U2VsZWN0ZWRSb290LCBzaG91bGRBbm5vdGF0ZSk7Ci0KICAgICBOb2RlKiBsYXN0Q2xvc2Vk
ID0gYWNjdW11bGF0b3Iuc2VyaWFsaXplTm9kZXMoc3RhcnROb2RlLCBwYXN0RW5kKTsKIAogICAg
IGlmIChzcGVjaWFsQ29tbW9uQW5jZXN0b3IgJiYgbGFzdENsb3NlZCkgewpAQCAtNTg2LDIwICs2
NzAsNiBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAgICAgICAg
IH0KICAgICB9CiAKLSAgICAvLyBBZGQgYSB3cmFwcGVyIHNwYW4gd2l0aCB0aGUgc3R5bGVzIHRo
YXQgYWxsIG9mIHRoZSBub2RlcyBpbiB0aGUgbWFya3VwIGluaGVyaXQuCi0gICAgQ29udGFpbmVy
Tm9kZSogcGFyZW50T2ZMYXN0Q2xvc2VkID0gbGFzdENsb3NlZCA/IGxhc3RDbG9zZWQtPnBhcmVu
dE5vZGUoKSA6IDA7Ci0gICAgaWYgKHBhcmVudE9mTGFzdENsb3NlZCAmJiBwYXJlbnRPZkxhc3RD
bG9zZWQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgUmVmUHRyPEVkaXRpbmdTdHlsZT4gc3R5bGUg
PSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwYXJlbnRPZkxhc3RDbG9zZWQsIEVkaXRpbmdTdHlsZTo6
RWRpdGluZ0luaGVyaXRhYmxlUHJvcGVydGllc0FuZEJhY2tncm91bmRDb2xvckluRWZmZWN0KTsK
LQotICAgICAgICAvLyBTdHlsZXMgdGhhdCBNYWlsIGJsb2NrcXVvdGVzIGNvbnRyaWJ1dGUgc2hv
dWxkIG9ubHkgYmUgcGxhY2VkIG9uIHRoZSBNYWlsIGJsb2NrcXVvdGUsIHRvIGhlbHAKLSAgICAg
ICAgLy8gdXMgZGlmZmVyZW50aWF0ZSB0aG9zZSBzdHlsZXMgZnJvbSBvbmVzIHRoYXQgdGhlIHVz
ZXIgaGFzIGFwcGxpZWQuICBUaGlzIGhlbHBzIHVzCi0gICAgICAgIC8vIGdldCB0aGUgY29sb3Ig
b2YgY29udGVudCBwYXN0ZWQgaW50byBibG9ja3F1b3RlcyByaWdodC4KLSAgICAgICAgc3R5bGUt
PnJlbW92ZVN0eWxlQWRkZWRCeU5vZGUoZW5jbG9zaW5nTm9kZU9mVHlwZShmaXJzdFBvc2l0aW9u
SW5Ob2RlKHBhcmVudE9mTGFzdENsb3NlZCksIGlzTWFpbEJsb2NrcXVvdGUsIENhbkNyb3NzRWRp
dGluZ0JvdW5kYXJ5KSk7Ci0KLSAgICAgICAgaWYgKCFzdHlsZS0+aXNFbXB0eSgpKQotICAgICAg
ICAgICAgYWNjdW11bGF0b3Iud3JhcFdpdGhTdHlsZU5vZGUoc3R5bGUtPnN0eWxlKCksIGRvY3Vt
ZW50KTsKLSAgICB9Ci0KICAgICAvLyBGSVhNRTogVGhlIGludGVyY2hhbmdlIG5ld2xpbmUgc2hv
dWxkIGJlIHBsYWNlZCBpbiB0aGUgYmxvY2sgdGhhdCBpdCdzIGluLCBub3QgYWZ0ZXIgYWxsIG9m
IHRoZSBjb250ZW50LCB1bmNvbmRpdGlvbmFsbHkuCiAgICAgaWYgKHNob3VsZEFubm90YXRlID09
IEFubm90YXRlRm9ySW50ZXJjaGFuZ2UgJiYgbmVlZEludGVyY2hhbmdlTmV3bGluZUFmdGVyKHZp
c2libGVFbmQucHJldmlvdXMoKSkpCiAgICAgICAgIGFjY3VtdWxhdG9yLmFwcGVuZFN0cmluZyhp
bnRlcmNoYW5nZU5ld2xpbmVTdHJpbmcpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gOTI3ODEpCisrKyBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBAQAorMjAx
MS0wOC0xMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAgICBDb3B5
aW5nIGNhbiByZXN1bHQgaW4gc3BhbiBhcm91bmQgYmxvY2sgZWxlbWVudHMgb24gdGhlIGNsaXBi
b2FyZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzQ1
NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlz
IHBhdGNoIG92ZXJoYXVsZWQgdGhlIHdheSB3ZSBwcmVzZXJ2ZSBzdHlsZXMgd2hlbiBjb3B5aW5n
IGFuZCBwYXN0aW5nIEhUTUwgY29udGVudHMuIE1hbnkgdGVzdHMgcHJvZ3Jlc3NlZAorICAgICAg
ICBhbmQgbG9zdCB3cmFwcGluZyBzcGFucyB3aGlsZSBvdGhlcnMgYXJlIG9ic2VydmluZyBkaWZm
ZXJlbnQgbWFya3VwIG9uIHRoZSBjbGlwYm9hcmQgYXMgZXhwZWN0ZWQuCisKKyAgICAgICAgKiBl
ZGl0aW5nL2RlbGV0aW5nL2RlbGV0aW5nLWxpbmUtYnJlYWstcHJlc2VydmVzLXVuZGVybGluZS1j
b2xvci1leHBlY3RlZC50eHQ6IHNwYW4ncyBzdHlsZSBhdHRyaWJ1dGUgbm93IGhhcworICAgICAg
ICBhIHRyYWlsaW5nIHNwYWNlLgorICAgICAgICAqIGVkaXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0
LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dDogTGlnaHRHcmF5IGlz
IG5vdyByZ2IoMjExLCAyMTEsIDIxMSkuCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL2Rh
dGEtdHJhbnNmZXItaXRlbXMtZXhwZWN0ZWQudHh0OiBEaWZmZXJlbnQgc2VyaWFsaXphdGlvbi4K
KyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQu
dHh0OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtNDAzOTc3Ny1m
aXgtZXhwZWN0ZWQudHh0OiBObyBsb25nZXIgbmVzdHMgdWwgZXJyb25lb3VzbHkgb3IgYWxpZ25z
IHRoZSBpbm5lciBsaXN0CisgICAgICAgIHRvIHRoZSByaWdodC4KKyAgICAgICAgKiBlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0OiBObyBsb25nZXIgcHJv
ZHVjZXMgZXJyb25lb3VzIHdyYXBwaW5nIHNwYW4uCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJv
YXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQ6IERpdHRvLgorICAgICAgICAq
IGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQ6IERpdHRvLgor
ICAgICAgICAqIGVkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LXdpdGgtc3R5bGUtNC1leHBl
Y3RlZC50eHQ6IERpdHRvLgorICAgICAgICAqIGZhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwt
ZXhwZWN0ZWQudHh0OiBEaWZmZXJlbnQgc2VyaWFsaXphdGlvbi4KKyAgICAgICAgKiBwbGF0Zm9y
bS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVj
dGVkLnR4dDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGlu
Zy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAw
Mi1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQtbWFjL2VkaXRp
bmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisK
IDIwMTEtMDgtMTAgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogUmVtb3ZlIE5ldHdvcmsuaW5pdGlhbENvbnRlbnRTZXQgZnJv
bSBwcm90b2NvbCwgc3RvcmUgd29ya2VycyBjb250ZW50IG9uIGJhY2tlbmQuCkluZGV4OiBMYXlv
dXRUZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0aW5nLWxpbmUtYnJlYWstcHJlc2VydmVzLXVu
ZGVybGluZS1jb2xvci1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRp
dGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFrLXByZXNlcnZlcy11bmRlcmxpbmUtY29s
b3ItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5Mjc4MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcv
ZGVsZXRpbmcvZGVsZXRpbmctbGluZS1icmVhay1wcmVzZXJ2ZXMtdW5kZXJsaW5lLWNvbG9yLWV4
cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTMsNyArMTMsNyBAQCBBZnRlcjoKIHwgPGRp
dj4KIHwgICAiVGhpcyBzaG91bGQgbm90IGJlIHVuZGVybGluZWQuPCNzZWxlY3Rpb24tY2FyZXQ+
IgogfCAgIDxzcGFuPgotfCAgICAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOyBj
b2xvcjogYmx1ZTsiCit8ICAgICBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7IGNv
bG9yOiBibHVlOyAiCiB8ICAgICA8c3Bhbj4KIHwgICAgICAgc3R5bGU9ImNvbG9yOnJlZDsiCiB8
ICAgICAgICJUaGlzIHNob3VsZCBiZSB1bmRlcmxpbmVkLiIKSW5kZXg6IExheW91dFRlc3RzL2Vk
aXRpbmcvZXhlY0NvbW1hbmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4
cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5k
L2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQJKHJldmlz
aW9uIDkyNzgxKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9leGVjQ29tbWFuZC9pbnNlcnQtbGlz
dC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBA
IC00LDcgKzQsNyBAQCBUaGlzIHRlc3RzIGxpc3QgY3JlYXRpb24gaW4gYW4gZWRpdGFibGUgCiB8
ICAgICAiRWRpdGFibDwjc2VsZWN0aW9uLWFuY2hvcj5lIHBhcmFncmFwaCBjb250YWluaW5nIGEg
IgogfCAgICAgPHNwYW4+CiB8ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0iZmFsc2UiCi18ICAgICAg
IHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBMaWdodEdyYXk7IgorfCAgICAgICBzdHlsZT0iYmFj
a2dyb3VuZC1jb2xvcjogcmdiKDIxMSwgMjExLCAyMTEpOyAiCiB8ICAgICAgICJub24tZWRpdGFi
bGUiCiB8ICAgICAiIGluIHRoZSBtaWRkbGUiCiB8ICAgICA8YnI+CkluZGV4OiBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1leHBlY3RlZC50eHQKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXIt
aXRlbXMtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5Mjc4MSkKKysrIExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMjAsNiArMjAsNiBAQCBUZXN0aW5nIGlmIERhdGFUcmFuc2Zlckl0ZW1zIGNhbiBi
ZSBhY2NlCiBEYXRhVHJhbnNmZXJJdGVtIGFjY2Vzc2VkIG91dHNpZGUgZXZlbnQgaGFuZGxlciEK
IGNvcHk6IGl0ZW1zWzBdIHZhbHVlOiBIZWxsbyBXb3JsZCEKIGNvcHk6IGl0ZW1zWzFdIHZhbHVl
OiA8Yj5IZWxsbyBXb3JsZCEKLXBhc3RlOiBpdGVtc1swXSB2YWx1ZTogPHNwYW4gY2xhc3M9IkFw
cGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LXN0eWxlOiBu
b3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXIt
c3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFs
aWduOiAtd2Via2l0LWF1dG87IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25l
OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Vi
a2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0OiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1h
ZGp1c3Q6IGF1dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgZm9udC1zaXplOiBt
ZWRpdW07ICI+VGhpcyBmaWxlIHRlc3RzIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IGFuZCBwcm9w
ZXJ0aWVzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJULjwvc3Bh
bj4KK3Bhc3RlOiBpdGVtc1swXSB2YWx1ZTogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4i
IHN0eWxlPSJjb2xvcjogcmdiKDAsIDAsIDApOyBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFy
aWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFs
OyBsaW5lLWhlaWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiAtd2Via2l0LWF1
dG87IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTog
bm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc2l6ZS1h
ZGp1c3Q6IGF1dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgZm9udC1zaXplOiBt
ZWRpdW07IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyBmbG9hdDogbm9uZTsgIj5UaGlzIGZp
bGUgdGVzdHMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYW5kIHByb3BlcnRpZXMgb2YgRGF0YVRy
YW5zZmVySXRlbXMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuPC9zcGFuPgogcGFzdGU6IGl0ZW1z
WzFdIHZhbHVlOiBUaGlzIGZpbGUgdGVzdHMgdGhlIGJhc2ljIGZ1bmN0aW9uYWxpdHkgYW5kIHBy
b3BlcnRpZXMgb2YgRGF0YVRyYW5zZmVySXRlbXMuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCiAK
SW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJk
L29ucGFzdGUtdGV4dC1odG1sLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3ODEpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIx
OiB0ZXh0L3BsYWluOiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRt
bCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuIAotQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDIzOiB0ZXh0L2h0bWw6IDxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFu
IiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12
YXJpYW50OiBub3JtYWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3Jt
YWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IC13ZWJraXQt
YXV0bzsgdGV4dC1pbmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNl
OiBub3JtYWw7IHdpZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1kZWNv
cmF0aW9ucy1pbi1lZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsg
LXdlYmtpdC10ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgIj5UaGlz
IHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9h
cmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1z
cGFjZSI+wqA8L3NwYW4+PC9zcGFuPgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIzOiB0ZXh0L2h0
bWw6IDxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29sb3I6IHJnYigwLCAw
LCAwKTsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3JtYWw7IGZvbnQtd2Vp
Z2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVpZ2h0OiBub3JtYWw7
IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgdGV4dC1pbmRlbnQ6IDBweDsg
dGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdpZG93czogMjsgd29y
ZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsgLXdlYmtpdC10
ZXh0LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgZGlzcGxheTogaW5saW5l
ICFpbXBvcnRhbnQ7IGZsb2F0OiBub25lOyAiPlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNh
biBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVu
dC48c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj7CoDwvc3Bhbj48L3NwYW4+CiBU
aGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlw
Ym9hcmQgZHVyaW5nIGFuIG9ucGFzdGUgZXZlbnQuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCiBQ
YXN0ZSBjb250ZW50IGluIHRoaXMgZGl2LlRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBn
ZXQgdGV4dC9odG1sIGZyb20gdGhlIGNsaXBib2FyZCBkdXJpbmcgYW4gb25wYXN0ZSBldmVudC7C
oAogUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3
NzctZml4LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bh
c3RlYm9hcmQvcGFzdGUtNDAzOTc3Ny1maXgtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5Mjc4MSkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS00MDM5Nzc3LWZpeC1leHBl
Y3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTUxLDExICs1MSwxMCBAQCBBY3R1YWwgcmVzdWx0
OgogIgogfCA8dWw+CiB8ICAgc3R5bGU9InRleHQtYWxpZ246cmlnaHQ7IgotfCAgIDx1bD4KLXwg
ICAgIHN0eWxlPSJ0ZXh0LWFsaWduOiByaWdodDsgIgotfCAgICAgPGxpPgotfCAgICAgICAiQSIK
K3wgICA8bGk+Cit8ICAgICAiQSIKIHwgICA8ZGl2PgorfCAgICAgc3R5bGU9InRleHQtYWxpZ246
IC13ZWJraXQtYXV0bzsgIgogfCAgICAgPHVsPgogfCAgICAgICA8bGk+CiB8ICAgICAgICAgPGE+
CkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUt
ZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzgxKQorKysgTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtMywxMCArMyw3IEBAIFlvdSBzaG91bGQgc2VlIG1hcmt1cCBp
biB0aGUgZWRpdGFibGUgcmUKIHwgPHByZT4KIHwgICBjb250ZW50ZWRpdGFibGU9InRydWUiCiB8
ICAgaWQ9InByZSIKLXwgICA8c3Bhbj4KLXwgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgot
fCAgICAgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIgot
fCAgICAgPHByZT4KLXwgICAgICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgotfCAgICAgICBpZD0i
cHJlIgotfCAgICAgICAiPGlucHV0IHR5cGU9J2J1dHRvbic+Zm9vPGJyPmJhcjxiPmJhejwvYj48
I3NlbGVjdGlvbi1jYXJldD4iCit8ICAgPHByZT4KK3wgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSIKK3wgICAgIGlkPSJwcmUiCit8ICAgICAiPGlucHV0IHR5cGU9J2J1dHRvbic+Zm9vPGJyPmJh
cjxiPmJhejwvYj48I3NlbGVjdGlvbi1jYXJldD4iCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5
b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0CShy
ZXZpc2lvbiA5Mjc4MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1w
cmUtMDAxLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtNyw0ICs3LDQgQEAgYmFyCiBm
b28KIGJhcgogZXhlY0N1dENvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4g
PHByZT48YnI+PC9wcmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIg
Y2xhc3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHls
ZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9vIGJh
cjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CitleGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0
ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHByZT5mb28gYmFyPC9wcmU+PC9wcmU+IDwvZGl2
PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3ODEpCisrKyBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQJKHdvcmtpbmcg
Y29weSkKQEAgLTIsNCArMiw0IEBAIFRoaXMgaXMgYSBsYXlvdXQgdGVzdCBmb3IgcmRhcjovL3By
b2JsZW0KIGZvbwogYmFyCiBleGVjQ29weUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJl
ZGl0aW5nIj4gPHByZT5mb28gYmFyPC9wcmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRp
diBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHls
ZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1pbHk6IFRpbWVzOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAi
PjxwcmU+Zm9vIGJhcjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CitleGVjUGFzdGVDb21tYW5k
OiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+PHByZT5mb28gYmFyPC9wcmU+
PC9wcmU+IDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LXRleHQtMDEyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5Mjc4MSkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LTAxMi1leHBlY3Rl
ZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTYsNCArNiw0IEBAIGZvbwogZm9vCiAKIGV4ZWNDb3B5
Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVvdGU+
Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlZGl0aW5nIj48L2Rpdj4K
LWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2Pjxi
bG9ja3F1b3RlPmZvbzwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRpdGlu
ZyI+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJmb250LXNpemU6IG1lZGl1
bTsgIj48ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288
L2Jsb2NrcXVvdGU+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9zcGFuPjwvZGl2PgorZXhl
Y1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2Nr
cXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjwvZGl2PiA8ZGl2IGNsYXNzPSJlZGl0aW5nIj48
ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2Nr
cXVvdGU+PC9kaXY+PGRpdj48YnI+PC9kaXY+PC9kaXY+PC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0
cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLTQtZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0
LXdpdGgtc3R5bGUtNC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzgxKQorKysgTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtd2l0aC1zdHlsZS00LWV4cGVjdGVkLnR4
dAkod29ya2luZyBjb3B5KQpAQCAtOSw5ICs5LDcgQEAgQmVmb3JlIGNvcHk6CiBBZnRlciBwYXN0
ZToKIHwgPGI+CiB8ICAgc3R5bGU9ImJvcmRlcjogc29saWQgNXB4IGJsdWU7cGFkZGluZzogNXB4
OyIKLXwgICA8c3Bhbj4KLXwgICAgIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgorfCAgIDxpPgog
fCAgICAgc3R5bGU9ImZvbnQtd2VpZ2h0OiBub3JtYWw7ICIKLXwgICAgIDxpPgotfCAgICAgICAi
aGVsbG88I3NlbGVjdGlvbi1jYXJldD4iCit8ICAgICAiaGVsbG88I3NlbGVjdGlvbi1jYXJldD4i
CiB8ICAgPGJyPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25kcm9wLXRleHQtaHRt
bC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9ldmVudHMvb25k
cm9wLXRleHQtaHRtbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzgxKQorKysgTGF5b3V0VGVz
dHMvZmFzdC9ldmVudHMvb25kcm9wLXRleHQtaHRtbC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29w
eSkKQEAgLTEsNCArMSw0IEBACiBDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjE6IHRleHQvcGxhaW46
IFRoaXMgdGVzdCB2ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGRy
YWcgb2JqZWN0IGR1cmluZyBhbiBvbmRyb3AgZXZlbnQuIAotQ09OU09MRSBNRVNTQUdFOiBsaW5l
IDIzOiB0ZXh0L2h0bWw6IDxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29s
b3I6IHJnYigwLCAwLCAwKTsgIGZvbnQtc3R5bGU6IG5vcm1hbDsgZm9udC12YXJpYW50OiBub3Jt
YWw7IGZvbnQtd2VpZ2h0OiBub3JtYWw7IGxldHRlci1zcGFjaW5nOiBub3JtYWw7IGxpbmUtaGVp
Z2h0OiBub3JtYWw7IG9ycGhhbnM6IDI7IHRleHQtYWxpZ246IC13ZWJraXQtYXV0bzsgdGV4dC1p
bmRlbnQ6IDBweDsgdGV4dC10cmFuc2Zvcm06IG5vbmU7IHdoaXRlLXNwYWNlOiBub3JtYWw7IHdp
ZG93czogMjsgd29yZC1zcGFjaW5nOiAwcHg7IC13ZWJraXQtdGV4dC1kZWNvcmF0aW9ucy1pbi1l
ZmZlY3Q6IG5vbmU7IC13ZWJraXQtdGV4dC1zaXplLWFkanVzdDogYXV0bzsgLXdlYmtpdC10ZXh0
LXN0cm9rZS13aWR0aDogMHB4OyBmb250LXNpemU6IG1lZGl1bTsgIj5UaGlzIHRlc3QgdmVyaWZp
ZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBkcmFnIG9iamVjdCBkdXJpbmcg
YW4gb25kcm9wIGV2ZW50LjxzcGFuIGNsYXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9z
cGFuPjwvc3Bhbj4KK0NPTlNPTEUgTUVTU0FHRTogbGluZSAyMzogdGV4dC9odG1sOiA8c3BhbiBj
bGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7ICBmb250
LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFs
OyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyBvcnBoYW5zOiAy
OyB0ZXh0LWFsaWduOiAtd2Via2l0LWF1dG87IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNm
b3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzog
MHB4OyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1dG87IC13ZWJraXQtdGV4dC1zdHJva2Ut
d2lkdGg6IDBweDsgZm9udC1zaXplOiBtZWRpdW07IGRpc3BsYXk6IGlubGluZSAhaW1wb3J0YW50
OyBmbG9hdDogbm9uZTsgIj5UaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQv
aHRtbCBmcm9tIHRoZSBkcmFnIG9iamVjdCBkdXJpbmcgYW4gb25kcm9wIGV2ZW50LjxzcGFuIGNs
YXNzPSJBcHBsZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFuPjwvc3Bhbj4KIFRoaXMgdGVzdCB2
ZXJpZmllcyB0aGF0IHdlIGNhbiBnZXQgdGV4dC9odG1sIGZyb20gdGhlIGRyYWcgb2JqZWN0IGR1
cmluZyBhbiBvbmRyb3AgZXZlbnQuIFRoaXMgdGVzdCByZXF1aXJlcyBEUlQuCiBQQVNTCkluZGV4
OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJl
LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3ODEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVk
LnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSwxMiArMCwwIEBACi1UaGlzIHRlc3RzIGEgYnVnIHdo
ZW4gY29weWluZyBIVE1MIG1hcmt1cCBpbnNpZGUgPHByZT4gdGFncy4gV2hlbiBwYXN0ZWQsIHRo
aXMgY29udGVudCB3b3VsZCBhcHBlYXIgYXMgdGhlIHJlbmRlcmVkIGZvcm0gb2YgdGhhdCBtYXJr
dXAuCi1Zb3Ugc2hvdWxkIHNlZSBtYXJrdXAgaW4gdGhlIGVkaXRhYmxlIHJlZ2lvbiBiZWxvdy4g
U2VlIDxyZGFyOi8vNTAyNzg1Nz4uCi18IDxwcmU+Ci18ICAgY29udGVudGVkaXRhYmxlPSJ0cnVl
IgotfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3Bh
biIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTogJ3RpbWVzIG5ldyByb21hbic7IHdoaXRlLXNw
YWNlOiBub3JtYWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1
ZSIKLXwgICAgICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxi
cj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5b3V0VGVzdHMvcGxh
dGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVj
dGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4v
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5
Mjc4MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTAg
KzAsMCBAQAotVGVzdHM6IAotQ29weWluZyBhbmQgcGFzdGluZyBjb250ZW50IGluc2lkZSBvZiBh
IFBSRSB0YWcuIFRoaXMgdGVzdCB3YXMgY3JlYXRlZCBhZnRlciBmaXhpbmcgMzkxODA1Ni4KLUV4
cGVjdGVkIFJlc3VsdHM6IAotVGhlIFBSRSB0YWcgYW5kIHRoZSBmb3JtYXR0aW5nIG9mIHRoZSB0
ZXh0IGluc2lkZSBvZiB0aGUgUFJFIHNob3VsZCBiZSBtYWludGFpbmVkLiBTaG91bGQgc2VlIHRo
aXMgY29udGVudCBpbiB0aGUgcmVkIGJveCBiZWxvdzoKLWZvbwotYmFyCi1mb28KLWJhcgotZXhl
Y0N1dENvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48YnI+PC9w
cmU+IDwvZGl2PgotZXhlY1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRp
bmciPiA8cHJlPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9udC1mYW1p
bHk6ICd0aW1lcyBuZXcgcm9tYW4nOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiPjxwcmU+Zm9vIGJh
cjwvcHJlPjwvc3Bhbj48L3ByZT4gPC9kaXY+CkluZGV4OiBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9j
aHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzgxKQor
KysgTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICswLDAgQEAK
LVRoaXMgaXMgYSBsYXlvdXQgdGVzdCBmb3IgcmRhcjovL3Byb2JsZW0vNDM3MDIwOSAiUmVwcm9k
dWNpYmxlIGNyYXNoIHdoZW4gcGFzdGluZyBvdmVyIHdoaXRlc3BhY2U6cHJlIHRleHQiLiBUaGUg
dGV4dCBiZWxvdyBpcyBzZWxlY3RlZCwgY29waWVkLCBhbmQgcGFzdGVkIG92ZXIgaXRzZWxmLiBZ
b3UnbGwgc2VlIGZvby9uYmFyIGlmIHN1Y2Nlc3NmdWwuCi1mb28KLWJhcgotZXhlY0NvcHlDb21t
YW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+Zm9vIGJhcjwvcHJlPiA8
L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4g
PHByZT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiAn
dGltZXMgbmV3IHJvbWFuJzsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIj48cHJlPmZvbyBiYXI8L3By
ZT48L3NwYW4+PC9wcmU+IDwvZGl2PgpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbWFj
L2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9w
YXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzgxKQorKysgTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQtbWFjL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXBy
ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyB0ZXN0
cyBhIGJ1ZyB3aGVuIGNvcHlpbmcgSFRNTCBtYXJrdXAgaW5zaWRlIDxwcmU+IHRhZ3MuIFdoZW4g
cGFzdGVkLCB0aGlzIGNvbnRlbnQgd291bGQgYXBwZWFyIGFzIHRoZSByZW5kZXJlZCBmb3JtIG9m
IHRoYXQgbWFya3VwLgotWW91IHNob3VsZCBzZWUgbWFya3VwIGluIHRoZSBlZGl0YWJsZSByZWdp
b24gYmVsb3cuIFNlZSA8cmRhcjovLzUwMjc4NTc+LgotfCA8cHJlPgotfCAgIGNvbnRlbnRlZGl0
YWJsZT0idHJ1ZSIKLXwgICBpZD0icHJlIgotfCAgIDxzcGFuPgotfCAgICAgY2xhc3M9IkFwcGxl
LXN0eWxlLXNwYW4iCi18ICAgICBzdHlsZT0iZm9udC1mYW1pbHk6ICdUaW1lcyBOZXcgUm9tYW4n
OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiCi18ICAgICA8cHJlPgotfCAgICAgICBjb250ZW50ZWRp
dGFibGU9InRydWUiCi18ICAgICAgIGlkPSJwcmUiCi18ICAgICAgICI8aW5wdXQgdHlwZT0nYnV0
dG9uJz5mb288YnI+YmFyPGI+YmF6PC9iPjwjc2VsZWN0aW9uLWNhcmV0PiIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>103568</attachid>
            <date>2011-08-10 18:46:58 -0700</date>
            <delta_ts>2011-08-10 19:04:57 -0700</delta_ts>
            <desc>Renamed enum values</desc>
            <filename>bug-34564-20110810184657.patch</filename>
            <type>text/plain</type>
            <size>41098</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDkyNzk5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMDgtMTAgIFJ5b3N1a2Ug
Tml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQ29weWluZyBjYW4gcmVzdWx0IGlu
IHNwYW4gYXJvdW5kIGJsb2NrIGVsZW1lbnRzIG9uIHRoZSBjbGlwYm9hcmQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM0NTY0CisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ29tcGxldGVseSBvdmVyaGF1bGVk
IHRoZSB3YXkgV2ViS2l0IHByZXNlcnZlcyBzdHlsZSBpbiBjb3B5IGFuZCBwYXN0ZS4gSW5zdGVh
ZCBvZiB3cmFwcGluZyB0aGUgZW50aXJlCisgICAgICAgIHNlcmlhbGl6ZWQgY29udGVudHMgYnkg
YSBBcHBsZSBzdHlsZSBzcGFuLCBXZWJLaXQgbm93IGFkZHMgaW5saW5lIHN0eWxlIHRvIHRoZSB0
b3AgbGV2ZWwgZWxlbWVudHMsCisgICAgICAgIHdyYXAgdG9wIGxldmVsIHRleHQgbm9kZXMgYnkg
YSBzdHlsZSBzcGFuLgorCisgICAgICAgICogZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0aW9uUHJvcGVy
dGllcyk6IFJlbW92ZSB0ZXh0LWRlY29yYXRpb24gcHJvcGVydHkgd2hlbiB0aGUgdmFsdWUKKyAg
ICAgICAgb2YgLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdCBpcyBub25lLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpyZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRl
eHQpOiBTaW5jZSBkaXNwbGF5OiBpbmxpbmUgYW5kIGZsb2F0OiBub25lIGFyZSBub3cKKyAgICAg
ICAgYWRkZWQgb24gY29weSwgcmVtb3ZlIHRoZXNlIHByb3BlcnRpZXMgb24gcGFzdGUuCisgICAg
ICAgIChXZWJDb3JlOjpFZGl0aW5nU3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZh
dWx0U3R5bGUpOiBUYWtlcyBFbGVtZW50KiBpbnN0ZWFkIG9mIFN0eWxlZEVsZW1lbnQqLgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdGluZ1N0eWxlOjpmb3JjZUlubGluZSk6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6Z2V0UHJvcGVydGllc05vdEluKTogUmVtb3ZlIHByb3BlcnRpZXMgb25seSB3
aGVuIHRoZSBiYXNlIHN0eWxlIGhhcyB0aGVtLgorICAgICAgICAqIGVkaXRpbmcvRWRpdGluZ1N0
eWxlLmg6CisgICAgICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNob3VsZEFwcGx5V3JhcHBpbmdTdHlsZSk6IEFkZGVk
LgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OlN0eWxlZE1hcmt1
cEFjY3VtdWxhdG9yKTogVGFrZXMgaGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZC4KKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFwV2l0aFN0eWxlTm9kZSk6IENh
bGxzIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcgYW5kIHN0eWxlTm9kZUNsb3NlVGFnLgorICAgICAg
ICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFN0eWxlTm9kZU9wZW5U
YWcpOiBFeHRyYWN0ZWQgZnJvbSB3cmFwV2l0aFN0eWxlTm9kZS4KKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzdHlsZU5vZGVDbG9zZVRhZyk6IERpdHRvLgorICAg
ICAgICAoV2ViQ29yZTo6U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OmFwcGVuZFRleHQpOiBXcmFw
cyB0ZXh0IG5vZGUgd2l0aCBhIHN0eWxlIHNwYW4gaWYgbmVlZGVkLgorICAgICAgICBTZXQgZGlz
cGxheTogaW5saW5lIGFuZCBmbG9hdDogbm9uZSBzbyB0aGF0IGl0IHdvbid0IGJlIGNvbnZlcnRl
ZCB0byBhIGJsb2NrIG9uIHBhc3RlIHNpZGUuCisgICAgICAgIChXZWJDb3JlOjpTdHlsZWRNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbWVudCk6IEFkZCB3cmFwcGluZyBzdHlsZSBpZiBhcHBy
b3ByaWF0ZTsgUmVtb3ZlIGFueSBwcm9wZXJ0aWVzCisgICAgICAgIHRoYXQgYXJlIG92ZXJyaWRk
ZW4gYnkgZGVmYXVsdCBzdHlsZSBhbmQgYW55IHN0eWxlIHRoYXQgbWF5IGNvbmZsaWN0IHdpdGgg
dGhlIGNvbXB1dGVkIHN0eWxlIG9mIG5vZGUgdG8KKyAgICAgICAgYXZvaWQgbW9kaWZ5aW5nIHRo
ZSBhcHBlYXJhbmNlIG9mIHRoZSBzZXJpYWxpemVkIG5vZGVzLgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZU5vZGVzKTogQ29tcHV0ZSB3cmFwcGlu
ZyBzdHlsZTsgY29waWVzIG9mIHRoaXMgc3R5bGUgYXJlCisgICAgICAgIG1vZGlmaWVkIGFzIG5l
ZWRlZCB3aGVuIHNlcmlhbGl6aW5nIHRvcC1sZXZlbCBlbGVtZW50cyBvciB0ZXh0IG5vZGVzLiBX
ZSBjYWxsIHRyYXZlcnNlTm9kZXNGb3JTZXJpYWxpemF0aW9uCisgICAgICAgIHdpdGggc2hvdWxk
RW1pdCBzZXQgZmFsc2UgZmlyc3QgdG8gY29tcHV0ZSB0aGUgaGlnaGVzdCBub2RlIHRvIGJlIHNl
cmlhbGl6ZWQuIFRoZSBzZWNvbmQgY2FsbCB0bworICAgICAgICB0cmF2ZXJzZU5vZGVzRm9yU2Vy
aWFsaXphdGlvbiB3aWxsIGFjdHVhbGx5IHNlcmlhbGl6ZSB0aGUgbm9kZXMuCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6
YXRpb24pOiBFeHRyYWN0ZWQgZnJvbSBzZXJpYWxpemVOb2Rlcy4KKyAgICAgICAgT3V0cHV0cyBz
dHJpbmcgb25seSBpZiBzaG91bGRFbWl0IGlzIHRydWUuCisgICAgICAgIChXZWJDb3JlOjpjcmVh
dGVNYXJrdXApOiBObyBsb25nZXIgYWRkcyB3cmFwcGluZyBzcGFucy4KKwogMjAxMS0wOC0xMCAg
QWJoaXNoZWsgQXJ5YSAgPGluZmVybm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIENoZWNrIHRo
YXQgd2UgZG8gbm90IG5lZWQgbGF5b3V0IGJlZm9yZSB0cnlpbmcgdG8gZGlydHkKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5jcHAJKHJldmlzaW9uIDkyNzgxKQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC01NTcsNyArNTU3LDEwIEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpjb2xsYXBzZVRleHREZWNvcmF0
aW8KICAgICBpZiAoIXRleHREZWNvcmF0aW9uc0luRWZmZWN0KQogICAgICAgICByZXR1cm47CiAK
LSAgICBtX211dGFibGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlv
biwgdGV4dERlY29yYXRpb25zSW5FZmZlY3QtPmNzc1RleHQoKSwgbV9tdXRhYmxlU3R5bGUtPmdl
dFByb3BlcnR5UHJpb3JpdHkoQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikpOworICAgIGlmICh0
ZXh0RGVjb3JhdGlvbnNJbkVmZmVjdC0+aXNWYWx1ZUxpc3QoKSkKKyAgICAgICAgbV9tdXRhYmxl
U3R5bGUtPnNldFByb3BlcnR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24sIHRleHREZWNvcmF0
aW9uc0luRWZmZWN0LT5jc3NUZXh0KCksIG1fbXV0YWJsZVN0eWxlLT5nZXRQcm9wZXJ0eVByaW9y
aXR5KENTU1Byb3BlcnR5VGV4dERlY29yYXRpb24pKTsKKyAgICBlbHNlCisgICAgICAgIG1fbXV0
YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0eShDU1NQcm9wZXJ0eVRleHREZWNvcmF0aW9uKTsKICAg
ICBtX211dGFibGVTdHlsZS0+cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVj
b3JhdGlvbnNJbkVmZmVjdCk7CiB9CiAKQEAgLTk1Nyw5ICs5NjAsMTggQEAgdm9pZCBFZGl0aW5n
U3R5bGU6OnJlbW92ZVN0eWxlRnJvbVJ1bGVzQQogICAgICAgICBjb21wdXRlZFN0eWxlLT5yZW1v
dmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKGVsZW1lbnQpOwogICAgICAgICBtX211
dGFibGVTdHlsZSA9IGdldFByb3BlcnRpZXNOb3RJbihtX211dGFibGVTdHlsZS5nZXQoKSwgY29t
cHV0ZWRTdHlsZS0+bV9tdXRhYmxlU3R5bGUuZ2V0KCkpOwogICAgIH0KKworICAgIC8vIDMuIElm
IHRoaXMgZWxlbWVudCBpcyBhIHNwYW4gYW5kIGhhcyBkaXNwbGF5OiBpbmxpbmUgb3IgZmxvYXQ6
IG5vbmUsIHJlbW92ZSB0aGVtIHVubGVzcyB0aGV5IGFyZSBvdmVycmlkZW4gYnkgcnVsZXMuCisg
ICAgLy8gVGhlc2UgcnVsZXMgYXJlIGFkZGVkIGJ5IHNlcmlhbGl6YXRpb24gY29kZSB0byB3cmFw
IHRleHQgbm9kZXMuCisgICAgaWYgKGlzU3R5bGVTcGFuKGVsZW1lbnQpKSB7CisgICAgICAgIGlm
ICghc3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5
RGlzcGxheSkgJiYgZ2V0SWRlbnRpZmllclZhbHVlKG1fbXV0YWJsZVN0eWxlLmdldCgpLCBDU1NQ
cm9wZXJ0eURpc3BsYXkpID09IENTU1ZhbHVlSW5saW5lKQorICAgICAgICAgICAgbV9tdXRhYmxl
U3R5bGUtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5RGlzcGxheSk7CisgICAgICAgIGlmICgh
c3R5bGVGcm9tTWF0Y2hlZFJ1bGVzLT5nZXRQcm9wZXJ0eUNTU1ZhbHVlKENTU1Byb3BlcnR5Rmxv
YXQpICYmIGdldElkZW50aWZpZXJWYWx1ZShtX211dGFibGVTdHlsZS5nZXQoKSwgQ1NTUHJvcGVy
dHlGbG9hdCkgPT0gQ1NTVmFsdWVOb25lKQorICAgICAgICAgICAgbV9tdXRhYmxlU3R5bGUtPnJl
bW92ZVByb3BlcnR5KENTU1Byb3BlcnR5RmxvYXQpOworICAgIH0KIH0KIAotdm9pZCBFZGl0aW5n
U3R5bGU6OnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoU3R5bGVkRWxlbWVu
dCogZWxlbWVudCkKK3ZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50
RGVmYXVsdFN0eWxlKEVsZW1lbnQqIGVsZW1lbnQpCiB7CiAgICAgaWYgKCFtX211dGFibGVTdHls
ZSB8fCAhbV9tdXRhYmxlU3R5bGUtPmxlbmd0aCgpKQogICAgICAgICByZXR1cm47CkBAIC05NzQs
NiArOTg2LDE0IEBAIHZvaWQgRWRpdGluZ1N0eWxlOjpyZW1vdmVQcm9wZXJ0aWVzSW5FbGUKIAog
ICAgIG1fbXV0YWJsZVN0eWxlLT5yZW1vdmVQcm9wZXJ0aWVzSW5TZXQocHJvcGVydGllc1RvUmVt
b3ZlLmRhdGEoKSwgcHJvcGVydGllc1RvUmVtb3ZlLnNpemUoKSk7CiB9CisKK3ZvaWQgRWRpdGlu
Z1N0eWxlOjpmb3JjZUlubGluZSgpCit7CisgICAgaWYgKCFtX211dGFibGVTdHlsZSkKKyAgICAg
ICAgbV9tdXRhYmxlU3R5bGUgPSBDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbjo6Y3JlYXRlKCk7
CisgICAgY29uc3QgYm9vbCBwcm9wZXJ0eUlzSW1wb3J0YW50ID0gdHJ1ZTsKKyAgICBtX211dGFi
bGVTdHlsZS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwg
cHJvcGVydHlJc0ltcG9ydGFudCk7Cit9CiAgICAgCiAKIHN0YXRpYyB2b2lkIHJlY29uY2lsZVRl
eHREZWNvcmF0aW9uUHJvcGVydGllcyhDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbiogc3R5bGUp
CkBAIC0xMTc4LDEzICsxMTk4LDEzIEBAIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlv
bj4gZ2V0UHIKICAgICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVy
dHlUZXh0RGVjb3JhdGlvbiwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsKICAg
ICBkaWZmVGV4dERlY29yYXRpb25zKHJlc3VsdC5nZXQoKSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RGVjb3JhdGlvbnNJbkVmZmVjdCwgYmFzZVRleHREZWNvcmF0aW9uc0luRWZmZWN0LmdldCgpKTsK
IAotICAgIGlmIChmb250V2VpZ2h0SXNCb2xkKHJlc3VsdC5nZXQoKSkgPT0gZm9udFdlaWdodElz
Qm9sZChiYXNlU3R5bGUpKQorICAgIGlmIChiYXNlU3R5bGUtPmdldFByb3BlcnR5Q1NTVmFsdWUo
Q1NTUHJvcGVydHlGb250U2l6ZSkgJiYgZm9udFdlaWdodElzQm9sZChyZXN1bHQuZ2V0KCkpID09
IGZvbnRXZWlnaHRJc0JvbGQoYmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9w
ZXJ0eShDU1NQcm9wZXJ0eUZvbnRXZWlnaHQpOwogCi0gICAgaWYgKGdldFJHQkFGb250Q29sb3Io
cmVzdWx0LmdldCgpKSA9PSBnZXRSR0JBRm9udENvbG9yKGJhc2VTdHlsZSkpCisgICAgaWYgKGJh
c2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9wZXJ0eUNvbG9yKSAmJiBnZXRSR0JB
Rm9udENvbG9yKHJlc3VsdC5nZXQoKSkgPT0gZ2V0UkdCQUZvbnRDb2xvcihiYXNlU3R5bGUpKQog
ICAgICAgICByZXN1bHQtPnJlbW92ZVByb3BlcnR5KENTU1Byb3BlcnR5Q29sb3IpOwogCi0gICAg
aWYgKGdldFRleHRBbGlnbm1lbnQocmVzdWx0LmdldCgpKSA9PSBnZXRUZXh0QWxpZ25tZW50KGJh
c2VTdHlsZSkpCisgICAgaWYgKGJhc2VTdHlsZS0+Z2V0UHJvcGVydHlDU1NWYWx1ZShDU1NQcm9w
ZXJ0eVRleHRBbGlnbikgJiYgZ2V0VGV4dEFsaWdubWVudChyZXN1bHQuZ2V0KCkpID09IGdldFRl
eHRBbGlnbm1lbnQoYmFzZVN0eWxlKSkKICAgICAgICAgcmVzdWx0LT5yZW1vdmVQcm9wZXJ0eShD
U1NQcm9wZXJ0eVRleHRBbGlnbik7CiAKICAgICByZXR1cm4gcmVzdWx0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0aW5nU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRpbmdTdHlsZS5oCShyZXZpc2lvbiA5Mjc4MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvRWRpdGluZ1N0eWxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDYgKzQ3
LDcgQEAgY2xhc3MgQ1NTTXV0YWJsZVN0eWxlRGVjbGFyYXRpb247CiBjbGFzcyBDU1NQcmltaXRp
dmVWYWx1ZTsKIGNsYXNzIENTU1ZhbHVlOwogY2xhc3MgRG9jdW1lbnQ7CitjbGFzcyBFbGVtZW50
OwogY2xhc3MgSFRNTEVsZW1lbnQ7CiBjbGFzcyBOb2RlOwogY2xhc3MgUG9zaXRpb247CkBAIC0x
MjYsNiArMTI3LDggQEAgcHVibGljOgogICAgIHZvaWQgbWVyZ2VTdHlsZUZyb21SdWxlcyhTdHls
ZWRFbGVtZW50Kik7CiAgICAgdm9pZCBtZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2VyaWFsaXphdGlv
bihTdHlsZWRFbGVtZW50Kik7CiAgICAgdm9pZCByZW1vdmVTdHlsZUZyb21SdWxlc0FuZENvbnRl
eHQoU3R5bGVkRWxlbWVudCosIE5vZGUqIGNvbnRleHQpOworICAgIHZvaWQgcmVtb3ZlUHJvcGVy
dGllc0luRWxlbWVudERlZmF1bHRTdHlsZShFbGVtZW50Kik7CisgICAgdm9pZCBmb3JjZUlubGlu
ZSgpOwogCiAgICAgZmxvYXQgZm9udFNpemVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1fZm9udFNp
emVEZWx0YTsgfQogICAgIGJvb2wgaGFzRm9udFNpemVEZWx0YSgpIGNvbnN0IHsgcmV0dXJuIG1f
Zm9udFNpemVEZWx0YSAhPSBOb0ZvbnREZWx0YTsgfQpAQCAtMTQ0LDcgKzE0Nyw2IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBleHRyYWN0Rm9udFNpemVEZWx0YSgpOwogICAgIGJvb2wgY29uZmxpY3Rz
V2l0aElubGluZVN0eWxlT2ZFbGVtZW50KFN0eWxlZEVsZW1lbnQqLCBFZGl0aW5nU3R5bGUqIGV4
dHJhY3RlZFN0eWxlLCBWZWN0b3I8Q1NTUHJvcGVydHlJRD4qIGNvbmZsaWN0aW5nUHJvcGVydGll
cykgY29uc3Q7CiAgICAgdm9pZCBtZXJnZVN0eWxlKENTU011dGFibGVTdHlsZURlY2xhcmF0aW9u
Kik7Ci0gICAgdm9pZCByZW1vdmVQcm9wZXJ0aWVzSW5FbGVtZW50RGVmYXVsdFN0eWxlKFN0eWxl
ZEVsZW1lbnQqKTsKIAogICAgIFJlZlB0cjxDU1NNdXRhYmxlU3R5bGVEZWNsYXJhdGlvbj4gbV9t
dXRhYmxlU3R5bGU7CiAgICAgYm9vbCBtX3Nob3VsZFVzZUZpeGVkRGVmYXVsdEZvbnRTaXplOwpJ
bmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAkocmV2aXNpb24gOTI3ODEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCwxMiAr
MTIwLDcgQEAgY2xhc3MgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IgOiBwdWJsaWMgTQogcHVibGlj
OgogICAgIGVudW0gUmFuZ2VGdWxseVNlbGVjdHNOb2RlIHsgRG9lc0Z1bGx5U2VsZWN0Tm9kZSwg
RG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSB9OwogCi0gICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3Io
VmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNvbHV0ZVVSTHMgc2hvdWxkUmVzb2x2ZVVSTHMsIEVB
bm5vdGF0ZUZvckludGVyY2hhbmdlIHNob3VsZEFubm90YXRlLCBjb25zdCBSYW5nZSogcmFuZ2Up
Ci0gICAgOiBNYXJrdXBBY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHJhbmdl
KQotICAgICwgbV9zaG91bGRBbm5vdGF0ZShzaG91bGRBbm5vdGF0ZSkKLSAgICB7Ci0gICAgfQot
CisgICAgU3R5bGVkTWFya3VwQWNjdW11bGF0b3IoVmVjdG9yPE5vZGUqPiogbm9kZXMsIEVBYnNv
bHV0ZVVSTHMsIEVBbm5vdGF0ZUZvckludGVyY2hhbmdlLCBjb25zdCBSYW5nZSosIE5vZGUqIGhp
Z2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQgPSAwKTsKICAgICBOb2RlKiBzZXJpYWxpemVOb2RlcyhO
b2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRT
dHJpbmcoY29uc3QgU3RyaW5nJiBzKSB7IHJldHVybiBNYXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5k
U3RyaW5nKHMpOyB9CiAgICAgdm9pZCB3cmFwV2l0aE5vZGUoTm9kZSosIGJvb2wgY29udmVydEJs
b2Nrc1RvSW5saW5lcyA9IGZhbHNlLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgPSBEb2VzRnVsbHlT
ZWxlY3ROb2RlKTsKQEAgLTEzMywxOCArMTI4LDM4IEBAIHB1YmxpYzoKICAgICBTdHJpbmcgdGFr
ZVJlc3VsdHMoKTsKIAogcHJpdmF0ZToKKyAgICB2b2lkIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWco
VmVjdG9yPFVDaGFyPiYsIENTU1N0eWxlRGVjbGFyYXRpb24qLCBEb2N1bWVudCosIGJvb2wgaXNC
bG9jayA9IGZhbHNlKTsKKyAgICBjb25zdCBTdHJpbmcgc3R5bGVOb2RlQ2xvc2VUYWcoYm9vbCBp
c0Jsb2NrID0gZmFsc2UpOwogICAgIHZpcnR1YWwgdm9pZCBhcHBlbmRUZXh0KFZlY3RvcjxVQ2hh
cj4mIG91dCwgVGV4dCopOwogICAgIFN0cmluZyByZW5kZXJlZFRleHQoY29uc3QgTm9kZSosIGNv
bnN0IFJhbmdlKik7CiAgICAgU3RyaW5nIHN0cmluZ1ZhbHVlRm9yUmFuZ2UoY29uc3QgTm9kZSos
IGNvbnN0IFJhbmdlKik7CiAgICAgdm9pZCBhcHBlbmRFbGVtZW50KFZlY3RvcjxVQ2hhcj4mIG91
dCwgRWxlbWVudCogZWxlbWVudCwgYm9vbCBhZGREaXNwbGF5SW5saW5lLCBSYW5nZUZ1bGx5U2Vs
ZWN0c05vZGUpOwogICAgIHZvaWQgYXBwZW5kRWxlbWVudChWZWN0b3I8VUNoYXI+JiBvdXQsIEVs
ZW1lbnQqIGVsZW1lbnQsIE5hbWVzcGFjZXMqKSB7IGFwcGVuZEVsZW1lbnQob3V0LCBlbGVtZW50
LCBmYWxzZSwgRG9lc0Z1bGx5U2VsZWN0Tm9kZSk7IH0KIAorICAgIGVudW0gTm9kZVRyYXZlcnNh
bE1vZGUgeyBFbWl0U3RyaW5nLCBEb05vdEVtaXRTdHJpbmcgfTsKKyAgICBOb2RlKiB0cmF2ZXJz
ZU5vZGVzRm9yU2VyaWFsaXphdGlvbihOb2RlKiBzdGFydE5vZGUsIE5vZGUqIHBhc3RFbmQsIE5v
ZGVUcmF2ZXJzYWxNb2RlKTsKKwogICAgIGJvb2wgc2hvdWxkQW5ub3RhdGUoKSB7IHJldHVybiBt
X3Nob3VsZEFubm90YXRlID09IEFubm90YXRlRm9ySW50ZXJjaGFuZ2U7IH0KKyAgICBib29sIHNo
b3VsZEFwcGx5V3JhcHBpbmdTdHlsZShOb2RlKiBub2RlKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCAmJiBtX2hpZ2hlc3ROb2RlVG9CZVNl
cmlhbGl6ZWQtPnBhcmVudE5vZGUoKSA9PSBub2RlLT5wYXJlbnROb2RlKCkKKyAgICAgICAgICAg
ICYmIG1fd3JhcHBpbmdTdHlsZSAmJiBtX3dyYXBwaW5nU3R5bGUtPnN0eWxlKCk7CisgICAgfQog
CiAgICAgVmVjdG9yPFN0cmluZz4gbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cDsKICAgICBjb25z
dCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBtX3Nob3VsZEFubm90YXRlOworICAgIE5vZGUqIG1f
aGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZDsKKyAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBtX3dy
YXBwaW5nU3R5bGU7CiB9OwogCitpbmxpbmUgU3R5bGVkTWFya3VwQWNjdW11bGF0b3I6OlN0eWxl
ZE1hcmt1cEFjY3VtdWxhdG9yKFZlY3RvcjxOb2RlKj4qIG5vZGVzLCBFQWJzb2x1dGVVUkxzIHNo
b3VsZFJlc29sdmVVUkxzLCBFQW5ub3RhdGVGb3JJbnRlcmNoYW5nZSBzaG91bGRBbm5vdGF0ZSwK
KyAgICBjb25zdCBSYW5nZSogcmFuZ2UsIE5vZGUqIGhpZ2hlc3ROb2RlVG9CZVNlcmlhbGl6ZWQp
CisgICAgOiBNYXJrdXBBY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2ZVVSTHMsIHJhbmdl
KQorICAgICwgbV9zaG91bGRBbm5vdGF0ZShzaG91bGRBbm5vdGF0ZSkKKyAgICAsIG1faGlnaGVz
dE5vZGVUb0JlU2VyaWFsaXplZChoaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkKQoreworfQorCiB2
b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFwV2l0aE5vZGUoTm9kZSogbm9kZSwgYm9v
bCBjb252ZXJ0QmxvY2tzVG9JbmxpbmVzLCBSYW5nZUZ1bGx5U2VsZWN0c05vZGUgcmFuZ2VGdWxs
eVNlbGVjdHNOb2RlKQogewogICAgIFZlY3RvcjxVQ2hhcj4gbWFya3VwOwpAQCAtMTYwLDIwICsx
NzUsMzAgQEAgdm9pZCBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6d3JhcFdpdGhObwogCiB2b2lk
IFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp3cmFwV2l0aFN0eWxlTm9kZShDU1NTdHlsZURlY2xh
cmF0aW9uKiBzdHlsZSwgRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGlzQmxvY2spCiB7CisgICAg
VmVjdG9yPFVDaGFyPiBvcGVuVGFnOworICAgIGFwcGVuZFN0eWxlTm9kZU9wZW5UYWcob3BlblRh
Zywgc3R5bGUsIGRvY3VtZW50LCBpc0Jsb2NrKTsKKyAgICBtX3JldmVyc2VkUHJlY2VkaW5nTWFy
a3VwLmFwcGVuZChTdHJpbmc6OmFkb3B0KG9wZW5UYWcpKTsKKyAgICBhcHBlbmRTdHJpbmcoc3R5
bGVOb2RlQ2xvc2VUYWcoaXNCbG9jaykpOworfQorCit2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxh
dG9yOjphcHBlbmRTdHlsZU5vZGVPcGVuVGFnKFZlY3RvcjxVQ2hhcj4mIG91dCwgQ1NTU3R5bGVE
ZWNsYXJhdGlvbiogc3R5bGUsIERvY3VtZW50KiBkb2N1bWVudCwgYm9vbCBpc0Jsb2NrKQorewog
ICAgIC8vIEFsbCB0ZXh0LWRlY29yYXRpb24tcmVsYXRlZCBlbGVtZW50cyBzaG91bGQgaGF2ZSBi
ZWVuIHRyZWF0ZWQgYXMgc3BlY2lhbCBhbmNlc3RvcnMKICAgICAvLyBJZiB3ZSBldmVyIGhpdCB0
aGlzIEFTU0VSVCwgd2Ugc2hvdWxkIGV4cG9ydCBTdHlsZUNoYW5nZSBpbiBBcHBseVN0eWxlQ29t
bWFuZCBhbmQgdXNlIGl0IGhlcmUKICAgICBBU1NFUlQocHJvcGVydHlNaXNzaW5nT3JFcXVhbFRv
Tm9uZShzdHlsZSwgQ1NTUHJvcGVydHlUZXh0RGVjb3JhdGlvbikgJiYgcHJvcGVydHlNaXNzaW5n
T3JFcXVhbFRvTm9uZShzdHlsZSwgQ1NTUHJvcGVydHlXZWJraXRUZXh0RGVjb3JhdGlvbnNJbkVm
ZmVjdCkpOwogICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBkaXZTdHlsZSwg
KCI8ZGl2IHN0eWxlPVwiIikpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5n
LCBkaXZDbG9zZSwgKCI8L2Rpdj4iKSk7CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChjb25zdCBT
dHJpbmcsIHN0eWxlU3Bhbk9wZW4sICgiPHNwYW4gY2xhc3M9XCIiIEFwcGxlU3R5bGVTcGFuQ2xh
c3MgIlwiIHN0eWxlPVwiIikpOworICAgIGFwcGVuZChvdXQsIGlzQmxvY2sgPyBkaXZTdHlsZSA6
IHN0eWxlU3Bhbk9wZW4pOworICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgc3R5bGUtPmNz
c1RleHQoKSwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpOworICAgIG91dC5hcHBlbmQoJ1wi
Jyk7CisgICAgb3V0LmFwcGVuZCgnPicpOworfQorCitjb25zdCBTdHJpbmcgU3R5bGVkTWFya3Vw
QWNjdW11bGF0b3I6OnN0eWxlTm9kZUNsb3NlVGFnKGJvb2wgaXNCbG9jaykKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKGNvbnN0IFN0cmluZywgZGl2Q2xvc2UsICgiPC9kaXY+IikpOwogICAg
IERFRklORV9TVEFUSUNfTE9DQUwoY29uc3QgU3RyaW5nLCBzdHlsZVNwYW5DbG9zZSwgKCI8L3Nw
YW4+IikpOwotICAgIFZlY3RvcjxVQ2hhcj4gb3BlblRhZzsKLSAgICBhcHBlbmQob3BlblRhZywg
aXNCbG9jayA/IGRpdlN0eWxlIDogc3R5bGVTcGFuT3Blbik7Ci0gICAgYXBwZW5kQXR0cmlidXRl
VmFsdWUob3BlblRhZywgc3R5bGUtPmNzc1RleHQoKSwgZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50
KCkpOwotICAgIG9wZW5UYWcuYXBwZW5kKCdcIicpOwotICAgIG9wZW5UYWcuYXBwZW5kKCc+Jyk7
Ci0gICAgbV9yZXZlcnNlZFByZWNlZGluZ01hcmt1cC5hcHBlbmQoU3RyaW5nOjphZG9wdChvcGVu
VGFnKSk7Ci0gICAgYXBwZW5kU3RyaW5nKGlzQmxvY2sgPyBkaXZDbG9zZSA6IHN0eWxlU3BhbkNs
b3NlKTsKKyAgICByZXR1cm4gaXNCbG9jayA/IGRpdkNsb3NlIDogc3R5bGVTcGFuQ2xvc2U7CiB9
CiAKIFN0cmluZyBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dGFrZVJlc3VsdHMoKQpAQCAtMTkx
LDE3ICsyMTYsMzQgQEAgU3RyaW5nIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjp0YWtlUmVzdQog
fQogCiB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRUZXh0KFZlY3RvcjxVQ2hh
cj4mIG91dCwgVGV4dCogdGV4dCkKLXsKLSAgICBpZiAoIXNob3VsZEFubm90YXRlKCkgfHwgKHRl
eHQtPnBhcmVudEVsZW1lbnQoKSAmJiB0ZXh0LT5wYXJlbnRFbGVtZW50KCktPnRhZ1FOYW1lKCkg
PT0gdGV4dGFyZWFUYWcpKSB7Cit7ICAgIAorICAgIGJvb2wgcGFyZW50SXNUZXh0YXJlYSA9IHRl
eHQtPnBhcmVudEVsZW1lbnQoKSAmJiB0ZXh0LT5wYXJlbnRFbGVtZW50KCktPnRhZ1FOYW1lKCkg
PT0gdGV4dGFyZWFUYWc7CisgICAgYm9vbCB3cmFwcGluZ1NwYW4gPSBzaG91bGRBcHBseVdyYXBw
aW5nU3R5bGUodGV4dCkgJiYgIXBhcmVudElzVGV4dGFyZWE7CisgICAgaWYgKHdyYXBwaW5nU3Bh
bikgeworICAgICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiB3cmFwcGluZ1N0eWxlID0gbV93cmFw
cGluZ1N0eWxlLT5jb3B5KCk7CisgICAgICAgIC8vIEZJWE1FOiA8cmRhcjovL3Byb2JsZW0vNTM3
MTUzNj4gU3R5bGUgcnVsZXMgdGhhdCBtYXRjaCBwYXN0ZWQgY29udGVudCBjYW4gY2hhbmdlIGl0
J3MgYXBwZWFyYW5jZQorICAgICAgICAvLyBNYWtlIHN1cmUgc3BhbnMgYXJlIGlubGluZSBzdHls
ZSBpbiBwYXN0ZSBzaWRlIGUuZy4gc3BhbiB7IGRpc3BsYXk6IGJsb2NrIH0uCisgICAgICAgIHdy
YXBwaW5nU3R5bGUtPmZvcmNlSW5saW5lKCk7CisgICAgICAgIC8vIEZJWE1FOiBTaG91bGQgdGhp
cyBiZSBpbmNsdWRlZCBpbiBmb3JjZUlubGluZT8KKyAgICAgICAgd3JhcHBpbmdTdHlsZS0+c3R5
bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCwgQ1NTVmFsdWVOb25lKTsKKworICAg
ICAgICBWZWN0b3I8VUNoYXI+IG9wZW5UYWc7CisgICAgICAgIGFwcGVuZFN0eWxlTm9kZU9wZW5U
YWcob3BlblRhZywgd3JhcHBpbmdTdHlsZS0+c3R5bGUoKSwgdGV4dC0+ZG9jdW1lbnQoKSk7Cisg
ICAgICAgIGFwcGVuZChvdXQsIFN0cmluZzo6YWRvcHQob3BlblRhZykpOworICAgIH0KKworICAg
IGlmICghc2hvdWxkQW5ub3RhdGUoKSB8fCBwYXJlbnRJc1RleHRhcmVhKQogICAgICAgICBNYXJr
dXBBY2N1bXVsYXRvcjo6YXBwZW5kVGV4dChvdXQsIHRleHQpOwotICAgICAgICByZXR1cm47Cisg
ICAgZWxzZSB7CisgICAgICAgIGJvb2wgdXNlUmVuZGVyZWRUZXh0ID0gIWVuY2xvc2luZ05vZGVX
aXRoVGFnKGZpcnN0UG9zaXRpb25Jbk5vZGUodGV4dCksIHNlbGVjdFRhZyk7CisgICAgICAgIFN0
cmluZyBjb250ZW50ID0gdXNlUmVuZGVyZWRUZXh0ID8gcmVuZGVyZWRUZXh0KHRleHQsIG1fcmFu
Z2UpIDogc3RyaW5nVmFsdWVGb3JSYW5nZSh0ZXh0LCBtX3JhbmdlKTsKKyAgICAgICAgVmVjdG9y
PFVDaGFyPiBidWZmZXI7CisgICAgICAgIGFwcGVuZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGll
cyhidWZmZXIsIGNvbnRlbnQuY2hhcmFjdGVycygpLCBjb250ZW50Lmxlbmd0aCgpLCBFbnRpdHlN
YXNrSW5QQ0RBVEEpOworICAgICAgICBhcHBlbmQob3V0LCBjb252ZXJ0SFRNTFRleHRUb0ludGVy
Y2hhbmdlRm9ybWF0KFN0cmluZzo6YWRvcHQoYnVmZmVyKSwgdGV4dCkpOwogICAgIH0KIAotICAg
IGJvb2wgdXNlUmVuZGVyZWRUZXh0ID0gIWVuY2xvc2luZ05vZGVXaXRoVGFnKGZpcnN0UG9zaXRp
b25Jbk5vZGUodGV4dCksIHNlbGVjdFRhZyk7Ci0gICAgU3RyaW5nIGNvbnRlbnQgPSB1c2VSZW5k
ZXJlZFRleHQgPyByZW5kZXJlZFRleHQodGV4dCwgbV9yYW5nZSkgOiBzdHJpbmdWYWx1ZUZvclJh
bmdlKHRleHQsIG1fcmFuZ2UpOwotICAgIFZlY3RvcjxVQ2hhcj4gYnVmZmVyOwotICAgIGFwcGVu
ZENoYXJhY3RlcnNSZXBsYWNpbmdFbnRpdGllcyhidWZmZXIsIGNvbnRlbnQuY2hhcmFjdGVycygp
LCBjb250ZW50Lmxlbmd0aCgpLCBFbnRpdHlNYXNrSW5QQ0RBVEEpOwotICAgIGFwcGVuZChvdXQs
IGNvbnZlcnRIVE1MVGV4dFRvSW50ZXJjaGFuZ2VGb3JtYXQoU3RyaW5nOjphZG9wdChidWZmZXIp
LCB0ZXh0KSk7CisgICAgaWYgKHdyYXBwaW5nU3BhbikKKyAgICAgICAgYXBwZW5kKG91dCwgc3R5
bGVOb2RlQ2xvc2VUYWcoKSk7CiB9CiAgICAgCiBTdHJpbmcgU3R5bGVkTWFya3VwQWNjdW11bGF0
b3I6OnJlbmRlcmVkVGV4dChjb25zdCBOb2RlKiBub2RlLCBjb25zdCBSYW5nZSogcmFuZ2UpCkBA
IC0yNDUsMzAgKzI4Nyw0NiBAQCB2b2lkIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjphcHBlbmRF
bGVtCiAKICAgICBOYW1lZE5vZGVNYXAqIGF0dHJpYnV0ZXMgPSBlbGVtZW50LT5hdHRyaWJ1dGVz
KCk7CiAgICAgdW5zaWduZWQgbGVuZ3RoID0gYXR0cmlidXRlcy0+bGVuZ3RoKCk7CisgICAgYm9v
bCBzaG91bGRBbm5vdGF0ZU9yRm9yY2VJbmxpbmUgPSBlbGVtZW50LT5pc0hUTUxFbGVtZW50KCkg
JiYgKHNob3VsZEFubm90YXRlKCkgfHwgYWRkRGlzcGxheUlubGluZSk7CisgICAgYm9vbCBzaG91
bGRPdmVycmlkZVN0eWxlQXR0ciA9IHNob3VsZEFubm90YXRlT3JGb3JjZUlubGluZSB8fCBzaG91
bGRBcHBseVdyYXBwaW5nU3R5bGUoZWxlbWVudCk7CiAgICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9
IDA7IGkgPCBsZW5ndGg7IGkrKykgewogICAgICAgICBBdHRyaWJ1dGUqIGF0dHJpYnV0ZSA9IGF0
dHJpYnV0ZXMtPmF0dHJpYnV0ZUl0ZW0oaSk7CiAgICAgICAgIC8vIFdlJ2xsIGhhbmRsZSB0aGUg
c3R5bGUgYXR0cmlidXRlIHNlcGFyYXRlbHksIGJlbG93LgotICAgICAgICBpZiAoYXR0cmlidXRl
LT5uYW1lKCkgPT0gc3R5bGVBdHRyICYmIGVsZW1lbnQtPmlzSFRNTEVsZW1lbnQoKSAmJiAoc2hv
dWxkQW5ub3RhdGUoKSB8fCBhZGREaXNwbGF5SW5saW5lKSkKKyAgICAgICAgaWYgKGF0dHJpYnV0
ZS0+bmFtZSgpID09IHN0eWxlQXR0ciAmJiBzaG91bGRPdmVycmlkZVN0eWxlQXR0cikKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICBhcHBlbmRBdHRyaWJ1dGUob3V0LCBlbGVtZW50LCAq
YXR0cmlidXRlLCAwKTsKICAgICB9CiAKLSAgICBpZiAoZWxlbWVudC0+aXNIVE1MRWxlbWVudCgp
ICYmIChzaG91bGRBbm5vdGF0ZSgpIHx8IGFkZERpc3BsYXlJbmxpbmUpKSB7Ci0gICAgICAgIFJl
ZlB0cjxFZGl0aW5nU3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUodG9IVE1MRWxl
bWVudChlbGVtZW50KS0+Z2V0SW5saW5lU3R5bGVEZWNsKCkpOwotICAgICAgICBpZiAoc2hvdWxk
QW5ub3RhdGUoKSkKLSAgICAgICAgICAgIHN0eWxlLT5tZXJnZVN0eWxlRnJvbVJ1bGVzRm9yU2Vy
aWFsaXphdGlvbih0b0hUTUxFbGVtZW50KGVsZW1lbnQpKTsKLSAgICAgICAgaWYgKGFkZERpc3Bs
YXlJbmxpbmUpCi0gICAgICAgICAgICBzdHlsZS0+c3R5bGUoKS0+c2V0UHJvcGVydHkoQ1NTUHJv
cGVydHlEaXNwbGF5LCBDU1NWYWx1ZUlubGluZSwgdHJ1ZSk7Ci0KLSAgICAgICAgLy8gSWYgdGhl
IG5vZGUgaXMgbm90IGZ1bGx5IHNlbGVjdGVkIGJ5IHRoZSByYW5nZSwgdGhlbiB3ZSBkb24ndCB3
YW50IHRvIGtlZXAgc3R5bGVzIHRoYXQgYWZmZWN0IGl0cyByZWxhdGlvbnNoaXAgdG8gdGhlIG5v
ZGVzIGFyb3VuZCBpdAotICAgICAgICAvLyBvbmx5IHRoZSBvbmVzIHRoYXQgYWZmZWN0IGl0IGFu
ZCB0aGUgbm9kZXMgd2l0aGluIGl0LgotICAgICAgICBpZiAocmFuZ2VGdWxseVNlbGVjdHNOb2Rl
ID09IERvZXNOb3RGdWxseVNlbGVjdE5vZGUpCi0gICAgICAgICAgICBzdHlsZS0+c3R5bGUoKS0+
cmVtb3ZlUHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCk7CisgICAgaWYgKHNob3VsZE92ZXJyaWRl
U3R5bGVBdHRyKSB7CisgICAgICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IG5ld0lubGluZVN0eWxl
OwogCi0gICAgICAgIGlmICghc3R5bGUtPmlzRW1wdHkoKSkgeworICAgICAgICBpZiAoc2hvdWxk
QXBwbHlXcmFwcGluZ1N0eWxlKGVsZW1lbnQpKSB7CisgICAgICAgICAgICBuZXdJbmxpbmVTdHls
ZSA9IG1fd3JhcHBpbmdTdHlsZS0+Y29weSgpOworICAgICAgICAgICAgbmV3SW5saW5lU3R5bGUt
PnJlbW92ZVByb3BlcnRpZXNJbkVsZW1lbnREZWZhdWx0U3R5bGUoZWxlbWVudCk7CisgICAgICAg
ICAgICBuZXdJbmxpbmVTdHlsZS0+cmVtb3ZlU3R5bGVDb25mbGljdGluZ1dpdGhTdHlsZU9mTm9k
ZShlbGVtZW50KTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZSA9
IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKCk7CisKKyAgICAgICAgaWYgKGVsZW1lbnQtPmlzU3R5bGVk
RWxlbWVudCgpICYmIHN0YXRpY19jYXN0PFN0eWxlZEVsZW1lbnQqPihlbGVtZW50KS0+aW5saW5l
U3R5bGVEZWNsKCkpCisgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+b3ZlcnJpZGVXaXRoU3R5
bGUoc3RhdGljX2Nhc3Q8U3R5bGVkRWxlbWVudCo+KGVsZW1lbnQpLT5pbmxpbmVTdHlsZURlY2wo
KSk7CisKKyAgICAgICAgaWYgKHNob3VsZEFubm90YXRlT3JGb3JjZUlubGluZSkgeworICAgICAg
ICAgICAgaWYgKHNob3VsZEFubm90YXRlKCkpCisgICAgICAgICAgICAgICAgbmV3SW5saW5lU3R5
bGUtPm1lcmdlU3R5bGVGcm9tUnVsZXNGb3JTZXJpYWxpemF0aW9uKHRvSFRNTEVsZW1lbnQoZWxl
bWVudCkpOworCisgICAgICAgICAgICBpZiAoYWRkRGlzcGxheUlubGluZSkKKyAgICAgICAgICAg
ICAgICBuZXdJbmxpbmVTdHlsZS0+Zm9yY2VJbmxpbmUoKTsKKworICAgICAgICAgICAgLy8gSWYg
dGhlIG5vZGUgaXMgbm90IGZ1bGx5IHNlbGVjdGVkIGJ5IHRoZSByYW5nZSwgdGhlbiB3ZSBkb24n
dCB3YW50IHRvIGtlZXAgc3R5bGVzIHRoYXQgYWZmZWN0IGl0cyByZWxhdGlvbnNoaXAgdG8gdGhl
IG5vZGVzIGFyb3VuZCBpdAorICAgICAgICAgICAgLy8gb25seSB0aGUgb25lcyB0aGF0IGFmZmVj
dCBpdCBhbmQgdGhlIG5vZGVzIHdpdGhpbiBpdC4KKyAgICAgICAgICAgIGlmIChyYW5nZUZ1bGx5
U2VsZWN0c05vZGUgPT0gRG9lc05vdEZ1bGx5U2VsZWN0Tm9kZSAmJiBuZXdJbmxpbmVTdHlsZS0+
c3R5bGUoKSkKKyAgICAgICAgICAgICAgICBuZXdJbmxpbmVTdHlsZS0+c3R5bGUoKS0+cmVtb3Zl
UHJvcGVydHkoQ1NTUHJvcGVydHlGbG9hdCk7CisgICAgICAgIH0KKworICAgICAgICBpZiAoIW5l
d0lubGluZVN0eWxlLT5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIERFRklORV9TVEFUSUNfTE9D
QUwoY29uc3QgU3RyaW5nLCBzdHlsZVByZWZpeCwgKCIgc3R5bGU9XCIiKSk7CiAgICAgICAgICAg
ICBhcHBlbmQob3V0LCBzdHlsZVByZWZpeCk7Ci0gICAgICAgICAgICBhcHBlbmRBdHRyaWJ1dGVW
YWx1ZShvdXQsIHN0eWxlLT5zdHlsZSgpLT5jc3NUZXh0KCksIGRvY3VtZW50SXNIVE1MKTsKKyAg
ICAgICAgICAgIGFwcGVuZEF0dHJpYnV0ZVZhbHVlKG91dCwgbmV3SW5saW5lU3R5bGUtPnN0eWxl
KCktPmNzc1RleHQoKSwgZG9jdW1lbnRJc0hUTUwpOwogICAgICAgICAgICAgb3V0LmFwcGVuZCgn
XCInKTsKICAgICAgICAgfQogICAgIH0KQEAgLTI3OCw2ICszMzYsMzAgQEAgdm9pZCBTdHlsZWRN
YXJrdXBBY2N1bXVsYXRvcjo6YXBwZW5kRWxlbQogCiBOb2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVs
YXRvcjo6c2VyaWFsaXplTm9kZXMoTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kKQogewor
ICAgIGlmICghbV9oaWdoZXN0Tm9kZVRvQmVTZXJpYWxpemVkKSB7CisgICAgICAgIE5vZGUqIGxh
c3RDbG9zZWQgPSB0cmF2ZXJzZU5vZGVzRm9yU2VyaWFsaXphdGlvbihzdGFydE5vZGUsIHBhc3RF
bmQsIERvTm90RW1pdFN0cmluZyk7CisgICAgICAgIG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXpl
ZCA9IGxhc3RDbG9zZWQ7CisgICAgfQorCisgICAgTm9kZSogcGFyZW50T2ZIaWdoZXN0Tm9kZSA9
IG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXplZCA/IG1faGlnaGVzdE5vZGVUb0JlU2VyaWFsaXpl
ZC0+cGFyZW50Tm9kZSgpIDogMDsKKyAgICBpZiAocGFyZW50T2ZIaWdoZXN0Tm9kZSkgeworICAg
ICAgICBtX3dyYXBwaW5nU3R5bGUgPSBFZGl0aW5nU3R5bGU6OmNyZWF0ZShwYXJlbnRPZkhpZ2hl
c3ROb2RlLCBFZGl0aW5nU3R5bGU6OkVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNr
Z3JvdW5kQ29sb3JJbkVmZmVjdCk7CisKKyAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9j
a3F1b3RlcyBjb250cmlidXRlIHNob3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9j
a3F1b3RlLAorICAgICAgICAvLyB0byBoZWxwIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVz
IGZyb20gb25lcyB0aGF0IHRoZSB1c2VyIGhhcyBhcHBsaWVkLgorICAgICAgICAvLyBUaGlzIGhl
bHBzIHVzIGdldCB0aGUgY29sb3Igb2YgY29udGVudCBwYXN0ZWQgaW50byBibG9ja3F1b3RlcyBy
aWdodC4KKyAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVu
Y2xvc2luZ05vZGVPZlR5cGUoZmlyc3RQb3NpdGlvbkluT3JCZWZvcmVOb2RlKHBhcmVudE9mSGln
aGVzdE5vZGUpLCBpc01haWxCbG9ja3F1b3RlLCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpOwor
CisgICAgICAgIC8vIENhbGwgY29sbGFwc2VUZXh0RGVjb3JhdGlvblByb3BlcnRpZXMgZmlyc3Qg
b3Igb3RoZXJ3aXNlIGl0J2xsIGNvcHkgdGhlIHZhbHVlIG92ZXIgZnJvbSBpbi1lZmZlY3QgdG8g
dGV4dC1kZWNvcmF0aW9ucy4KKyAgICAgICAgbV93cmFwcGluZ1N0eWxlLT5jb2xsYXBzZVRleHRE
ZWNvcmF0aW9uUHJvcGVydGllcygpOworICAgIH0KKworICAgIHJldHVybiB0cmF2ZXJzZU5vZGVz
Rm9yU2VyaWFsaXphdGlvbihzdGFydE5vZGUsIHBhc3RFbmQsIEVtaXRTdHJpbmcpOworfQorCitO
b2RlKiBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvcjo6dHJhdmVyc2VOb2Rlc0ZvclNlcmlhbGl6YXRp
b24oTm9kZSogc3RhcnROb2RlLCBOb2RlKiBwYXN0RW5kLCBOb2RlVHJhdmVyc2FsTW9kZSB0cmF2
ZXJzYWxNb2RlKQoreworICAgIGNvbnN0IGJvb2wgc2hvdWxkRW1pdCA9IHRyYXZlcnNhbE1vZGUg
PT0gRW1pdFN0cmluZzsKICAgICBWZWN0b3I8Tm9kZSo+IGFuY2VzdG9yc1RvQ2xvc2U7CiAgICAg
Tm9kZSogbmV4dDsKICAgICBOb2RlKiBsYXN0Q2xvc2VkID0gMDsKQEAgLTMwNCwxMSArMzg2LDEz
IEBAIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJpYWxpemUKICAgICAgICAgICAg
ICAgICBuZXh0ID0gcGFzdEVuZDsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIEFk
ZCB0aGUgbm9kZSB0byB0aGUgbWFya3VwIGlmIHdlJ3JlIG5vdCBza2lwcGluZyB0aGUgZGVzY2Vu
ZGFudHMKLSAgICAgICAgICAgIGFwcGVuZFN0YXJ0VGFnKG4pOworICAgICAgICAgICAgaWYgKHNo
b3VsZEVtaXQpCisgICAgICAgICAgICAgICAgYXBwZW5kU3RhcnRUYWcobik7CiAKICAgICAgICAg
ICAgIC8vIElmIG5vZGUgaGFzIG5vIGNoaWxkcmVuLCBjbG9zZSB0aGUgdGFnIG5vdy4KICAgICAg
ICAgICAgIGlmICghbi0+Y2hpbGROb2RlQ291bnQoKSkgewotICAgICAgICAgICAgICAgIGFwcGVu
ZEVuZFRhZyhuKTsKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kRW5kVGFnKG4pOwogICAgICAgICAgICAgICAgIGxhc3RDbG9zZWQgPSBu
OwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBvcGVuZWRUYWcgPSB0cnVl
OwpAQCAtMzI1LDcgKzQwOSw4IEBAIE5vZGUqIFN0eWxlZE1hcmt1cEFjY3VtdWxhdG9yOjpzZXJp
YWxpemUKICAgICAgICAgICAgICAgICBpZiAobmV4dCAhPSBwYXN0RW5kICYmIG5leHQtPmlzRGVz
Y2VuZGFudE9mKGFuY2VzdG9yKSkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICAgICAgLy8gTm90IGF0IHRoZSBlbmQgb2YgdGhlIHJhbmdlLCBjbG9zZSBhbmNlc3RvcnMg
dXAgdG8gc2libGluZyBvZiBuZXh0IG5vZGUuCi0gICAgICAgICAgICAgICAgYXBwZW5kRW5kVGFn
KGFuY2VzdG9yKTsKKyAgICAgICAgICAgICAgICBpZiAoc2hvdWxkRW1pdCkKKyAgICAgICAgICAg
ICAgICAgICAgYXBwZW5kRW5kVGFnKGFuY2VzdG9yKTsKICAgICAgICAgICAgICAgICBsYXN0Q2xv
c2VkID0gYW5jZXN0b3I7CiAgICAgICAgICAgICAgICAgYW5jZXN0b3JzVG9DbG9zZS5yZW1vdmVM
YXN0KCk7CiAgICAgICAgICAgICB9CkBAIC0zNDAsNyArNDI1LDggQEAgTm9kZSogU3R5bGVkTWFy
a3VwQWNjdW11bGF0b3I6OnNlcmlhbGl6ZQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CiAgICAgICAgICAgICAgICAgICAgIC8vIG9yIGIpIGFuY2VzdG9ycyB0aGF0IHdlIG5ldmVy
IGVuY291bnRlcmVkIGR1cmluZyBhIHByZS1vcmRlciB0cmF2ZXJzYWwgc3RhcnRpbmcgYXQgc3Rh
cnROb2RlOgogICAgICAgICAgICAgICAgICAgICBBU1NFUlQoc3RhcnROb2RlLT5pc0Rlc2NlbmRh
bnRPZihwYXJlbnQpKTsKLSAgICAgICAgICAgICAgICAgICAgd3JhcFdpdGhOb2RlKHBhcmVudCk7
CisgICAgICAgICAgICAgICAgICAgIGlmIChzaG91bGRFbWl0KQorICAgICAgICAgICAgICAgICAg
ICAgICAgd3JhcFdpdGhOb2RlKHBhcmVudCk7CiAgICAgICAgICAgICAgICAgICAgIGxhc3RDbG9z
ZWQgPSBwYXJlbnQ7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQpAQCAtNTEzLDcg
KzU5OSwxMyBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5nZSwgCiAKICAg
ICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKLSAg
ICBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2
ZVVSTHMsIHNob3VsZEFubm90YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCkpOworICAgIE5vZGUqIGJv
ZHkgPSBlbmNsb3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2Vz
dG9yKSwgYm9keVRhZyk7CisgICAgTm9kZSogZnVsbHlTZWxlY3RlZFJvb3QgPSAwOworICAgIC8v
IEZJWE1FOiBEbyB0aGlzIGZvciBhbGwgZnVsbHkgc2VsZWN0ZWQgYmxvY2tzLCBub3QganVzdCB0
aGUgYm9keS4KKyAgICBpZiAoYm9keSAmJiBhcmVSYW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9u
OjpzZWxlY3Rpb25Gcm9tQ29udGVudHNPZk5vZGUoYm9keSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5n
ZXQoKSwgcmFuZ2UpKQorICAgICAgICBmdWxseVNlbGVjdGVkUm9vdCA9IGJvZHk7CisgICAgTm9k
ZSogc3BlY2lhbENvbW1vbkFuY2VzdG9yID0gaGlnaGVzdEFuY2VzdG9yVG9XcmFwTWFya3VwKHVw
ZGF0ZWRSYW5nZS5nZXQoKSwgZnVsbHlTZWxlY3RlZFJvb3QsIHNob3VsZEFubm90YXRlKTsKKyAg
ICBTdHlsZWRNYXJrdXBBY2N1bXVsYXRvciBhY2N1bXVsYXRvcihub2Rlcywgc2hvdWxkUmVzb2x2
ZVVSTHMsIHNob3VsZEFubm90YXRlLCB1cGRhdGVkUmFuZ2UuZ2V0KCksIHNwZWNpYWxDb21tb25B
bmNlc3Rvcik7CiAgICAgTm9kZSogcGFzdEVuZCA9IHVwZGF0ZWRSYW5nZS0+cGFzdExhc3ROb2Rl
KCk7CiAKICAgICBOb2RlKiBzdGFydE5vZGUgPSB1cGRhdGVkUmFuZ2UtPmZpcnN0Tm9kZSgpOwpA
QCAtNTM5LDE0ICs2MzEsNiBAQCBTdHJpbmcgY3JlYXRlTWFya3VwKGNvbnN0IFJhbmdlKiByYW5n
ZSwgCiAgICAgICAgIEFTU0VSVCghZWMpOwogICAgIH0KIAotICAgIE5vZGUqIGJvZHkgPSBlbmNs
b3NpbmdOb2RlV2l0aFRhZyhmaXJzdFBvc2l0aW9uSW5Ob2RlKGNvbW1vbkFuY2VzdG9yKSwgYm9k
eVRhZyk7Ci0gICAgTm9kZSogZnVsbHlTZWxlY3RlZFJvb3QgPSAwOwotICAgIC8vIEZJWE1FOiBE
byB0aGlzIGZvciBhbGwgZnVsbHkgc2VsZWN0ZWQgYmxvY2tzLCBub3QganVzdCB0aGUgYm9keS4K
LSAgICBpZiAoYm9keSAmJiBhcmVSYW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9uOjpzZWxlY3Rp
b25Gcm9tQ29udGVudHNPZk5vZGUoYm9keSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwgcmFu
Z2UpKQotICAgICAgICBmdWxseVNlbGVjdGVkUm9vdCA9IGJvZHk7Ci0KLSAgICBOb2RlKiBzcGVj
aWFsQ29tbW9uQW5jZXN0b3IgPSBoaWdoZXN0QW5jZXN0b3JUb1dyYXBNYXJrdXAodXBkYXRlZFJh
bmdlLmdldCgpLCBmdWxseVNlbGVjdGVkUm9vdCwgc2hvdWxkQW5ub3RhdGUpOwotCiAgICAgTm9k
ZSogbGFzdENsb3NlZCA9IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKHN0YXJ0Tm9kZSwgcGFz
dEVuZCk7CiAKICAgICBpZiAoc3BlY2lhbENvbW1vbkFuY2VzdG9yICYmIGxhc3RDbG9zZWQpIHsK
QEAgLTU4NiwyMCArNjcwLDYgQEAgU3RyaW5nIGNyZWF0ZU1hcmt1cChjb25zdCBSYW5nZSogcmFu
Z2UsIAogICAgICAgICB9CiAgICAgfQogCi0gICAgLy8gQWRkIGEgd3JhcHBlciBzcGFuIHdpdGgg
dGhlIHN0eWxlcyB0aGF0IGFsbCBvZiB0aGUgbm9kZXMgaW4gdGhlIG1hcmt1cCBpbmhlcml0Lgot
ICAgIENvbnRhaW5lck5vZGUqIHBhcmVudE9mTGFzdENsb3NlZCA9IGxhc3RDbG9zZWQgPyBsYXN0
Q2xvc2VkLT5wYXJlbnROb2RlKCkgOiAwOwotICAgIGlmIChwYXJlbnRPZkxhc3RDbG9zZWQgJiYg
cGFyZW50T2ZMYXN0Q2xvc2VkLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIFJlZlB0cjxFZGl0aW5n
U3R5bGU+IHN0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUocGFyZW50T2ZMYXN0Q2xvc2VkLCBF
ZGl0aW5nU3R5bGU6OkVkaXRpbmdJbmhlcml0YWJsZVByb3BlcnRpZXNBbmRCYWNrZ3JvdW5kQ29s
b3JJbkVmZmVjdCk7Ci0KLSAgICAgICAgLy8gU3R5bGVzIHRoYXQgTWFpbCBibG9ja3F1b3RlcyBj
b250cmlidXRlIHNob3VsZCBvbmx5IGJlIHBsYWNlZCBvbiB0aGUgTWFpbCBibG9ja3F1b3RlLCB0
byBoZWxwCi0gICAgICAgIC8vIHVzIGRpZmZlcmVudGlhdGUgdGhvc2Ugc3R5bGVzIGZyb20gb25l
cyB0aGF0IHRoZSB1c2VyIGhhcyBhcHBsaWVkLiAgVGhpcyBoZWxwcyB1cwotICAgICAgICAvLyBn
ZXQgdGhlIGNvbG9yIG9mIGNvbnRlbnQgcGFzdGVkIGludG8gYmxvY2txdW90ZXMgcmlnaHQuCi0g
ICAgICAgIHN0eWxlLT5yZW1vdmVTdHlsZUFkZGVkQnlOb2RlKGVuY2xvc2luZ05vZGVPZlR5cGUo
Zmlyc3RQb3NpdGlvbkluTm9kZShwYXJlbnRPZkxhc3RDbG9zZWQpLCBpc01haWxCbG9ja3F1b3Rl
LCBDYW5Dcm9zc0VkaXRpbmdCb3VuZGFyeSkpOwotCi0gICAgICAgIGlmICghc3R5bGUtPmlzRW1w
dHkoKSkKLSAgICAgICAgICAgIGFjY3VtdWxhdG9yLndyYXBXaXRoU3R5bGVOb2RlKHN0eWxlLT5z
dHlsZSgpLCBkb2N1bWVudCk7Ci0gICAgfQotCiAgICAgLy8gRklYTUU6IFRoZSBpbnRlcmNoYW5n
ZSBuZXdsaW5lIHNob3VsZCBiZSBwbGFjZWQgaW4gdGhlIGJsb2NrIHRoYXQgaXQncyBpbiwgbm90
IGFmdGVyIGFsbCBvZiB0aGUgY29udGVudCwgdW5jb25kaXRpb25hbGx5LgogICAgIGlmIChzaG91
bGRBbm5vdGF0ZSA9PSBBbm5vdGF0ZUZvckludGVyY2hhbmdlICYmIG5lZWRJbnRlcmNoYW5nZU5l
d2xpbmVBZnRlcih2aXNpYmxlRW5kLnByZXZpb3VzKCkpKQogICAgICAgICBhY2N1bXVsYXRvci5h
cHBlbmRTdHJpbmcoaW50ZXJjaGFuZ2VOZXdsaW5lU3RyaW5nKTsKSW5kZXg6IExheW91dFRlc3Rz
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHJldmlzaW9u
IDkyNzgxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMTEtMDgtMTAgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisK
KyAgICAgICAgQ29weWluZyBjYW4gcmVzdWx0IGluIHNwYW4gYXJvdW5kIGJsb2NrIGVsZW1lbnRz
IG9uIHRoZSBjbGlwYm9hcmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM0NTY0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGhpcyBwYXRjaCBvdmVyaGF1bGVkIHRoZSB3YXkgd2UgcHJlc2VydmUgc3R5bGVz
IHdoZW4gY29weWluZyBhbmQgcGFzdGluZyBIVE1MIGNvbnRlbnRzLiBNYW55IHRlc3RzIHByb2dy
ZXNzZWQKKyAgICAgICAgYW5kIGxvc3Qgd3JhcHBpbmcgc3BhbnMgd2hpbGUgb3RoZXJzIGFyZSBv
YnNlcnZpbmcgZGlmZmVyZW50IG1hcmt1cCBvbiB0aGUgY2xpcGJvYXJkIGFzIGV4cGVjdGVkLgor
CisgICAgICAgICogZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFrLXByZXNlcnZl
cy11bmRlcmxpbmUtY29sb3ItZXhwZWN0ZWQudHh0OiBzcGFuJ3Mgc3R5bGUgYXR0cmlidXRlIG5v
dyBoYXMKKyAgICAgICAgYSB0cmFpbGluZyBzcGFjZS4KKyAgICAgICAgKiBlZGl0aW5nL2V4ZWND
b21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFibGUtY29udGVudC1leHBlY3RlZC50eHQ6
IExpZ2h0R3JheSBpcyBub3cgcmdiKDIxMSwgMjExLCAyMTEpLgorICAgICAgICAqIGVkaXRpbmcv
cGFzdGVib2FyZC9kYXRhLXRyYW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4dDogRGlmZmVyZW50IHNl
cmlhbGl6YXRpb24uCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1o
dG1sLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAgICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bh
c3RlLTQwMzk3NzctZml4LWV4cGVjdGVkLnR4dDogTm8gbG9uZ2VyIG5lc3RzIHVsIGVycm9uZW91
c2x5IG9yIGFsaWducyB0aGUgaW5uZXIgbGlzdAorICAgICAgICB0byB0aGUgcmlnaHQuCisgICAg
ICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dDog
Tm8gbG9uZ2VyIHByb2R1Y2VzIGVycm9uZW91cyB3cmFwcGluZyBzcGFuLgorICAgICAgICAqIGVk
aXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dDogRGl0dG8uCisgICAg
ICAgICogZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0OiBEaXR0
by4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC0wMTItZXhwZWN0ZWQu
dHh0OiBEaXR0by4KKyAgICAgICAgKiBlZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4dC13aXRo
LXN0eWxlLTQtZXhwZWN0ZWQudHh0OiBEaXR0by4KKyAgICAgICAgKiBmYXN0L2V2ZW50cy9vbmRy
b3AtdGV4dC1odG1sLWV4cGVjdGVkLnR4dDogRGlmZmVyZW50IHNlcmlhbGl6YXRpb24uCisgICAg
ICAgICogcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2Rl
LWluLXByZS1leHBlY3RlZC50eHQ6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vY2hyb21p
dW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJk
L3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3Jt
L3F0LW1hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0
OiBSZW1vdmVkLgorCiAyMDExLTA4LTEwICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21p
dW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbW92ZSBOZXR3b3JrLmluaXRpYWxD
b250ZW50U2V0IGZyb20gcHJvdG9jb2wsIHN0b3JlIHdvcmtlcnMgY29udGVudCBvbiBiYWNrZW5k
LgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9kZWxldGluZy9kZWxldGluZy1saW5lLWJyZWFr
LXByZXNlcnZlcy11bmRlcmxpbmUtY29sb3ItZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2VkaXRpbmcvZGVsZXRpbmcvZGVsZXRpbmctbGluZS1icmVhay1wcmVzZXJ2ZXMt
dW5kZXJsaW5lLWNvbG9yLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3ODEpCisrKyBMYXlvdXRU
ZXN0cy9lZGl0aW5nL2RlbGV0aW5nL2RlbGV0aW5nLWxpbmUtYnJlYWstcHJlc2VydmVzLXVuZGVy
bGluZS1jb2xvci1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEzLDcgKzEzLDcgQEAg
QWZ0ZXI6CiB8IDxkaXY+CiB8ICAgIlRoaXMgc2hvdWxkIG5vdCBiZSB1bmRlcmxpbmVkLjwjc2Vs
ZWN0aW9uLWNhcmV0PiIKIHwgICA8c3Bhbj4KLXwgICAgIHN0eWxlPSJ0ZXh0LWRlY29yYXRpb246
IHVuZGVybGluZTsgY29sb3I6IGJsdWU7IgorfCAgICAgc3R5bGU9InRleHQtZGVjb3JhdGlvbjog
dW5kZXJsaW5lOyBjb2xvcjogYmx1ZTsgIgogfCAgICAgPHNwYW4+CiB8ICAgICAgIHN0eWxlPSJj
b2xvcjpyZWQ7IgogfCAgICAgICAiVGhpcyBzaG91bGQgYmUgdW5kZXJsaW5lZC4iCkluZGV4OiBM
YXlvdXRUZXN0cy9lZGl0aW5nL2V4ZWNDb21tYW5kL2luc2VydC1saXN0LXdpdGgtbm9uZWRpdGFi
bGUtY29udGVudC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZWRpdGlu
Zy9leGVjQ29tbWFuZC9pbnNlcnQtbGlzdC13aXRoLW5vbmVkaXRhYmxlLWNvbnRlbnQtZXhwZWN0
ZWQudHh0CShyZXZpc2lvbiA5Mjc4MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvZXhlY0NvbW1h
bmQvaW5zZXJ0LWxpc3Qtd2l0aC1ub25lZGl0YWJsZS1jb250ZW50LWV4cGVjdGVkLnR4dAkod29y
a2luZyBjb3B5KQpAQCAtNCw3ICs0LDcgQEAgVGhpcyB0ZXN0cyBsaXN0IGNyZWF0aW9uIGluIGFu
IGVkaXRhYmxlIAogfCAgICAgIkVkaXRhYmw8I3NlbGVjdGlvbi1hbmNob3I+ZSBwYXJhZ3JhcGgg
Y29udGFpbmluZyBhICIKIHwgICAgIDxzcGFuPgogfCAgICAgICBjb250ZW50ZWRpdGFibGU9ImZh
bHNlIgotfCAgICAgICBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogTGlnaHRHcmF5OyIKK3wgICAg
ICAgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyMTEsIDIxMSwgMjExKTsgIgogfCAgICAg
ICAibm9uLWVkaXRhYmxlIgogfCAgICAgIiBpbiB0aGUgbWlkZGxlIgogfCAgICAgPGJyPgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL2RhdGEtdHJhbnNmZXItaXRlbXMtZXhw
ZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9k
YXRhLXRyYW5zZmVyLWl0ZW1zLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3ODEpCisrKyBMYXlv
dXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvZGF0YS10cmFuc2Zlci1pdGVtcy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTIwLDYgKzIwLDYgQEAgVGVzdGluZyBpZiBEYXRhVHJhbnNm
ZXJJdGVtcyBjYW4gYmUgYWNjZQogRGF0YVRyYW5zZmVySXRlbSBhY2Nlc3NlZCBvdXRzaWRlIGV2
ZW50IGhhbmRsZXIhCiBjb3B5OiBpdGVtc1swXSB2YWx1ZTogSGVsbG8gV29ybGQhCiBjb3B5OiBp
dGVtc1sxXSB2YWx1ZTogPGI+SGVsbG8gV29ybGQhCi1wYXN0ZTogaXRlbXNbMF0gdmFsdWU6IDxz
cGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsg
Zm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5v
cm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgb3JwaGFu
czogMjsgdGV4dC1hbGlnbjogLXdlYmtpdC1hdXRvOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRy
YW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNp
bmc6IDBweDsgLXdlYmtpdC10ZXh0LWRlY29yYXRpb25zLWluLWVmZmVjdDogbm9uZTsgLXdlYmtp
dC10ZXh0LXNpemUtYWRqdXN0OiBhdXRvOyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7
IGZvbnQtc2l6ZTogbWVkaXVtOyAiPlRoaXMgZmlsZSB0ZXN0cyB0aGUgYmFzaWMgZnVuY3Rpb25h
bGl0eSBhbmQgcHJvcGVydGllcyBvZiBEYXRhVHJhbnNmZXJJdGVtcy4gVGhpcyB0ZXN0IHJlcXVp
cmVzIERSVC48L3NwYW4+CitwYXN0ZTogaXRlbXNbMF0gdmFsdWU6IDxzcGFuIGNsYXNzPSJBcHBs
ZS1zdHlsZS1zcGFuIiBzdHlsZT0iY29sb3I6IHJnYigwLCAwLCAwKTsgZm9udC1zdHlsZTogbm9y
bWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNw
YWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5vcm1hbDsgb3JwaGFuczogMjsgdGV4dC1hbGln
bjogLXdlYmtpdC1hdXRvOyB0ZXh0LWluZGVudDogMHB4OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsg
d2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtp
dC10ZXh0LXNpemUtYWRqdXN0OiBhdXRvOyAtd2Via2l0LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7
IGZvbnQtc2l6ZTogbWVkaXVtOyBkaXNwbGF5OiBpbmxpbmUgIWltcG9ydGFudDsgZmxvYXQ6IG5v
bmU7ICI+VGhpcyBmaWxlIHRlc3RzIHRoZSBiYXNpYyBmdW5jdGlvbmFsaXR5IGFuZCBwcm9wZXJ0
aWVzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJULjwvc3Bhbj4K
IHBhc3RlOiBpdGVtc1sxXSB2YWx1ZTogVGhpcyBmaWxlIHRlc3RzIHRoZSBiYXNpYyBmdW5jdGlv
bmFsaXR5IGFuZCBwcm9wZXJ0aWVzIG9mIERhdGFUcmFuc2Zlckl0ZW1zLiBUaGlzIHRlc3QgcmVx
dWlyZXMgRFJULgogCkluZGV4OiBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvb25wYXN0
ZS10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRp
bmcvcGFzdGVib2FyZC9vbnBhc3RlLXRleHQtaHRtbC1leHBlY3RlZC50eHQJKHJldmlzaW9uIDky
NzgxKQorKysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL29ucGFzdGUtdGV4dC1odG1s
LWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIENPTlNPTEUgTUVT
U0FHRTogbGluZSAyMTogdGV4dC9wbGFpbjogVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2Fu
IGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgY2xpcGJvYXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2ZW50
LiAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAyMzogdGV4dC9odG1sOiA8c3BhbiBjbGFzcz0iQXBw
bGUtc3R5bGUtc3BhbiIgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7ICBmb250LXN0eWxlOiBu
b3JtYWw7IGZvbnQtdmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXIt
c3BhY2luZzogbm9ybWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFs
aWduOiAtd2Via2l0LWF1dG87IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25l
OyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Vi
a2l0LXRleHQtZGVjb3JhdGlvbnMtaW4tZWZmZWN0OiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1h
ZGp1c3Q6IGF1dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgZm9udC1zaXplOiBt
ZWRpdW07ICI+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJv
bSB0aGUgY2xpcGJvYXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2ZW50LjxzcGFuIGNsYXNzPSJBcHBs
ZS1jb252ZXJ0ZWQtc3BhY2UiPsKgPC9zcGFuPjwvc3Bhbj4KK0NPTlNPTEUgTUVTU0FHRTogbGlu
ZSAyMzogdGV4dC9odG1sOiA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImNv
bG9yOiByZ2IoMCwgMCwgMCk7ICBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQtdmFyaWFudDogbm9y
bWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9ybWFsOyBsaW5lLWhl
aWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiAtd2Via2l0LWF1dG87IHRleHQt
aW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyB3
aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1
dG87IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgZm9udC1zaXplOiBtZWRpdW07IGRp
c3BsYXk6IGlubGluZSAhaW1wb3J0YW50OyBmbG9hdDogbm9uZTsgIj5UaGlzIHRlc3QgdmVyaWZp
ZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFu
IG9ucGFzdGUgZXZlbnQuPHNwYW4gY2xhc3M9IkFwcGxlLWNvbnZlcnRlZC1zcGFjZSI+wqA8L3Nw
YW4+PC9zcGFuPgogVGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwg
ZnJvbSB0aGUgY2xpcGJvYXJkIGR1cmluZyBhbiBvbnBhc3RlIGV2ZW50LiBUaGlzIHRlc3QgcmVx
dWlyZXMgRFJULgogUGFzdGUgY29udGVudCBpbiB0aGlzIGRpdi5UaGlzIHRlc3QgdmVyaWZpZXMg
dGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBjbGlwYm9hcmQgZHVyaW5nIGFuIG9u
cGFzdGUgZXZlbnQuwqAKIFBBU1MKSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2Fy
ZC9wYXN0ZS00MDM5Nzc3LWZpeC1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVz
dHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLTQwMzk3NzctZml4LWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gOTI3ODEpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtNDAz
OTc3Ny1maXgtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC01MSwxMSArNTEsMTAgQEAg
QWN0dWFsIHJlc3VsdDoKICIKIHwgPHVsPgogfCAgIHN0eWxlPSJ0ZXh0LWFsaWduOnJpZ2h0OyIK
LXwgICA8dWw+Ci18ICAgICBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQ7ICIKLXwgICAgIDxsaT4K
LXwgICAgICAgIkEiCit8ICAgPGxpPgorfCAgICAgIkEiCiB8ICAgPGRpdj4KK3wgICAgIHN0eWxl
PSJ0ZXh0LWFsaWduOiAtd2Via2l0LWF1dG87ICIKIHwgICAgIDx1bD4KIHwgICAgICAgPGxpPgog
fCAgICAgICAgIDxhPgpJbmRleDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3Rl
LWNvZGUtaW4tcHJlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0
aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5
Mjc4MSkKKysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXBy
ZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTMsMTAgKzMsNyBAQCBZb3Ugc2hvdWxk
IHNlZSBtYXJrdXAgaW4gdGhlIGVkaXRhYmxlIHJlCiB8IDxwcmU+CiB8ICAgY29udGVudGVkaXRh
YmxlPSJ0cnVlIgogfCAgIGlkPSJwcmUiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFzcz0iQXBwbGUt
c3R5bGUtc3BhbiIKLXwgICAgIHN0eWxlPSJmb250LWZhbWlseTogVGltZXM7IHdoaXRlLXNwYWNl
OiBub3JtYWw7ICIKLXwgICAgIDxwcmU+Ci18ICAgICAgIGNvbnRlbnRlZGl0YWJsZT0idHJ1ZSIK
LXwgICAgICAgaWQ9InByZSIKLXwgICAgICAgIjxpbnB1dCB0eXBlPSdidXR0b24nPmZvbzxicj5i
YXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgIDxwcmU+Cit8ICAgICBjb250ZW50
ZWRpdGFibGU9InRydWUiCit8ICAgICBpZD0icHJlIgorfCAgICAgIjxpbnB1dCB0eXBlPSdidXR0
b24nPmZvbzxicj5iYXI8Yj5iYXo8L2I+PCNzZWxlY3Rpb24tY2FyZXQ+IgpJbmRleDogTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0Cj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4
cGVjdGVkLnR4dAkocmV2aXNpb24gOTI3ODEpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3Rl
Ym9hcmQvcGFzdGUtcHJlLTAwMS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTcsNCAr
Nyw0IEBAIGJhcgogZm9vCiBiYXIKIGV4ZWNDdXRDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFz
cz0iZWRpdGluZyI+IDxwcmU+PGJyPjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxk
aXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5
bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUtc3BhY2U6IG5vcm1hbDsg
Ij48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2PgorZXhlY1Bhc3RlQ29tbWFu
ZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxwcmU+Zm9vIGJhcjwvcHJl
PjwvcHJlPiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS1wcmUtMDAyLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzgxKQor
KysgTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQu
dHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yLDQgKzIsNCBAQCBUaGlzIGlzIGEgbGF5b3V0IHRlc3Qg
Zm9yIHJkYXI6Ly9wcm9ibGVtCiBmb28KIGJhcgogZXhlY0NvcHlDb21tYW5kOiA8ZGl2IGlkPSJ0
ZXN0IiBjbGFzcz0iZWRpdGluZyI+IDxwcmU+Zm9vIGJhcjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0
ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3BhbiBjbGFz
cz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5bGU9ImZvbnQtZmFtaWx5OiBUaW1lczsgd2hpdGUtc3Bh
Y2U6IG5vcm1hbDsgIj48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2PgorZXhl
Y1Bhc3RlQ29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPjxwcmU+
Zm9vIGJhcjwvcHJlPjwvcHJlPiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL2VkaXRpbmcvcGFz
dGVib2FyZC9wYXN0ZS10ZXh0LTAxMi1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtMDEyLWV4cGVjdGVkLnR4dAkocmV2
aXNpb24gOTI3ODEpCisrKyBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtdGV4
dC0wMTItZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC02LDQgKzYsNCBAQCBmb28KIGZv
bwogCiBleGVjQ29weUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5nIj48ZGl2
PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFzcz0iZWRp
dGluZyI+PC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRp
dGluZyI+PGRpdj48YmxvY2txdW90ZT5mb288L2Jsb2NrcXVvdGU+PC9kaXY+PC9kaXY+IDxkaXYg
Y2xhc3M9ImVkaXRpbmciPjxzcGFuIGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIiBzdHlsZT0iZm9u
dC1zaXplOiBtZWRpdW07ICI+PGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJs
b2NrcXVvdGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2Pjwvc3Bh
bj48L2Rpdj4KK2V4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3QiIGNsYXNzPSJlZGl0aW5n
Ij48ZGl2PjxibG9ja3F1b3RlPmZvbzwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj4gPGRpdiBjbGFz
cz0iZWRpdGluZyI+PGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPjxkaXY+PGJsb2NrcXVv
dGU+Zm9vPC9ibG9ja3F1b3RlPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjwvZGl2PjwvZGl2PgpJbmRl
eDogTGF5b3V0VGVzdHMvZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXRleHQtd2l0aC1zdHlsZS00
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9lZGl0aW5nL3Bhc3RlYm9h
cmQvcGFzdGUtdGV4dC13aXRoLXN0eWxlLTQtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5Mjc4MSkK
KysrIExheW91dFRlc3RzL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS10ZXh0LXdpdGgtc3R5bGUt
NC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTksOSArOSw3IEBAIEJlZm9yZSBjb3B5
OgogQWZ0ZXIgcGFzdGU6CiB8IDxiPgogfCAgIHN0eWxlPSJib3JkZXI6IHNvbGlkIDVweCBibHVl
O3BhZGRpbmc6IDVweDsiCi18ICAgPHNwYW4+Ci18ICAgICBjbGFzcz0iQXBwbGUtc3R5bGUtc3Bh
biIKK3wgICA8aT4KIHwgICAgIHN0eWxlPSJmb250LXdlaWdodDogbm9ybWFsOyAiCi18ICAgICA8
aT4KLXwgICAgICAgImhlbGxvPCNzZWxlY3Rpb24tY2FyZXQ+IgorfCAgICAgImhlbGxvPCNzZWxl
Y3Rpb24tY2FyZXQ+IgogfCAgIDxicj4KSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29u
ZHJvcC10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5Mjc4MSkK
KysrIExheW91dFRlc3RzL2Zhc3QvZXZlbnRzL29uZHJvcC10ZXh0LWh0bWwtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAogQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIx
OiB0ZXh0L3BsYWluOiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRt
bCBmcm9tIHRoZSBkcmFnIG9iamVjdCBkdXJpbmcgYW4gb25kcm9wIGV2ZW50LiAKLUNPTlNPTEUg
TUVTU0FHRTogbGluZSAyMzogdGV4dC9odG1sOiA8c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3Bh
biIgc3R5bGU9ImNvbG9yOiByZ2IoMCwgMCwgMCk7ICBmb250LXN0eWxlOiBub3JtYWw7IGZvbnQt
dmFyaWFudDogbm9ybWFsOyBmb250LXdlaWdodDogbm9ybWFsOyBsZXR0ZXItc3BhY2luZzogbm9y
bWFsOyBsaW5lLWhlaWdodDogbm9ybWFsOyBvcnBoYW5zOiAyOyB0ZXh0LWFsaWduOiAtd2Via2l0
LWF1dG87IHRleHQtaW5kZW50OiAwcHg7IHRleHQtdHJhbnNmb3JtOiBub25lOyB3aGl0ZS1zcGFj
ZTogbm9ybWFsOyB3aWRvd3M6IDI7IHdvcmQtc3BhY2luZzogMHB4OyAtd2Via2l0LXRleHQtZGVj
b3JhdGlvbnMtaW4tZWZmZWN0OiBub25lOyAtd2Via2l0LXRleHQtc2l6ZS1hZGp1c3Q6IGF1dG87
IC13ZWJraXQtdGV4dC1zdHJva2Utd2lkdGg6IDBweDsgZm9udC1zaXplOiBtZWRpdW07ICI+VGhp
cyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2UgY2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgZHJhZyBv
YmplY3QgZHVyaW5nIGFuIG9uZHJvcCBldmVudC48c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVk
LXNwYWNlIj7CoDwvc3Bhbj48L3NwYW4+CitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjM6IHRleHQv
aHRtbDogPHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJjb2xvcjogcmdiKDAs
IDAsIDApOyAgZm9udC1zdHlsZTogbm9ybWFsOyBmb250LXZhcmlhbnQ6IG5vcm1hbDsgZm9udC13
ZWlnaHQ6IG5vcm1hbDsgbGV0dGVyLXNwYWNpbmc6IG5vcm1hbDsgbGluZS1oZWlnaHQ6IG5vcm1h
bDsgb3JwaGFuczogMjsgdGV4dC1hbGlnbjogLXdlYmtpdC1hdXRvOyB0ZXh0LWluZGVudDogMHB4
OyB0ZXh0LXRyYW5zZm9ybTogbm9uZTsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgd2lkb3dzOiAyOyB3
b3JkLXNwYWNpbmc6IDBweDsgLXdlYmtpdC10ZXh0LXNpemUtYWRqdXN0OiBhdXRvOyAtd2Via2l0
LXRleHQtc3Ryb2tlLXdpZHRoOiAwcHg7IGZvbnQtc2l6ZTogbWVkaXVtOyBkaXNwbGF5OiBpbmxp
bmUgIWltcG9ydGFudDsgZmxvYXQ6IG5vbmU7ICI+VGhpcyB0ZXN0IHZlcmlmaWVzIHRoYXQgd2Ug
Y2FuIGdldCB0ZXh0L2h0bWwgZnJvbSB0aGUgZHJhZyBvYmplY3QgZHVyaW5nIGFuIG9uZHJvcCBl
dmVudC48c3BhbiBjbGFzcz0iQXBwbGUtY29udmVydGVkLXNwYWNlIj7CoDwvc3Bhbj48L3NwYW4+
CiBUaGlzIHRlc3QgdmVyaWZpZXMgdGhhdCB3ZSBjYW4gZ2V0IHRleHQvaHRtbCBmcm9tIHRoZSBk
cmFnIG9iamVjdCBkdXJpbmcgYW4gb25kcm9wIGV2ZW50LiBUaGlzIHRlc3QgcmVxdWlyZXMgRFJU
LgogUEFTUwpJbmRleDogTGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcv
cGFzdGVib2FyZC9wYXN0ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0
ZS1jb2RlLWluLXByZS1leHBlY3RlZC50eHQJKHJldmlzaW9uIDkyNzgxKQorKysgTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1jb2RlLWlu
LXByZS1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAgLTEsMTIgKzAsMCBAQAotVGhpcyB0
ZXN0cyBhIGJ1ZyB3aGVuIGNvcHlpbmcgSFRNTCBtYXJrdXAgaW5zaWRlIDxwcmU+IHRhZ3MuIFdo
ZW4gcGFzdGVkLCB0aGlzIGNvbnRlbnQgd291bGQgYXBwZWFyIGFzIHRoZSByZW5kZXJlZCBmb3Jt
IG9mIHRoYXQgbWFya3VwLgotWW91IHNob3VsZCBzZWUgbWFya3VwIGluIHRoZSBlZGl0YWJsZSBy
ZWdpb24gYmVsb3cuIFNlZSA8cmRhcjovLzUwMjc4NTc+LgotfCA8cHJlPgotfCAgIGNvbnRlbnRl
ZGl0YWJsZT0idHJ1ZSIKLXwgICBpZD0icHJlIgotfCAgIDxzcGFuPgotfCAgICAgY2xhc3M9IkFw
cGxlLXN0eWxlLXNwYW4iCi18ICAgICBzdHlsZT0iZm9udC1mYW1pbHk6ICd0aW1lcyBuZXcgcm9t
YW4nOyB3aGl0ZS1zcGFjZTogbm9ybWFsOyAiCi18ICAgICA8cHJlPgotfCAgICAgICBjb250ZW50
ZWRpdGFibGU9InRydWUiCi18ICAgICAgIGlkPSJwcmUiCi18ICAgICAgICI8aW5wdXQgdHlwZT0n
YnV0dG9uJz5mb288YnI+YmFyPGI+YmF6PC9iPjwjc2VsZWN0aW9uLWNhcmV0PiIKSW5kZXg6IExh
eW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUt
cHJlLTAwMS1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvcGxhdGZvcm0v
Y2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAxLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gOTI3ODEpCisrKyBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS13aW4v
ZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDEtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDEwICswLDAgQEAKLVRlc3RzOiAKLUNvcHlpbmcgYW5kIHBhc3RpbmcgY29udGVu
dCBpbnNpZGUgb2YgYSBQUkUgdGFnLiBUaGlzIHRlc3Qgd2FzIGNyZWF0ZWQgYWZ0ZXIgZml4aW5n
IDM5MTgwNTYuCi1FeHBlY3RlZCBSZXN1bHRzOiAKLVRoZSBQUkUgdGFnIGFuZCB0aGUgZm9ybWF0
dGluZyBvZiB0aGUgdGV4dCBpbnNpZGUgb2YgdGhlIFBSRSBzaG91bGQgYmUgbWFpbnRhaW5lZC4g
U2hvdWxkIHNlZSB0aGlzIGNvbnRlbnQgaW4gdGhlIHJlZCBib3ggYmVsb3c6Ci1mb28KLWJhcgot
Zm9vCi1iYXIKLWV4ZWNDdXRDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFzcz0iZWRpdGluZyI+
IDxwcmU+PGJyPjwvcHJlPiA8L2Rpdj4KLWV4ZWNQYXN0ZUNvbW1hbmQ6IDxkaXYgaWQ9InRlc3Qi
IGNsYXNzPSJlZGl0aW5nIj4gPHByZT48c3BhbiBjbGFzcz0iQXBwbGUtc3R5bGUtc3BhbiIgc3R5
bGU9ImZvbnQtZmFtaWx5OiAndGltZXMgbmV3IHJvbWFuJzsgd2hpdGUtc3BhY2U6IG5vcm1hbDsg
Ij48cHJlPmZvbyBiYXI8L3ByZT48L3NwYW4+PC9wcmU+IDwvZGl2PgpJbmRleDogTGF5b3V0VGVz
dHMvcGxhdGZvcm0vY2hyb21pdW0td2luL2VkaXRpbmcvcGFzdGVib2FyZC9wYXN0ZS1wcmUtMDAy
LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1
bS13aW4vZWRpdGluZy9wYXN0ZWJvYXJkL3Bhc3RlLXByZS0wMDItZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiA5Mjc4MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtLXdpbi9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtcHJlLTAwMi1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMCwwIEBACi1UaGlzIGlzIGEgbGF5b3V0IHRlc3QgZm9yIHJkYXI6Ly9wcm9ibGVtLzQz
NzAyMDkgIlJlcHJvZHVjaWJsZSBjcmFzaCB3aGVuIHBhc3Rpbmcgb3ZlciB3aGl0ZXNwYWNlOnBy
ZSB0ZXh0Ii4gVGhlIHRleHQgYmVsb3cgaXMgc2VsZWN0ZWQsIGNvcGllZCwgYW5kIHBhc3RlZCBv
dmVyIGl0c2VsZi4gWW91J2xsIHNlZSBmb28vbmJhciBpZiBzdWNjZXNzZnVsLgotZm9vCi1iYXIK
LWV4ZWNDb3B5Q29tbWFuZDogPGRpdiBpZD0idGVzdCIgY2xhc3M9ImVkaXRpbmciPiA8cHJlPmZv
byBiYXI8L3ByZT4gPC9kaXY+Ci1leGVjUGFzdGVDb21tYW5kOiA8ZGl2IGlkPSJ0ZXN0IiBjbGFz
cz0iZWRpdGluZyI+IDxwcmU+PHNwYW4gY2xhc3M9IkFwcGxlLXN0eWxlLXNwYW4iIHN0eWxlPSJm
b250LWZhbWlseTogJ3RpbWVzIG5ldyByb21hbic7IHdoaXRlLXNwYWNlOiBub3JtYWw7ICI+PHBy
ZT5mb28gYmFyPC9wcmU+PC9zcGFuPjwvcHJlPiA8L2Rpdj4KSW5kZXg6IExheW91dFRlc3RzL3Bs
YXRmb3JtL3F0LW1hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0
ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL3BsYXRmb3JtL3F0LW1hYy9lZGl0aW5n
L3Bhc3RlYm9hcmQvcGFzdGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiA5Mjc4
MSkKKysrIExheW91dFRlc3RzL3BsYXRmb3JtL3F0LW1hYy9lZGl0aW5nL3Bhc3RlYm9hcmQvcGFz
dGUtY29kZS1pbi1wcmUtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xLDEyICswLDAg
QEAKLVRoaXMgdGVzdHMgYSBidWcgd2hlbiBjb3B5aW5nIEhUTUwgbWFya3VwIGluc2lkZSA8cHJl
PiB0YWdzLiBXaGVuIHBhc3RlZCwgdGhpcyBjb250ZW50IHdvdWxkIGFwcGVhciBhcyB0aGUgcmVu
ZGVyZWQgZm9ybSBvZiB0aGF0IG1hcmt1cC4KLVlvdSBzaG91bGQgc2VlIG1hcmt1cCBpbiB0aGUg
ZWRpdGFibGUgcmVnaW9uIGJlbG93LiBTZWUgPHJkYXI6Ly81MDI3ODU3Pi4KLXwgPHByZT4KLXwg
ICBjb250ZW50ZWRpdGFibGU9InRydWUiCi18ICAgaWQ9InByZSIKLXwgICA8c3Bhbj4KLXwgICAg
IGNsYXNzPSJBcHBsZS1zdHlsZS1zcGFuIgotfCAgICAgc3R5bGU9ImZvbnQtZmFtaWx5OiAnVGlt
ZXMgTmV3IFJvbWFuJzsgd2hpdGUtc3BhY2U6IG5vcm1hbDsgIgotfCAgICAgPHByZT4KLXwgICAg
ICAgY29udGVudGVkaXRhYmxlPSJ0cnVlIgotfCAgICAgICBpZD0icHJlIgotfCAgICAgICAiPGlu
cHV0IHR5cGU9J2J1dHRvbic+Zm9vPGJyPmJhcjxiPmJhejwvYj48I3NlbGVjdGlvbi1jYXJldD4i
Cg==
</data>
<flag name="review"
          id="99221"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>