<?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>66027</bug_id>
          
          <creation_ts>2011-08-10 18:33:27 -0700</creation_ts>
          <short_desc>Implementation for &quot;nav-up&quot; &quot;nav-down&quot; &quot;nav-left&quot; &quot;nav-right&quot; properties in CSS3-UI module</short_desc>
          <delta_ts>2013-10-08 05:41:11 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>CSS</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc>http://dev.w3.org/csswg/css3-ui/#nav-dir</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Enhancement</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="kyounga">kyounga.ra</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>7raivis</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>cfleizach</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>cshu</cc>
    
    <cc>efidler</cc>
    
    <cc>eoconnor</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>kennyluck</cc>
    
    <cc>macpherson</cc>
    
    <cc>mario</cc>
    
    <cc>sangwhan</cc>
    
    <cc>sergio</cc>
    
    <cc>shanestephens</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>syoichi</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yael</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>449548</commentid>
    <comment_count>0</comment_count>
    <who name="kyounga">kyounga.ra</who>
    <bug_when>2011-08-10 18:33:27 -0700</bug_when>
    <thetext>Implementation for &quot;nav-up&quot; &quot;nav-down&quot; &quot;nav-left&quot; &quot;nav-right&quot; properties in CSS3-UI module

the latest standards
http://dev.w3.org/csswg/css3-ui/#nav-dir

This feature is necessary for a minor devices (without  mouse device). 
As the standards says, 
the author can define the directional focus navigation following the author&apos;s intension, instead of the browser&apos;s default behavior.

I think this feature can replace some JavaScript code which is made for special directional focus navigation by the author</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449567</commentid>
    <comment_count>1</comment_count>
    <who name="Shane Stephens">shanestephens</who>
    <bug_when>2011-08-10 20:21:19 -0700</bug_when>
    <thetext>Note that this specification is still an Editors Draft, which means that it may change at any time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449587</commentid>
    <comment_count>2</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2011-08-10 21:51:49 -0700</bug_when>
    <thetext>As mentioned in antonio&apos;s question on webkit-dev, I wonder what is difference between spatial navigation and this feature. If operation is similar to Spatial Navigation, it seems this feature can be implemented by Spatial Navigation. 

And,  I&apos;m not sure if this spec is sufficiently stable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449751</commentid>
    <comment_count>3</comment_count>
    <who name="kyounga">kyounga.ra</who>
    <bug_when>2011-08-11 07:15:27 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; As mentioned in antonio&apos;s question on webkit-dev, I wonder what is difference between spatial navigation and this feature. If operation is similar to Spatial Navigation, it seems this feature can be implemented by Spatial Navigation. 
&gt; 
&gt; And,  I&apos;m not sure if this spec is sufficiently stable.

I think these property is new feature in addition to a &quot;spatial navigation&quot; which browsers provide by default.
If &lt;a&gt; element with &quot;nav-up:auto&quot; has focused and the user press &quot;up arrow key&quot;, the browser use a spatial navigation, or if there is &quot;nav-up:#foo&quot;, the browser send a focus the element with &quot;id=foo&quot; attribute. 

So, I think if I can reuse the fragment link function, it might NOT be a big deal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>449790</commentid>
    <comment_count>4</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2011-08-11 08:33:36 -0700</bug_when>
    <thetext>The definition of the nav-* properties is odd. No other CSS property has bare selectors as values, so we don&apos;t have any support for parsing those right now.

I&apos;d hold off implementing this until the CSS WG has had a chance to discuss this further. If you want to kick-start discussion, please email www-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>461146</commentid>
    <comment_count>5</comment_count>
      <attachid>106113</attachid>
    <who name="kyounga">kyounga.ra</who>
    <bug_when>2011-09-02 04:00:14 -0700</bug_when>
    <thetext>Created attachment 106113
initial patch for review.

I know css-style are discussing on using ID selector as CSS value.
just made an initial implementation only for review.

There are several issues to be discussed in my patch
1. Changed CSSGrammar.y
    - Added IDSEL as a value, checked for #15360 issue (IDSEL was removed by this issue.)
2. Added a new class member to RenderStyle, instead of pointer or smart pointer.
    - Is it memory waste? less memory fragmentation? good performance? 
    - I think that this property won&apos;t be used frequently but if it is used once, it may be used frequently in one page.

Simple unit-tests are completed.
- no &quot;nav-*&quot; property.
- simple &quot;nav-*&quot; property from CSS3-UI example.
- scrollable page.
- inherit value
- invalid target name = no work.
- target name = between two frames.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>531344</commentid>
    <comment_count>6</comment_count>
      <attachid>106113</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-01-06 13:38:29 -0800</bug_when>
    <thetext>Comment on attachment 106113
initial patch for review.

please provide a patch that applies to ToT</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539225</commentid>
    <comment_count>7</comment_count>
      <attachid>123237</attachid>
    <who name="kyounga">kyounga.ra</who>
    <bug_when>2012-01-19 18:40:58 -0800</bug_when>
    <thetext>Created attachment 123237
initial patch for the latest webkit. 

Review this, please.
- Opera&apos;s supported already it. 
- These properties are used  popularly on web content in TV industry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539271</commentid>
    <comment_count>8</comment_count>
      <attachid>123237</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2012-01-19 21:58:24 -0800</bug_when>
    <thetext>Comment on attachment 123237
initial patch for the latest webkit. 

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

patch still does not apply it seems.

anyways, some nitpicks:

&gt; Source/WebCore/page/FocusController.cpp:795
&gt; +    RenderObject* renderer = focusedNode ? focusedNode-&gt;renderer() : 0;
&gt; +
&gt; +    if (!renderer)

drop extran line here.

&gt; Source/WebCore/page/FocusController.cpp:833
&gt; +    if (target == &quot;current&quot;)
&gt; +        targetFrame = curFrame;
&gt; +    else if (target == &quot;root&quot;)
&gt; +        targetFrame = curFrame-&gt;tree()-&gt;top();

DEFINE_STATIC_LOCAL(AtomicString, Current, (&quot;current&quot;));
DEFINE_STATIC_LOCAL(AtomicString, Root, (&quot;root&quot;))

&gt; Source/WebCore/page/FocusController.cpp:844
&gt; +    if (!anchorNode)
&gt; +        return false;
&gt; +    // if it&apos;s same with the current focused, it should be consumed.

add an extra line here.

if -&gt; If

&gt; Source/WebCore/page/FocusController.cpp:852
&gt; +    bool successfullyFocused = setFocusedNode(anchorNode, targetFrame);
&gt; +
&gt; +    if (successfullyFocused)

drop extra line here.

&gt; Source/WebCore/page/FocusController.cpp:854
&gt; +        m_page-&gt;chrome()-&gt;focusedNodeChanged(anchorNode);
&gt; +    return true;    

add an extra line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540129</commentid>
    <comment_count>9</comment_count>
      <attachid>123446</attachid>
    <who name="kyounga">kyounga.ra</who>
    <bug_when>2012-01-21 06:13:31 -0800</bug_when>
    <thetext>Created attachment 123446
Patch_v2 is including the reviewer&apos;s comment.

I&apos;ve attached a new patch following the comment from Antonio Gomes.

My patch includes two new files. 
I build and tested this patch only on my mac, with XCode project. 
I think that&apos;s a why the build bot makes fail log for cr-linux, qt, gtk, win.
(&quot;style&quot; also has fail log even though I checked check-webkit-style script)
Should I modify project files or build scripts for other platform? 
Honestly, I don&apos;t know how to do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>581549</commentid>
    <comment_count>10</comment_count>
    <who name="kyounga">kyounga.ra</who>
    <bug_when>2012-03-18 18:09:20 -0700</bug_when>
    <thetext>Is there someone to review this?
Review this patch, Please....

I think it&apos;s a useful feature and not a big deal, except css parser change. 
Any comment is welcome.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671140</commentid>
    <comment_count>11</comment_count>
      <attachid>123446</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-17 03:50:19 -0700</bug_when>
    <thetext>Comment on attachment 123446
Patch_v2 is including the reviewer&apos;s comment.

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Need a short description and bug URL (OOPS!)

It looks you need to study how to write changelog first before submitting a patch. Please read webkit contribution guideline first.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>671151</commentid>
    <comment_count>12</comment_count>
      <attachid>123446</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-07-17 04:03:54 -0700</bug_when>
    <thetext>Comment on attachment 123446
Patch_v2 is including the reviewer&apos;s comment.

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

In my opinion, this patch should to have test cases as well. Then, I think reviewers can start to review this patch. By the way, I wonder if you notify this new feature to webkit-dev. If you didn&apos;t it, you have to do it first.

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Need a short description and bug URL (OOPS!)
&gt; 
&gt; It looks you need to study how to write changelog first before submitting a patch. Please read webkit contribution guideline first.

WebKit contribution guidance.
 - http://www.webkit.org/coding/contributing.html

&gt; Source/WebCore/css/CSSStyleApplyProperty.cpp:1625
&gt; +                || primitiveValue-&gt;primitiveType() == CSSPrimitiveValue::CSS_PARSER_HEXCOLOR)

Wrong indentation for *||* operator.

&gt; Source/WebCore/css/CSSStyleSelector.cpp:4465
&gt; +        for (size_t i = 0; i &lt; 2; i++) {

WebKit prefers to use ++i instead of i++.

&gt; Source/WebCore/css/CSSStyleSelector.h:355
&gt; +    StyleNavigationValue getStyleNavigationValue(CSSValue*);

Nit : Add an empty line.

&gt; Source/WebCore/page/FocusController.cpp:840
&gt; +    // TODO:// which one is right?

WebKit prefer to use FIXME: instead of TODO:

&gt; Source/WebCore/rendering/style/StyleNavigationData.h:2
&gt; + * Copyright (C) 2011 Kyounga Ra (kyounga.ra@gmail.com)

s/2011/2012/g

&gt; Source/WebCore/rendering/style/StyleNavigationData.h:33
&gt; +    StyleNavigationData(const StyleNavigationData&amp; o)

Use *explicit* keyword.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902980</commentid>
    <comment_count>13</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-24 09:30:27 -0700</bug_when>
    <thetext>The CSS WG agreed to remove this feature recently. See discussion in bug 95178. Marking as Resolved/Invalid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902982</commentid>
    <comment_count>14</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-06-24 09:31:47 -0700</bug_when>
    <thetext>*** Bug 95178 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>902998</commentid>
    <comment_count>15</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-06-24 10:38:42 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; The CSS WG agreed to remove this feature recently. See discussion in bug 95178. Marking as Resolved/Invalid.

Not &quot;remove&quot;, but just &quot;don&apos;t include in level 3&quot;, which means they will likely get postponed to level 4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911547</commentid>
    <comment_count>16</comment_count>
      <attachid>207442</attachid>
    <who name="kyounga">kyounga.ra</who>
    <bug_when>2013-07-25 02:24:24 -0700</bug_when>
    <thetext>Created attachment 207442
patch for latest webkit

patch for latest webkit. 
webkit-style is checked.

Even though nav-dir properties was dropped from CSS3, it is still demanded from next CSS4 or TV industry.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911604</commentid>
    <comment_count>17</comment_count>
      <attachid>207442</attachid>
    <who name="Antonio Gomes">tonikitoo</who>
    <bug_when>2013-07-25 07:17:10 -0700</bug_when>
    <thetext>Comment on attachment 207442
patch for latest webkit

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

It needs review on the style change. I only reviewed it overly and specially the FocusController change.

1) it needs a proper changelog entry
2) it needs tests. maybe lots...

r- for now. It looks to be in the right track though.

&gt; Source/WebCore/ChangeLog:9
&gt; +        Support directional focus navigation properties(nav-[dir]) in CSS UI module.
&gt; +        https://bugs.webkit.org/show_bug.cgi?id=66027
&gt; +
&gt; +        Reviewed by NOBODY (OOPS!).
&gt; +
&gt; +        No new tests (OOPS!).
&gt; +

Please explain your solution here, preferably with per function change entries (see below)

&gt; Source/WebCore/page/FocusController.cpp:945
&gt; +    // If we were in the autoscroll/panScroll mode we want to stop it.
&gt; +    curFrame-&gt;eventHandler()-&gt;stopAutoscrollTimer();

this needs a test, I would say.

&gt; Source/WebCore/page/FocusController.cpp:962
&gt; +    if (focused == anchor)
&gt; +        return true;

this needs a test.

&gt; Source/WebCore/page/FocusController.cpp:964
&gt; +    anchor-&gt;scrollIntoViewIfNeeded(false);

add a comment saying what &quot;false&quot; is. e.g. (false /*bleh*/)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>911646</commentid>
    <comment_count>18</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-07-25 09:35:59 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Even though nav-dir properties was dropped from CSS3, it is still demanded from next CSS4 or TV industry.

While I agree with you that directional navigation is necessary,implementing this portion of the current specification is short-sighted. The draft has serious problems that will result in formal objections to the W3C if they remained unaddressed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912205</commentid>
    <comment_count>19</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-07-26 20:09:16 -0700</bug_when>
    <thetext>This needs a feature flag (since it does not have platform integration, you can probably enable it by default), an experimental prefix, and tests; a lot of tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>912206</commentid>
    <comment_count>20</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2013-07-26 20:10:32 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #16)
&gt; &gt; Even though nav-dir properties was dropped from CSS3, it is still demanded from next CSS4 or TV industry.
&gt; 
&gt; While I agree with you that directional navigation is necessary,implementing this portion of the current specification is short-sighted. The draft has serious problems that will result in formal objections to the W3C if they remained unaddressed.

Let&apos;s be constructive. Can you share which problems should block this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>915018</commentid>
    <comment_count>21</comment_count>
    <who name="James Craig">jcraig</who>
    <bug_when>2013-08-06 19:28:38 -0700</bug_when>
    <thetext>Objections sent to the CSS working group on www-style list.
http://lists.w3.org/Archives/Public/www-style/2013May/0076.html

Another FYI, nav-up/down/left/right were pushed to CSS4 but according to Leif: &quot;[CSS3] retains nav-up,
nav-down, nav-left, nav-right [and marked as at-risk, but], nav-index is still
postponed.&quot; http://lists.w3.org/Archives/Public/www-style/2013Jul/0711.html</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>106113</attachid>
            <date>2011-09-02 04:00:14 -0700</date>
            <delta_ts>2012-01-19 18:40:58 -0800</delta_ts>
            <desc>initial patch for review.</desc>
            <filename>66027_1.patch</filename>
            <type>text/plain</type>
            <size>33242</size>
            <attacher name="kyounga">kyounga.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDk0Mzk3KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTA2IEBACisyMDExLTA5LTAyICBLeW91bmdh
IFJhICA8a3lvdW5nYS5yYUBnbWFpbC5jb20+CisKKyAgICAgICAgSW1wbGVtZW50YXRpb24gZm9y
ICJuYXYtdXAiICJuYXYtZG93biIgIm5hdi1sZWZ0IiAibmF2LXJpZ2h0IiBwcm9wZXJ0aWVzIGlu
IENTUzMtVUkgbW9kdWxlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD02NjAyNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIE5vIG5ldyB0ZXN0cy4gKE9PUFMhKQorCisgICAgICAgICogV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFy
YXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmF2RGlyVG9DU1NWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NTVmFs
dWUpOgorICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1BhcnNl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAg
ICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5
UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eU5hdkRpcmVjdGlv
bjo6QXBwbHlQcm9wZXJ0eU5hdkRpcmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVBy
b3BlcnR5TmF2RGlyZWN0aW9uOjphcHBseUluaGVyaXRWYWx1ZSk6CisgICAgICAgIChXZWJDb3Jl
OjpBcHBseVByb3BlcnR5TmF2RGlyZWN0aW9uOjphcHBseUluaXRpYWxWYWx1ZSk6CisgICAgICAg
IChXZWJDb3JlOjpBcHBseVByb3BlcnR5TmF2RGlyZWN0aW9uOjphcHBseVZhbHVlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVBcHBseVByb3BlcnR5
KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U1N0eWxlU2VsZWN0b3I6OmdldFN0eWxlTmF2aWdhdGlvblZhbHVlKToKKyAgICAgICAgKiBjc3Mv
Q1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKToK
KyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpG
b2N1c0NvbnRyb2xsZXI6OmhhbmRsZUNTU0ZvY3VzTmF2aWdhdGlvbik6CisgICAgICAgICogcGFn
ZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpuYXZEb3duKToKKyAgICAg
ICAgKFdlYkNvcmU6OkluaGVyaXRlZEZsYWdzOjpuYXZMZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6
OkluaGVyaXRlZEZsYWdzOjpuYXZSaWdodCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhlcml0ZWRG
bGFnczo6bmF2VXApOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldE5hdkRv
d24pOgorICAgICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldE5hdkxlZnQpOgorICAg
ICAgICAoV2ViQ29yZTo6SW5oZXJpdGVkRmxhZ3M6OnNldE5hdlJpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6OkluaGVyaXRlZEZsYWdzOjpzZXROYXZVcCk6CisgICAgICAgIChXZWJDb3JlOjpJbmhl
cml0ZWRGbGFnczo6aW5pdGlhbFN0eWxlTmF2aWdhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1N0eWxlTmF2aWdhdGlvbkRhdGEuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpT
dHlsZU5hdmlnYXRpb25EYXRhOjpTdHlsZU5hdmlnYXRpb25EYXRhKToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlTmF2aWdhdGlvbkRhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVOYXZpZ2F0aW9uRGF0YTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZU5hdmlnYXRpb25EYXRhOjp1cCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU5hdmlnYXRpb25E
YXRhOjpkb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvbkRhdGE6OmxlZnQp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVOYXZpZ2F0aW9uRGF0YTo6cmlnaHQpOgorICAgICAg
ICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZU5hdmlnYXRpb25WYWx1ZS5oOiBBZGRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvblZhbHVlOjptX3RhcmdldCk6CisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZU5hdmlnYXRpb25WYWx1ZTo6aXNBdXRvKToKKyAgICAgICAgKFdlYkNvcmU6
OlN0eWxlTmF2aWdhdGlvblZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlTmF2aWdhdGlvblZhbHVlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxl
TmF2aWdhdGlvblZhbHVlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVOYXZp
Z2F0aW9uVmFsdWU6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvblZhbHVl
Ojp0YXJnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0
ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6
OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVuZGVyaW5nL3N0eWxl
L1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKworMjAxMS0wOS0wMSAgS3lvdW5nYSBSYSAg
PGt5b3VuZ2EucmFAZ21haWwuY29tPgorCisgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yICJuYXYt
dXAiICJuYXYtZG93biIgIm5hdi1sZWZ0IiAibmF2LXJpZ2h0IiBpbiBDU1MzLVVJIG1vZHVsZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYwMjcKKwor
ICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAgICogY3NzL0NTU1Byb3BlcnR5TmFt
ZXMuaW46CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OnBhcnNlVmFsdWUpOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmg6
CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTU3R5bGVTZWxlY3Rvcjo6Z2V0U3R5bGVOYXZpZ2F0aW9uVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eSk6CisgICAgICAgICogY3NzL0NT
U1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5
TmF2RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlyb3BlcnR5OjpD
U1NTdHlsZUFwcGx5UHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NDb21wdXRlZFN0eWxlRGVj
bGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmF2RGlyVG9DU1NWYWx1ZSk6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb246OmdldFByb3BlcnR5Q1NT
VmFsdWUpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6Om5hdlVwKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clN0eWxlOjpuYXZEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpuYXZMZWZ0
KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjpuYXZSaWdodCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJTdHlsZTo6c2V0TmF2VXApOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U3R5bGU6OnNldE5hdkRvd24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE5h
dkxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU3R5bGU6OnNldE5hdlJpZ2h0KToKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlOjppbml0aWFsU3R5bGVOYXZpZ2F0aW9uKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZpZ2F0aW9uRGF0YS5oOiBBZGRlZC4KKyAg
ICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZpZ2F0aW9uVmFsdWUuaDogQWRkZWQuCisg
ICAgICAgICogcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDogQWRk
ZWQgbV9uYXYKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVk
RGF0YS5jcHA6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6RXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dFdmVudEhhbmRsZXIpOgorICAgICAgICAq
IHBhZ2UvRm9jdXNDb250cm9sbGVyLmg6CisgICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIu
Y3BwOiAKKyAgICAgICAgKFdlYkNvcmU6OkZvY3VzQ29udHJvbGxlcjo6aGFuZGxlQ1NTRm9jdXNO
YXZpZ2F0aW9uKToKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
CisKIDIwMTEtMDktMDIgIFBoaWxpcHBlIE5vcm1hbmQgIDxwbm9ybWFuZEBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtXZWJBdWRpb10gVW5kZWNsYXJlZCBkZXBlbmRlbmN5IHRvIFZJREVPCkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA5MzY2OCkKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzE2Miw2ICszMTYyLDggQEAKIAkJOTNG
OUI3QTAwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlFMEJBNjAzMjYwMDg1NDA2
NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1NDA2
NCAvKiBKU0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmgg
Ki87IH07CiAJCTkzRkRBRkNBMEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24u
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkRBRkM5
MEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLzsgc2V0dGluZ3MgPSB7
QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NUUyQjI2NTE0MDUwN0E0MDBERTk0
N0YgLyogU3R5bGVOYXZpZ2F0aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDk1RTJCMjY0MTQwNTA3QTQwMERFOTQ3RiAvKiBTdHlsZU5hdmln
YXRpb25WYWx1ZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CisJCTk1RTJCMjcwMTQwNTA4MjgwMERFOTQ3RiAvKiBTdHlsZU5hdmlnYXRpb25EYXRhLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NUUyQjI2RjE0
MDUwODI4MDBERTk0N0YgLyogU3R5bGVOYXZpZ2F0aW9uRGF0YS5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTc3MTA3RDk3NTIwMEE1MEE3
QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA5NzA1OTk3MzEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2su
Y3BwICovOyB9OwogCQk5NzA1OTk3ODEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2su
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk3MDU5OTc0
MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk3MDU5OTc5MTA3RDk3NTIwMEE1MEE3QyAv
KiBQb2xpY3lDaGVja2VyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IDk3MDU5OTc1MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDaGVja2VyLmNwcCAq
LzsgfTsKQEAgLTk3NjcsNiArOTc2OSw4IEBACiAJCTkzRjlCNzlFMEJBNjAzMjYwMDg1NDA2NCAv
KiBKU0NEQVRBU2VjdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0NEQVRBU2VjdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTkzRjlC
NzlGMEJBNjAzMjYwMDg1NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBKU0NEQVRBU2VjdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk5M0ZEQUZDOTBCMTEzMDc0MDBFMjc0NkYgLyogRWRpdG9ySW5zZXJ0QWN0aW9uLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFZGl0b3JJbnNlcnRBY3Rpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJOTVFMkIyNjQxNDA1MDdBNDAwREU5NDdGIC8q
IFN0eWxlTmF2aWdhdGlvblZhbHVlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9
IFN0eWxlTmF2aWdhdGlvblZhbHVlLmg7IHBhdGggPSBzdHlsZS9TdHlsZU5hdmlnYXRpb25WYWx1
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk5NUUyQjI2RjE0MDUwODI4MDBERTk0
N0YgLyogU3R5bGVOYXZpZ2F0aW9uRGF0YS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5h
bWUgPSBTdHlsZU5hdmlnYXRpb25EYXRhLmg7IHBhdGggPSBzdHlsZS9TdHlsZU5hdmlnYXRpb25E
YXRhLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTczMTA3RDk3NTIwMEE1
MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQb2xpY3lDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CTk3MDU5OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk5NzA1OTk3NTEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2hlY2tlci5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2xpY3lDaGVja2VyLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE4NzY2LDYgKzE4NzcwLDggQEAKIAkJ
QkM4QzhGQUEwRERDRDJGMjAwQjU5MkY0IC8qIHN0eWxlICovID0gewogCQkJaXNhID0gUEJYR3Jv
dXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJCQk5NUUyQjI2RjE0MDUwODI4MDBERTk0N0YgLyogU3R5
bGVOYXZpZ2F0aW9uRGF0YS5oICovLAorCQkJCTk1RTJCMjY0MTQwNTA3QTQwMERFOTQ3RiAvKiBT
dHlsZU5hdmlnYXRpb25WYWx1ZS5oICovLAogCQkJCUJDNUVCNUUwMEU4MUJFODcwMEIyNTk2NSAv
KiBCb3JkZXJEYXRhLmggKi8sCiAJCQkJQkM1RUI1REEwRTgxQjdFQTAwQjI1OTY1IC8qIEJvcmRl
clZhbHVlLmggKi8sCiAJCQkJQkM1RUI1REUwRTgxQjlBQjAwQjI1OTY1IC8qIENvbGxhcHNlZEJv
cmRlclZhbHVlLmggKi8sCkBAIC0yMzM5OCw2ICsyMzQwNCw4IEBACiAJCQkJRkQyM0ExMjYxM0Y1
RkE1OTAwRjY3MDAxIC8qIEpTTWVkaWFFbGVtZW50QXVkaW9Tb3VyY2VOb2RlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlERjlBRkQ3MjEzRkMzMUQ4MDAxNUZFQjcgLyogTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTM1MDBGMzIxM0ZERTNCRTAw
OTlFQzI0IC8qIE5TU2Nyb2xsZXJJbXBEZXRhaWxzLmggaW4gSGVhZGVycyAqLywKKwkJCQk5NUUy
QjI2NTE0MDUwN0E0MDBERTk0N0YgLyogU3R5bGVOYXZpZ2F0aW9uVmFsdWUuaCBpbiBIZWFkZXJz
ICovLAorCQkJCTk1RTJCMjcwMTQwNTA4MjgwMERFOTQ3RiAvKiBTdHlsZU5hdmlnYXRpb25EYXRh
LmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9j
ZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0
eWxlRGVjbGFyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1ND
b21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCShyZXZpc2lvbiA5MzY2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTcsNiArMTE3LDEwIEBAIHN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQcm9wZXJ0aWVz
W10gPSAKICAgICBDU1NQcm9wZXJ0eU1heFdpZHRoLAogICAgIENTU1Byb3BlcnR5TWluSGVpZ2h0
LAogICAgIENTU1Byb3BlcnR5TWluV2lkdGgsCisgICAgQ1NTUHJvcGVydHlOYXZEb3duLAorICAg
IENTU1Byb3BlcnR5TmF2TGVmdCwKKyAgICBDU1NQcm9wZXJ0eU5hdlJpZ2h0LAorICAgIENTU1By
b3BlcnR5TmF2VXAsCiAgICAgQ1NTUHJvcGVydHlPcGFjaXR5LAogICAgIENTU1Byb3BlcnR5T3Jw
aGFucywKICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwKQEAgLTc5NCw2ICs3OTgsMTUgQEAg
c3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IGNvdW50ZXJUb0NTUwogICAgIHJldHVybiBsaXN0
LnJlbGVhc2UoKTsKIH0KIAorc3RhdGljIFBhc3NSZWZQdHI8Q1NTVmFsdWU+IG5hdkRpclRvQ1NT
VmFsdWUoY29uc3QgU3R5bGVOYXZpZ2F0aW9uVmFsdWUmIG5hdlZhbHVlLCBDU1NQcmltaXRpdmVW
YWx1ZUNhY2hlKiBwcmltaXRpdmVWYWx1ZUNhY2hlKQoreworICAgIFJlZlB0cjxDU1NWYWx1ZUxp
c3Q+IGxpc3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgbGlz
dC0+YXBwZW5kKHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKG5hdlZhbHVlLmlkKCku
c3RyaW5nKCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CisgICAgbGlzdC0+YXBw
ZW5kKHByaW1pdGl2ZVZhbHVlQ2FjaGUtPmNyZWF0ZVZhbHVlKG5hdlZhbHVlLnRhcmdldCgpLnN0
cmluZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOworCisgICAgcmV0dXJuIGxp
c3QucmVsZWFzZSgpOworfQorCiBzdGF0aWMgdm9pZCBsb2dVbmltcGxlbWVudGVkUHJvcGVydHlJ
RChpbnQgcHJvcGVydHlJRCkKIHsKICAgICBERUZJTkVfU1RBVElDX0xPQ0FMKEhhc2hTZXQ8aW50
PiwgcHJvcGVydHlJRFNldCwgKCkpOwpAQCAtMTI3OSw2ICsxMjkyLDE0IEBAIFBhc3NSZWZQdHI8
Q1NTVmFsdWU+IENTU0NvbXB1dGVkU3R5bGVEZWMKICAgICAgICAgICAgIHJldHVybiBwcmltaXRp
dmVWYWx1ZUNhY2hlLT5jcmVhdGVWYWx1ZShzdHlsZS0+bWluSGVpZ2h0KCkpOwogICAgICAgICBj
YXNlIENTU1Byb3BlcnR5TWluV2lkdGg6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFs
dWVDYWNoZS0+Y3JlYXRlVmFsdWUoc3R5bGUtPm1pbldpZHRoKCkpOworICAgICAgICBjYXNlIENT
U1Byb3BlcnR5TmF2RG93bjoKKyAgICAgICAgICAgIHJldHVybiBuYXZEaXJUb0NTU1ZhbHVlKHN0
eWxlLT5uYXZEb3duKCksIHByaW1pdGl2ZVZhbHVlQ2FjaGUpOworICAgICAgICBjYXNlIENTU1By
b3BlcnR5TmF2TGVmdDoKKyAgICAgICAgICAgIHJldHVybiBuYXZEaXJUb0NTU1ZhbHVlKHN0eWxl
LT5uYXZMZWZ0KCksIHByaW1pdGl2ZVZhbHVlQ2FjaGUpOworICAgICAgICBjYXNlIENTU1Byb3Bl
cnR5TmF2UmlnaHQ6CisgICAgICAgICAgICByZXR1cm4gbmF2RGlyVG9DU1NWYWx1ZShzdHlsZS0+
bmF2UmlnaHQoKSwgcHJpbWl0aXZlVmFsdWVDYWNoZSk7CisgICAgICAgIGNhc2UgQ1NTUHJvcGVy
dHlOYXZVcDoKKyAgICAgICAgICAgIHJldHVybiBuYXZEaXJUb0NTU1ZhbHVlKHN0eWxlLT5uYXZV
cCgpLCBwcmltaXRpdmVWYWx1ZUNhY2hlKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNp
dHk6CiAgICAgICAgICAgICByZXR1cm4gcHJpbWl0aXZlVmFsdWVDYWNoZS0+Y3JlYXRlVmFsdWUo
c3R5bGUtPm9wYWNpdHkoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpOwogICAgICAg
ICBjYXNlIENTU1Byb3BlcnR5T3JwaGFuczoKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQko
cmV2aXNpb24gOTM2NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMDAsNyArMTAwLDcgQEAgc3RhdGljIGludCBjc3N5eWxleChZWVNUWVBF
KiB5eWx2YWwsIHZvaQogCiAlfQogCi0lZXhwZWN0IDU0CislZXhwZWN0IDU1CiAKICVub25hc3Nv
YyBMT1dFU1RfUFJFQwogCkBAIC0xMzk5LDYgKzEzOTksNyBAQCB0ZXJtOgogICB8IFVSSSBtYXli
ZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRp
dmVWYWx1ZTo6Q1NTX1VSSTsgfQogICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQkLmlk
ID0gMDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VO
SUNPREVfUkFOR0U7IH0KICAgfCBIRVggbWF5YmVfc3BhY2UgeyAkJC5pZCA9IDA7ICQkLnN0cmlu
ZyA9ICQxOyAkJC51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1I7
IH0KKyAgfCBJRFNFTCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7ICQk
LnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORzsgfQogICB8ICcjJyBtYXliZV9z
cGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gQ1NTUGFyc2VyU3RyaW5nKCk7ICQkLnVuaXQg
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUjsgfSAvKiBIYW5kbGUgZXJy
b3IgY2FzZTogImNvbG9yOiAjOyIgKi8KICAgLyogRklYTUU6IGFjY29yZGluZyB0byB0aGUgc3Bl
Y3MgYSBmdW5jdGlvbiBjYW4gaGF2ZSBhIHVuYXJ5X29wZXJhdG9yIGluIGZyb250LiBJIGtub3cg
bm8gY2FzZSB3aGVyZSB0aGlzIG1ha2VzIHNlbnNlICovCiAgIHwgZnVuY3Rpb24gewpJbmRleDog
U291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5jcHAJKHJldmlzaW9uIDkzNjY4KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE4MDYsNiArMTgwNiwyNCBA
QCBib29sIENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGlmIChp
ZCA9PSBDU1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRyYXN0
KQogICAgICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAg
ICBjYXNlIENTU1Byb3BlcnR5TmF2RG93bjogLy8gYXV0byB8IDxpZD4gdGFyZ2V0ZnJhbWUgfCBp
bmhlcml0LgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVy
dHlOYXZSaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6CisgICAgICAgIGlmIChpZCA9
PSBDU1NWYWx1ZUF1dG8KKyAgICAgICAgICAgIHx8IChudW0gPT0gMSAmJiAodmFsdWUtPnVuaXQg
PT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcgfHwgdmFsdWUtPnVuaXQgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19QQVJTRVJfSEVYQ09MT1IpKSkgeworICAgICAgICAgICAgdmFsdWUt
PnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORzsKKyAgICAgICAgICAgIHZhbGlk
UHJpbWl0aXZlID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChudW0gPT0gMikgeworICAgICAg
ICAgICAgUmVmUHRyPENTU1ZhbHVlTGlzdD4gbGlzdCA9IENTU1ZhbHVlTGlzdDo6Y3JlYXRlU3Bh
Y2VTZXBhcmF0ZWQoKTsKKyAgICAgICAgICAgIHdoaWxlICh2YWx1ZSkgeworICAgICAgICAgICAg
ICAgIGxpc3QtPmFwcGVuZChwcmltaXRpdmVWYWx1ZUNhY2hlKCktPmNyZWF0ZVZhbHVlKHZhbHVl
LT5zdHJpbmcsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HKSk7CisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBtX3ZhbHVlTGlzdC0+bmV4dCgpOworICAgICAgICAgICAgfQorICAgICAgICAg
ICAgcGFyc2VkVmFsdWUgPSBsaXN0LnJlbGVhc2UoKTsKKyAgICAgICAgfSBlbHNlCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIGJyZWFrOwogICAgIC8vIEVuZCBvZiBDU1MzIHBy
b3BlcnRpZXMKIAogICAgIC8vIEFwcGxlIHNwZWNpZmljIHByb3BlcnRpZXMuICBUaGVzZSB3aWxs
IG5ldmVyIGJlIHN0YW5kYXJkaXplZCBhbmQgYXJlIHB1cmVseSB0bwpJbmRleDogU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHJldmlzaW9uIDkzNjY4KQorKysgU291cmNlL1dl
YkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4JKHdvcmtpbmcgY29weSkKQEAgLTExMSw2ICsx
MTEsMTAgQEAgbWF4LWhlaWdodAogbWF4LXdpZHRoCiBtaW4taGVpZ2h0CiBtaW4td2lkdGgKK25h
di1kb3duCituYXYtbGVmdAorbmF2LXJpZ2h0CituYXYtdXAKIG9wYWNpdHkKIC8vIEhvbm9yIC13
ZWJraXQtb3BhY2l0eSBhcyBhIHN5bm9ueW0gZm9yIG9wYWNpdHkuIFRoaXMgd2FzIHRoZSBvbmx5
IHN5bnRheCB0aGF0IHdvcmtlZCBpbiBTYWZhcmkgMS4xLAogLy8gYW5kIG1heSBiZSBpbiB1c2Ug
b24gc29tZSB3ZWJzaXRlcyBhbmQgd2lkZ2V0cy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCShyZXZpc2lvbiA5MzY2OCkKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03
NzAsNiArNzcwLDUwIEBAIHByaXZhdGU6CiAgICAgfQogfTsKIAorY2xhc3MgQXBwbHlQcm9wZXJ0
eU5hdkRpcmVjdGlvbiAgOiBwdWJsaWMgQXBwbHlQcm9wZXJ0eUJhc2UgeworcHVibGljOgorICAg
IEFwcGx5UHJvcGVydHlOYXZEaXJlY3Rpb24oY29uc3QgU3R5bGVOYXZpZ2F0aW9uVmFsdWUmIChS
ZW5kZXJTdHlsZTo6KmdldHRlcikoKSBjb25zdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdm9pZCAoUmVuZGVyU3R5bGU6OipzZXR0ZXIpKGNvbnN0IFN0eWxlTmF2aWdhdGlvblZh
bHVlJiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0eWxlTmF2aWdh
dGlvblZhbHVlJiAoKmluaXRpYWwpKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFN0eWxlTmF2aWdhdGlvblZhbHVlIChDU1NTdHlsZVNlbGVjdG9yOjoqZ2V0VmFsdWUpKENTU1Zh
bHVlKikpCisgICAgOiAgbV9nZXR0ZXIoZ2V0dGVyKQorICAgICwgbV9zZXR0ZXIoc2V0dGVyKQor
ICAgICwgbV9pbml0aWFsKGluaXRpYWwpCisgICAgLCBtX2dldFZhbHVlKGdldFZhbHVlKQorICAg
IHsKKyAgICB9CisKKyAgICB2aXJ0dWFsIHZvaWQgYXBwbHlJbmhlcml0VmFsdWUoQ1NTU3R5bGVT
ZWxlY3Rvciogc2VsZWN0b3IpIGNvbnN0CisgICAgeworICAgICAgICAoc2VsZWN0b3ItPnN0eWxl
KCktPiptX3NldHRlcikoKHNlbGVjdG9yLT5wYXJlbnRTdHlsZSgpLT4qbV9nZXR0ZXIpKCkpOwor
ICAgIH0KKyAgICAgICAgCisgICAgdmlydHVhbCB2b2lkIGFwcGx5SW5pdGlhbFZhbHVlKENTU1N0
eWxlU2VsZWN0b3IqIHNlbGVjdG9yKSBjb25zdAorICAgIHsKKyAgICAgICAgKHNlbGVjdG9yLT5z
dHlsZSgpLT4qbV9zZXR0ZXIpKCgqbV9pbml0aWFsKSgpKTsKKyAgICB9CisgICAgICAgIAorICAg
IHZpcnR1YWwgdm9pZCBhcHBseVZhbHVlKENTU1N0eWxlU2VsZWN0b3IqIHNlbGVjdG9yLCBDU1NW
YWx1ZSogdmFsdWUpIGNvbnN0CisgICAgeworICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSkgeworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVl
ID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisgICAgICAgIAorICAg
ICAgICAgICAgaWYgKHByaW1pdGl2ZVZhbHVlLT5nZXRJZGVudCgpID09IENTU1ZhbHVlQXV0bykK
KyAgICAgICAgICAgICAgICBhcHBseUluaXRpYWxWYWx1ZShzZWxlY3Rvcik7CisgICAgICAgICAg
ICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfU1RSSU5HCisgICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUtPnBy
aW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUikK
KyAgICAgICAgICAgICAgICAoc2VsZWN0b3ItPnN0eWxlKCktPiptX3NldHRlcikoKHNlbGVjdG9y
LT4qbV9nZXRWYWx1ZSkodmFsdWUpKTsKKyAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS0+aXNWYWx1
ZUxpc3QoKSkKKyAgICAgICAgICAgIChzZWxlY3Rvci0+c3R5bGUoKS0+Km1fc2V0dGVyKSgoc2Vs
ZWN0b3ItPiptX2dldFZhbHVlKSh2YWx1ZSkpOworICAgIH0KKyAgICAKK3Byb3RlY3RlZDoKKyAg
ICBjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgKFJlbmRlclN0eWxlOjoqbV9nZXR0ZXIpKCkg
Y29uc3Q7CisgICAgdm9pZCAoUmVuZGVyU3R5bGU6OiptX3NldHRlcikoY29uc3QgU3R5bGVOYXZp
Z2F0aW9uVmFsdWUmKTsKKyAgICBjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgKCptX2luaXRp
YWwpKCk7CisgICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgKENTU1N0eWxlU2VsZWN0b3I6OiptX2dl
dFZhbHVlKShDU1NWYWx1ZSopOworfTsKKwogY29uc3QgQ1NTU3R5bGVBcHBseVByb3BlcnR5JiBD
U1NTdHlsZUFwcGx5UHJvcGVydHk6OnNoYXJlZENTU1N0eWxlQXBwbHlQcm9wZXJ0eSgpCiB7CiAg
ICAgREVGSU5FX1NUQVRJQ19MT0NBTChDU1NTdHlsZUFwcGx5UHJvcGVydHksIGNzc1N0eWxlQXBw
bHlQcm9wZXJ0eUluc3RhbmNlLCAoKSk7CkBAIC05NjcsNiArMTAxMSwxMiBAQCBDU1NTdHlsZUFw
cGx5UHJvcGVydHk6OkNTU1N0eWxlQXBwbHlQcm9wCiAgICAgc2V0UHJvcGVydHlIYW5kbGVyKENT
U1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lzU3R5bGUsIG5ldyBBcHBseVByb3BlcnR5VGV4dEVt
cGhhc2lzU3R5bGUoKSk7CiAKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlaSW5k
ZXgsIG5ldyBBcHBseVByb3BlcnR5QXV0bzxpbnQ+KCZSZW5kZXJTdHlsZTo6ekluZGV4LCAmUmVu
ZGVyU3R5bGU6OnNldFpJbmRleCwgJlJlbmRlclN0eWxlOjpoYXNBdXRvWkluZGV4LCAmUmVuZGVy
U3R5bGU6OnNldEhhc0F1dG9aSW5kZXgpKTsKKworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQ
cm9wZXJ0eU5hdkRvd24sIG5ldyBBcHBseVByb3BlcnR5TmF2RGlyZWN0aW9uKCZSZW5kZXJTdHls
ZTo6bmF2RG93biwgJlJlbmRlclN0eWxlOjpzZXROYXZEb3duLCAmUmVuZGVyU3R5bGU6OmluaXRp
YWxTdHlsZU5hdmlnYXRpb24sICZDU1NTdHlsZVNlbGVjdG9yOjpnZXRTdHlsZU5hdmlnYXRpb25W
YWx1ZSkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eU5hdkxlZnQsIG5ldyBB
cHBseVByb3BlcnR5TmF2RGlyZWN0aW9uKCZSZW5kZXJTdHlsZTo6bmF2TGVmdCwgJlJlbmRlclN0
eWxlOjpzZXROYXZMZWZ0LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxTdHlsZU5hdmlnYXRpb24sICZD
U1NTdHlsZVNlbGVjdG9yOjpnZXRTdHlsZU5hdmlnYXRpb25WYWx1ZSkpOworICAgIHNldFByb3Bl
cnR5SGFuZGxlcihDU1NQcm9wZXJ0eU5hdlJpZ2h0LCBuZXcgQXBwbHlQcm9wZXJ0eU5hdkRpcmVj
dGlvbigmUmVuZGVyU3R5bGU6Om5hdlJpZ2h0LCAmUmVuZGVyU3R5bGU6OnNldE5hdlJpZ2h0LCAm
UmVuZGVyU3R5bGU6OmluaXRpYWxTdHlsZU5hdmlnYXRpb24sICZDU1NTdHlsZVNlbGVjdG9yOjpn
ZXRTdHlsZU5hdmlnYXRpb25WYWx1ZSkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9w
ZXJ0eU5hdlVwLCBuZXcgQXBwbHlQcm9wZXJ0eU5hdkRpcmVjdGlvbigmUmVuZGVyU3R5bGU6Om5h
dlVwLCAmUmVuZGVyU3R5bGU6OnNldE5hdlVwLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxTdHlsZU5h
dmlnYXRpb24sICZDU1NTdHlsZVNlbGVjdG9yOjpnZXRTdHlsZU5hdmlnYXRpb25WYWx1ZSkpOwor
ICAgIAogfQogCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJ
KHJldmlzaW9uIDkzNjY4KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01MTgwLDYgKzUxODAsMTAgQEAgdm9pZCBDU1NTdHlsZVNl
bGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRUZXh0
RW1waGFzaXNQb3NpdGlvbjoKICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0VGV4dEVtcGhhc2lz
U3R5bGU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eVpJbmRleDoKKyAgICBjYXNlIENTU1Byb3BlcnR5
TmF2RG93bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2TGVmdDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TmF2UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlVwOgogICAgICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKICAgICAgICAgcmV0dXJuOwogI2lmIEVOQUJMRShTVkcpCkBAIC01ODIz
LDYgKzU4MjcsMjcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBOaW5lUGllY2VJbWFnZQog
ICAgIGltYWdlLnNldFZlcnRpY2FsUnVsZSh2ZXJ0aWNhbFJ1bGUpOwogfQogCitTdHlsZU5hdmln
YXRpb25WYWx1ZSBDU1NTdHlsZVNlbGVjdG9yOjpnZXRTdHlsZU5hdmlnYXRpb25WYWx1ZShDU1NW
YWx1ZSogdmFsdWUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAg
IENTU1ZhbHVlTGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsK
KyAgICAgICAgU3RyaW5nSW1wbCogdmFsWzJdID0gezB9OworICAgICAgICBDU1NQcmltaXRpdmVW
YWx1ZSogcHJpbWl0aXZlVmFsdWUgPSAwOworCisgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgMjsgaSsrKSB7CisgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRo
b3V0Qm91bmRzQ2hlY2soaSk7CisgICAgICAgICAgICBpZiAoIWl0ZW0tPmlzUHJpbWl0aXZlVmFs
dWUoKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIHByaW1pdGl2ZVZh
bHVlID0gc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPihpdGVtKTsKKyAgICAgICAgICAg
IGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfU1RSSU5HKQorICAgICAgICAgICAgICAgIHZhbFtpXSA9IHByaW1pdGl2ZVZhbHVlLT5n
ZXRTdHJpbmdWYWx1ZSgpLmltcGwoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gU3R5bGVO
YXZpZ2F0aW9uVmFsdWUoQXRvbWljU3RyaW5nKHZhbFswXSksIEF0b21pY1N0cmluZyh2YWxbMV0p
KTsKKyAgICB9CisKKyAgICByZXR1cm4gU3R5bGVOYXZpZ2F0aW9uVmFsdWUoQXRvbWljU3RyaW5n
KHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5nZXRTdHJpbmdWYWx1ZSgp
KSk7Cit9CisKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgp
CiB7CiAgICAgaWYgKG1fc3R5bGUtPnRleHRTaXplQWRqdXN0KCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDkzNjY4KQorKysgU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMzI5LDcgKzMyOSw5
IEBAIHB1YmxpYzoKICAgICAgICAgdm9pZCBtYXBBbmltYXRpb25UaW1pbmdGdW5jdGlvbihBbmlt
YXRpb24qLCBDU1NWYWx1ZSopOwogCiAgICAgICAgIHZvaWQgbWFwTmluZVBpZWNlSW1hZ2UoQ1NT
UHJvcGVydHlJRCwgQ1NTVmFsdWUqLCBOaW5lUGllY2VJbWFnZSYpOwotICAgICAgICAKKworICAg
ICAgICBTdHlsZU5hdmlnYXRpb25WYWx1ZSBnZXRTdHlsZU5hdmlnYXRpb25WYWx1ZShDU1NWYWx1
ZSopOworCiAgICAgICAgIGJvb2wgY2FuU2hhcmVTdHlsZVdpdGhDb250cm9sKFN0eWxlZEVsZW1l
bnQqKSBjb25zdDsKIAogICAgICAgICB2b2lkIGFwcGx5UHJvcGVydHkoaW50IGlkLCBDU1NWYWx1
ZSopOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkocmV2aXNpb24gOTM2
NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTMwNDEsNiArMzA0MSw5IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0QXJyb3dF
dmVudEhhbmQKICAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5EZXNpZ25Nb2RlKCkpCiAg
ICAgICAgIHJldHVybjsKIAorICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+aGFuZGxl
Q1NTRm9jdXNOYXZpZ2F0aW9uKGZvY3VzRGlyZWN0aW9uKSkKKyAgICAgICAgcmV0dXJuOworCiAg
ICAgaWYgKHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5hZHZhbmNlRm9jdXMoZm9jdXNEaXJlY3Rp
b24sIGV2ZW50KSkKICAgICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCShyZXZpc2lvbiA5MzY2OCkK
KysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzc1LDQgKzc3NSw3NiBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3Vz
RGlyZWN0CiAgICAgcmV0dXJuIGNvbnN1bWVkOwogfQogCitib29sIEZvY3VzQ29udHJvbGxlcjo6
aGFuZGxlQ1NTRm9jdXNOYXZpZ2F0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAg
ICBGcmFtZSogY3VyRnJhbWUgPSBmb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBBU1NFUlQoY3Vy
RnJhbWUpOworICAgIAorICAgIERvY3VtZW50KiBmb2N1c2VkRG9jdW1lbnQgPSBjdXJGcmFtZS0+
ZG9jdW1lbnQoKTsKKyAgICBpZiAoIWZvY3VzZWREb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIAorICAgIE5vZGUqIGZvY3VzZWROb2RlID0gZm9jdXNlZERvY3VtZW50LT5mb2N1
c2VkTm9kZSgpOworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmb2N1c2VkTm9kZSA/IGZv
Y3VzZWROb2RlLT5yZW5kZXJlcigpIDogMDsKKyAgICAKKyAgICBpZiAoIXJlbmRlcmVyKQorICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgCisgICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgdmFsdWU7
CisgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRm9yd2Fy
ZDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uQmFja3dhcmQ6CisgICAgICAgIHJldHVybiBmYWxz
ZTsKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uVXA6CisgICAgICAgIHZhbHVlID0gcmVuZGVyZXIt
PnN0eWxlKCktPm5hdlVwKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9jdXNEaXJlY3Rp
b25Eb3duOgorICAgICAgICB2YWx1ZSA9IHJlbmRlcmVyLT5zdHlsZSgpLT5uYXZEb3duKCk7Cisg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25MZWZ0OgorICAgICAgICB2YWx1
ZSA9IHJlbmRlcmVyLT5zdHlsZSgpLT5uYXZMZWZ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKKyAgICAgICAgdmFsdWUgPSByZW5kZXJlci0+c3R5bGUo
KS0+bmF2UmlnaHQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbk5v
bmU6CisgICAgZGVmYXVsdDoKKyAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKyAgICAKKyAgICBpZiAodmFsdWUuaWQoKS5pc051bGwoKSB8fCB2YWx1
ZS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFyZ2V0ID0gdmFsdWUudGFyZ2V0KCk7CisgICAgRnJhbWUqIHRhcmdldEZyYW1l
ID0gMDsKKyAgICAKKyAgICAvLyBJZiB3ZSB3ZXJlIGluIHRoZSBhdXRvc2Nyb2xsL3BhblNjcm9s
bCBtb2RlIHdlIHdhbnQgdG8gc3RvcCBpdC4KKyAgICBjdXJGcmFtZS0+ZXZlbnRIYW5kbGVyKCkt
PnN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKyAgICAKKyAgICBpZiAodGFyZ2V0ID09ICJjdXJyZW50
IikKKyAgICAgICAgdGFyZ2V0RnJhbWUgPSBjdXJGcmFtZTsKKyAgICBlbHNlIGlmICh0YXJnZXQg
PT0gInJvb3QiKQorICAgICAgICB0YXJnZXRGcmFtZSA9IGN1ckZyYW1lLT50cmVlKCktPnRvcCgp
OworICAgIGVsc2UKKyAgICAgICAgdGFyZ2V0RnJhbWUgPSBjdXJGcmFtZS0+dHJlZSgpLT5maW5k
KHRhcmdldCk7CisgICAgCisgICAgLy8gVE9ETzovLyB3aGljaCBvbmUgaXMgcmlnaHQ/CisgICAg
aWYgKCF0YXJnZXRGcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB0YXJnZXRGcmFtZSA9
IGN1ckZyYW1lOworICAgIAorICAgIEVsZW1lbnQqIGFuY2hvck5vZGUgPSB0YXJnZXRGcmFtZS0+
ZG9jdW1lbnQoKS0+ZmluZEFuY2hvcih2YWx1ZS5pZCgpLnN0cmluZygpKTsKKyAgICBpZiAoIWFu
Y2hvck5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBpZiBpdCdzIHNhbWUgd2l0
aCB0aGUgY3VycmVudCBmb2N1c2VkLCBpdCBzaG91bGQgYmUgY29uc3VtZWQuCisgICAgaWYgKGZv
Y3VzZWROb2RlID09IGFuY2hvck5vZGUpCisgICAgICAgIHJldHVybiB0cnVlOworICAgIAorICAg
IGFuY2hvck5vZGUtPnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOworICAgIAorICAgIHNl
dEZvY3VzZWROb2RlKGFuY2hvck5vZGUsIHRhcmdldEZyYW1lKTsKKyAgICAKKyAgICByZXR1cm4g
dHJ1ZTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5oCShyZXZpc2lvbiA5MzY2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3Bh
Z2UvRm9jdXNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgcHVi
bGljOgogCiAgICAgYm9vbCBzZXRJbml0aWFsRm9jdXMoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJk
RXZlbnQqKTsKICAgICBib29sIGFkdmFuY2VGb2N1cyhGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRF
dmVudCosIGJvb2wgaW5pdGlhbEZvY3VzID0gZmFsc2UpOworICAgIGJvb2wgaGFuZGxlQ1NTRm9j
dXNOYXZpZ2F0aW9uKEZvY3VzRGlyZWN0aW9uKTsKICAgICAgICAgCiAgICAgYm9vbCBzZXRGb2N1
c2VkTm9kZShOb2RlKiwgUGFzc1JlZlB0cjxGcmFtZT4pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gOTM2NjgpCisrKyBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTMsNiArNTMsNyBAQAogI2luY2x1ZGUgIlN0eWxlSW5oZXJpdGVkRGF0YS5oIgogI2lu
Y2x1ZGUgIlN0eWxlTWFycXVlZURhdGEuaCIKICNpbmNsdWRlICJTdHlsZU11bHRpQ29sRGF0YS5o
IgorI2luY2x1ZGUgIlN0eWxlTmF2aWdhdGlvblZhbHVlLmgiCiAjaW5jbHVkZSAiU3R5bGVSYXJl
SW5oZXJpdGVkRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaCIK
ICNpbmNsdWRlICJTdHlsZVJlZmxlY3Rpb24uaCIKQEAgLTEwMSw2ICsxMDIsNyBAQCBjbGFzcyBQ
YWlyOwogY2xhc3MgU2hhZG93RGF0YTsKIGNsYXNzIFN0eWxlSW1hZ2U7CiBjbGFzcyBUcmFuc2Zv
cm1hdGlvbk1hdHJpeDsKK2NsYXNzIFN0eWxlTmF2aWdhdGlvbkRhdGE7CiAKIGNsYXNzIENvbnRl
bnREYXRhOwogCkBAIC03NTQsNiArNzU2LDExIEBAIHB1YmxpYzoKIAogICAgIFRleHRDb21iaW5l
IHRleHRDb21iaW5lKCkgY29uc3QgeyByZXR1cm4gc3RhdGljX2Nhc3Q8VGV4dENvbWJpbmU+KHJh
cmVOb25Jbmhlcml0ZWREYXRhLT5tX3RleHRDb21iaW5lKTsgfQogICAgIGJvb2wgaGFzVGV4dENv
bWJpbmUoKSBjb25zdCB7IHJldHVybiB0ZXh0Q29tYmluZSgpICE9IFRleHRDb21iaW5lTm9uZTsg
fQorCisgICAgY29uc3QgU3R5bGVOYXZpZ2F0aW9uVmFsdWUmIG5hdkRvd24oKSBjb25zdCB7IHJl
dHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXYubV9kb3duOyB9CisgICAgY29uc3QgU3R5
bGVOYXZpZ2F0aW9uVmFsdWUmIG5hdkxlZnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJp
dGVkRGF0YS0+bV9uYXYubV9sZWZ0OyB9CisgICAgY29uc3QgU3R5bGVOYXZpZ2F0aW9uVmFsdWUm
IG5hdlJpZ2h0KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbmF2Lm1f
cmlnaHQ7IH0KKyAgICBjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgbmF2VXAoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXYubV91cDsgfQogICAgIC8vIEVuZCBD
U1MzIEdldHRlcnMKIAogICAgIGNvbnN0IEF0b21pY1N0cmluZyYgZmxvd1RocmVhZCgpIGNvbnN0
IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX2Zsb3dUaHJlYWQ7IH0KQEAgLTExMTks
NiArMTEyNiwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRUZXh0RW1waGFzaXNNYXJrKFRleHRF
bXBoYXNpc01hcmsgbWFyaykgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWREYXRhLCB0ZXh0RW1waGFz
aXNNYXJrLCBtYXJrKTsgfQogICAgIHZvaWQgc2V0VGV4dEVtcGhhc2lzQ3VzdG9tTWFyayhjb25z
dCBBdG9taWNTdHJpbmcmIG1hcmspIHsgU0VUX1ZBUihyYXJlSW5oZXJpdGVkRGF0YSwgdGV4dEVt
cGhhc2lzQ3VzdG9tTWFyaywgbWFyayk7IH0KICAgICB2b2lkIHNldFRleHRFbXBoYXNpc1Bvc2l0
aW9uKFRleHRFbXBoYXNpc1Bvc2l0aW9uIHBvc2l0aW9uKSB7IFNFVF9WQVIocmFyZUluaGVyaXRl
ZERhdGEsIHRleHRFbXBoYXNpc1Bvc2l0aW9uLCBwb3NpdGlvbik7IH0KKyAgICB2b2lkIHNldE5h
dkRvd24oY29uc3QgU3R5bGVOYXZpZ2F0aW9uVmFsdWUmIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5o
ZXJpdGVkRGF0YSwgbV9uYXYubV9kb3duLCB2KTsgfQorICAgIHZvaWQgc2V0TmF2TGVmdChjb25z
dCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRh
LCBtX25hdi5tX2xlZnQsIHYpOyB9CisgICAgdm9pZCBzZXROYXZSaWdodChjb25zdCBTdHlsZU5h
dmlnYXRpb25WYWx1ZSYgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX25hdi5t
X3JpZ2h0LCB2KTsgfQorICAgIHZvaWQgc2V0TmF2VXAoY29uc3QgU3R5bGVOYXZpZ2F0aW9uVmFs
dWUmIHYpIHsgU0VUX1ZBUihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9uYXYubV91cCwgdik7IH0K
ICAgICAvLyBFbmQgQ1NTMyBTZXR0ZXJzCiAKICAgICB2b2lkIHNldEZsb3dUaHJlYWQoY29uc3Qg
QXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fZmxvd1RocmVhZCwgZmxvd1RocmVhZCk7IH0KQEAgLTEzNzQsNiArMTM4NSw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgaW50IGluaXRpYWxSZWdpb25JbmRleCgpIHsgcmV0dXJuIDA7IH0KICAg
ICBzdGF0aWMgUmVnaW9uT3ZlcmZsb3cgaW5pdGlhbFJlZ2lvbk92ZXJmbG93KCkgeyByZXR1cm4g
QXV0b1JlZ2lvbk92ZXJmbG93OyB9CiAKKyAgICBzdGF0aWMgY29uc3QgU3R5bGVOYXZpZ2F0aW9u
VmFsdWUmIGluaXRpYWxTdHlsZU5hdmlnYXRpb24oKSB7IERFRklORV9TVEFUSUNfTE9DQUwoU3R5
bGVOYXZpZ2F0aW9uVmFsdWUsIG5hdmksICgpKTsgcmV0dXJuIG5hdmk7IH0KKwogICAgIC8vIEtl
ZXAgdGhlc2UgYXQgdGhlIGVuZC4KICAgICBzdGF0aWMgTGluZUNsYW1wVmFsdWUgaW5pdGlhbExp
bmVDbGFtcCgpIHsgcmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KICAgICBzdGF0aWMgYm9vbCBp
bml0aWFsVGV4dFNpemVBZGp1c3QoKSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZpZ2F0aW9uRGF0YS5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdmlnYXRpb25EYXRhLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZpZ2F0
aW9uRGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEt5b3VuZ2EgUmEgKGt5b3VuZ2EucmFAZ21haWwuY29tKQorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBT
dHlsZU5hdmlnYXRpb25EYXRhX2gKKyNkZWZpbmUgU3R5bGVOYXZpZ2F0aW9uRGF0YV9oCisKKyNp
bmNsdWRlICJTdHlsZU5hdmlnYXRpb25WYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFN0eWxlTmF2aWdhdGlvbkRhdGEgeworZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOwor
cHVibGljOgorICAgIFN0eWxlTmF2aWdhdGlvbkRhdGEoKSB7IH0KKworICAgIFN0eWxlTmF2aWdh
dGlvbkRhdGEoY29uc3QgU3R5bGVOYXZpZ2F0aW9uRGF0YSYgbykKKyAgICA6IG1fdXAoby5tX3Vw
KQorICAgICwgbV9kb3duKG8ubV9kb3duKQorICAgICwgbV9sZWZ0KG8ubV9sZWZ0KQorICAgICwg
bV9yaWdodChvLm1fcmlnaHQpCisgICAgeyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3Qg
U3R5bGVOYXZpZ2F0aW9uRGF0YSYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3Vw
ID09IG8ubV91cCAmJiBtX2Rvd24gPT0gby5tX2Rvd24gJiYgbV9sZWZ0ID09IG8ubV9sZWZ0ICYm
IG1fcmlnaHQgPT0gby5tX3JpZ2h0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25z
dCBTdHlsZU5hdmlnYXRpb25EYXRhJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEo
KnRoaXMgPT0gbyk7CisgICAgfQorICAgICAgICAKKyAgICBjb25zdCBTdHlsZU5hdmlnYXRpb25W
YWx1ZSYgdXAoKSBjb25zdCB7IHJldHVybiBtX3VwOyB9CisgICAgY29uc3QgU3R5bGVOYXZpZ2F0
aW9uVmFsdWUmIGRvd24oKSBjb25zdCB7IHJldHVybiBtX2Rvd247IH0KKyAgICBjb25zdCBTdHls
ZU5hdmlnYXRpb25WYWx1ZSYgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQorICAgIGNv
bnN0IFN0eWxlTmF2aWdhdGlvblZhbHVlJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7
IH0KKworcHJpdmF0ZToKKyAgICBTdHlsZU5hdmlnYXRpb25WYWx1ZSBtX3VwOworICAgIFN0eWxl
TmF2aWdhdGlvblZhbHVlIG1fZG93bjsKKyAgICBTdHlsZU5hdmlnYXRpb25WYWx1ZSBtX2xlZnQ7
CisgICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgbV9yaWdodDsKK307CisKK30gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKKworI2VuZGlmIC8vIFN0eWxlTmF2aWdhdGlvbkRhdGFfaApJbmRleDogU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvblZhbHVlLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvblZhbHVl
LmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVO
YXZpZ2F0aW9uVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAxMSBLeW91bmdhIFJhIChreW91bmdhLnJhQGdtYWlsLmNvbSkKKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
Zm5kZWYgU3R5bGVOYXZpZ2F0aW9uVmFsdWVfaAorI2RlZmluZSBTdHlsZU5hdmlnYXRpb25WYWx1
ZV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU3R5bGVOYXZpZ2F0aW9uVmFsdWUg
eworZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOworcHVibGljOgorICAgIFN0eWxlTmF2aWdhdGlv
blZhbHVlKCkKKyAgICA6bV9pZChBdG9taWNTdHJpbmcoImF1dG8iKSkKKyAgICAsIG1fdGFyZ2V0
KEF0b21pY1N0cmluZygiY3VycmVudCIpKSB7IH0KKworICAgIFN0eWxlTmF2aWdhdGlvblZhbHVl
KGNvbnN0IGNoYXIqIGlkLCBjb25zdCBjaGFyKiB0YXJnZXQpCisgICAgOm1faWQoQXRvbWljU3Ry
aW5nKGlkKSkKKyAgICAsIG1fdGFyZ2V0KEF0b21pY1N0cmluZyh0YXJnZXQpKSB7IH0KKworICAg
IFN0eWxlTmF2aWdhdGlvblZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFyZ2V0ID0gQXRvbWljU3RyaW5nKCJjdXJyZW50IikpCisgICAgOm1faWQoaWQp
CisgICAgLCBtX3RhcmdldCh0YXJnZXQpIAorICAgIHsgfQorCisgICAgYm9vbCBpc0F1dG8oKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWQgPT0gImF1dG8iOworICAgIH0KKworICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgbykgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2lkID09IG8ubV9pZCAmJiBtX3RhcmdldCA9PSBvLm1fdGFy
Z2V0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZU5hdmlnYXRpb25W
YWx1ZSYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOworICAg
IH0KKworICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFN0eWxlTmF2aWdhdGlvblZhbHVlJiBvKQor
ICAgIHsKKyAgICAgICAgbV9pZCA9IG8ubV9pZDsKKyAgICAgICAgbV90YXJnZXQgPSBvLm1fdGFy
Z2V0OworICAgIH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YXJnZXQoKSBjb25zdCB7IHJldHVy
biBtX3RhcmdldDsgfQorCitwcm90ZWN0ZWQ6CisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAg
QXRvbWljU3RyaW5nIG1fdGFyZ2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gU3R5bGVOYXZpZ2F0aW9uVmFsdWVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
LmNwcAkocmV2aXNpb24gOTM2NjgpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUv
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTYwLDYgKzYw
LDcgQEAgU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSQogICAgICwgbV9y
ZWdpb25JbmRleChSZW5kZXJTdHlsZTo6aW5pdGlhbFJlZ2lvbkluZGV4KCkpCiAgICAgLCBtX3Jl
Z2lvbk92ZXJmbG93KFJlbmRlclN0eWxlOjppbml0aWFsUmVnaW9uT3ZlcmZsb3coKSkKICAgICAs
IG1fd3JhcFNoYXBlKFJlbmRlclN0eWxlOjppbml0aWFsV3JhcFNoYXBlKCkpCisgICAgLCBtX25h
digpCiAgICAgLCBtX3JlZ2lvbkJyZWFrQWZ0ZXIoUmVuZGVyU3R5bGU6OmluaXRpYWxQYWdlQnJl
YWsoKSkKICAgICAsIG1fcmVnaW9uQnJlYWtCZWZvcmUoUmVuZGVyU3R5bGU6OmluaXRpYWxQYWdl
QnJlYWsoKSkKICAgICAsIG1fcmVnaW9uQnJlYWtJbnNpZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxQ
YWdlQnJlYWsoKSkKQEAgLTExMCw2ICsxMTEsNyBAQCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRh
OjpTdHlsZVJhcmVOb25JCiAgICAgLCBtX3JlZ2lvbkluZGV4KG8ubV9yZWdpb25JbmRleCkKICAg
ICAsIG1fcmVnaW9uT3ZlcmZsb3coby5tX3JlZ2lvbk92ZXJmbG93KQogICAgICwgbV93cmFwU2hh
cGUoby5tX3dyYXBTaGFwZSkKKyAgICAsIG1fbmF2KG8ubV9uYXYpCiAgICAgLCBtX3JlZ2lvbkJy
ZWFrQWZ0ZXIoby5tX3JlZ2lvbkJyZWFrQWZ0ZXIpCiAgICAgLCBtX3JlZ2lvbkJyZWFrQmVmb3Jl
KG8ubV9yZWdpb25CcmVha0JlZm9yZSkKICAgICAsIG1fcmVnaW9uQnJlYWtJbnNpZGUoby5tX3Jl
Z2lvbkJyZWFrSW5zaWRlKQpAQCAtMTY3LDYgKzE2OSw3IEBAIGJvb2wgU3R5bGVSYXJlTm9uSW5o
ZXJpdGVkRGF0YTo6b3BlcmF0b3IKICAgICAgICAgJiYgKG1fcmVnaW9uSW5kZXggPT0gby5tX3Jl
Z2lvbkluZGV4KQogICAgICAgICAmJiAobV9yZWdpb25PdmVyZmxvdyA9PSBvLm1fcmVnaW9uT3Zl
cmZsb3cpCiAgICAgICAgICYmIChtX3dyYXBTaGFwZSA9PSBvLm1fd3JhcFNoYXBlKQorICAgICAg
ICAmJiAobV9uYXYgPT0gby5tX25hdikKICAgICAgICAgJiYgKG1fcmVnaW9uQnJlYWtBZnRlciA9
PSBvLm1fcmVnaW9uQnJlYWtBZnRlcikKICAgICAgICAgJiYgKG1fcmVnaW9uQnJlYWtCZWZvcmUg
PT0gby5tX3JlZ2lvbkJyZWFrQmVmb3JlKQogICAgICAgICAmJiAobV9yZWdpb25CcmVha0luc2lk
ZSA9PSBvLm1fcmVnaW9uQnJlYWtJbnNpZGUpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCShy
ZXZpc2lvbiA5MzY2OCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNp
bmNsdWRlICJGaWxsTGF5ZXIuaCIKICNpbmNsdWRlICJMaW5lQ2xhbXBWYWx1ZS5oIgogI2luY2x1
ZGUgIk5pbmVQaWVjZUltYWdlLmgiCisjaW5jbHVkZSAiU3R5bGVOYXZpZ2F0aW9uRGF0YS5oIgog
I2luY2x1ZGUgIlN0eWxlVHJhbnNmb3JtRGF0YS5oIgogI2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgpAQCAtMTQzLDYgKzE0NCw4IEBAIHB1YmxpYzoK
IAogICAgIFJlZlB0cjxDU1NXcmFwU2hhcGU+IG1fd3JhcFNoYXBlOwogCisgICAgU3R5bGVOYXZp
Z2F0aW9uRGF0YSBtX25hdjsKKyAgICAKICAgICB1bnNpZ25lZCBtX3JlZ2lvbkJyZWFrQWZ0ZXIg
OiAyOyAvLyBFUGFnZUJyZWFrCiAgICAgdW5zaWduZWQgbV9yZWdpb25CcmVha0JlZm9yZSA6IDI7
IC8vIEVQYWdlQnJlYWsKICAgICB1bnNpZ25lZCBtX3JlZ2lvbkJyZWFrSW5zaWRlIDogMjsgLy8g
RVBhZ2VCcmVhawo=
</data>
<flag name="review"
          id="102469"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123237</attachid>
            <date>2012-01-19 18:40:58 -0800</date>
            <delta_ts>2012-01-21 06:13:31 -0800</delta_ts>
            <desc>initial patch for the latest webkit. </desc>
            <filename>66027.patch</filename>
            <type>text/plain</type>
            <size>31122</size>
            <attacher name="kyounga">kyounga.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTQ2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAxLTE5ICBLeW91bmdh
IFJhICA8a3lvdW5nYS5yYUBnbWFpbC5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2Ny
aXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hdkRpclRvQ1NTVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQ
cm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZh
bHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9w
ZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eU5hdkRpcmVjdGlvbjo6YXBwbHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TmF2RGlyZWN0aW9uOjpjcmVhdGVIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVB
cHBseVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmdldFN0eWxlTmF2aWdhdGlvblZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmhhbmRsZUNTU0ZvY3VzTmF2aWdhdGlvbik6Cisg
ICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRz
OjpuYXZEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpuYXZM
ZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpuYXZSaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxkczo6bmF2VXApOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OnNldE5hdkRvd24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OnNldE5hdkxlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OnNldE5hdlJpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpzZXROYXZVcCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZUJpdGZpZWxkczo6aW5pdGlhbFN0eWxlTmF2aWdhdGlvbik6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvbkRhdGEuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZU5hdmlnYXRpb25EYXRhOjpTdHlsZU5hdmlnYXRpb25EYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvbkRhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVOYXZpZ2F0aW9uRGF0YTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZU5hdmlnYXRpb25EYXRhOjp1cCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU5h
dmlnYXRpb25EYXRhOjpkb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvbkRh
dGE6OmxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVOYXZpZ2F0aW9uRGF0YTo6cmlnaHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZU5hdmlnYXRpb25WYWx1ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvblZhbHVlOjptX3RhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZU5hdmlnYXRpb25WYWx1ZTo6aXNBdXRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvblZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlTmF2aWdhdGlvblZhbHVlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlTmF2aWdhdGlvblZhbHVlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVOYXZpZ2F0aW9uVmFsdWU6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdh
dGlvblZhbHVlOjp0YXJnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxMi0wMS0xOSAgQ2Fy
eSBDbGFyayAgPGNhcnljbGFya0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtTa2lhIE1hY10gTWF0
Y2ggc3R5bGUgb2YgcGxhdGZvcm0gZXJyb3IgdW5kZXJsaW5lIGZvciBtaXNzcGVsbGluZ3MKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2Niw2ICszMjY2LDggQEAKIAkJ
OTNGOUI3QTAwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlFMEJBNjAzMjYwMDg1
NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1
NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9u
LmggKi87IH07CiAJCTkzRkRBRkNBMEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkRB
RkM5MEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NTFFNzgzNzE0Qzg0QTNEMDA5
N0VDM0MgLyogU3R5bGVOYXZpZ2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTUxRTc4MzUxNEM4NEEzRDAwOTdFQzNDIC8qIFN0eWxlTmF2
aWdhdGlvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5NTFFNzgzODE0Qzg0QTNEMDA5N0VDM0MgLyogU3R5bGVOYXZpZ2F0aW9uVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MUU3ODM2
MTRDODRBM0QwMDk3RUMzQyAvKiBTdHlsZU5hdmlnYXRpb25WYWx1ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2QUJBNDIzMTRCQ0I4MEUwMEQ1
NjIwNCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NkFCQTQyMjE0QkNCODBFMDBENTYyMDQg
LyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwICovOyB9OwogCQk5NzA1OTk3NzEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzMxMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJOTcwNTk5NzgxMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAwNzUsNiArMTAw
NzcsOCBAQAogCQk5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQg
LyogSlNDREFUQVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
REFUQVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGREFGQzkwQjEx
MzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRWRpdG9ySW5zZXJ0QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk1MUU3ODM1MTRDODRBM0QwMDk3RUMzQyAvKiBTdHlsZU5hdmlnYXRpb25EYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0eWxlTmF2aWdhdGlvbkRhdGEu
aDsgcGF0aCA9IHJlbmRlcmluZy9zdHlsZS9TdHlsZU5hdmlnYXRpb25EYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1MUU3ODM2MTRDODRBM0QwMDk3RUMzQyAvKiBTdHlsZU5h
dmlnYXRpb25WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZU5h
dmlnYXRpb25WYWx1ZS5oOyBwYXRoID0gcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvblZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1
NjIwNCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAv
KiBQb2xpY3lDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQb2xpY3lDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5
OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTMzMTcsNiArMTMzMjEsOCBAQAogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcg
LyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk5NTFFNzgzNTE0Qzg0QTNEMDA5N0VDM0MgLyogU3R5bGVOYXZpZ2F0aW9uRGF0YS5oICovLAor
CQkJCTk1MUU3ODM2MTRDODRBM0QwMDk3RUMzQyAvKiBTdHlsZU5hdmlnYXRpb25WYWx1ZS5oICov
LAogCQkJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLywKIAkJCQlFREVD
OTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovLAogCQkJCTkzMDcwNjEz
MDlFMENBODIwMEIxN0ZFNCAvKiBEZXJpdmVkU291cmNlcy5tYWtlICovLApAQCAtMjQwMjgsNiAr
MjQwMzQsOCBAQAogCQkJCTUwQUNFMkNCMTRCNUQ3OTMwMDQ0NjY2NiAvKiBDdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdBQ0Q4OEQ0MTRDMDhCRDYwMDg0RUREMiAv
KiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTEwODlEMzIx
NEMzMzYwMDAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAor
CQkJCTk1MUU3ODM3MTRDODRBM0QwMDk3RUMzQyAvKiBTdHlsZU5hdmlnYXRpb25EYXRhLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5NTFFNzgzODE0Qzg0QTNEMDA5N0VDM0MgLyogU3R5bGVOYXZpZ2F0
aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDEwNTI0NikKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDEwIEBAIHN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQ
cm9wZXJ0aWVzW10gPSAKICAgICBDU1NQcm9wZXJ0eU1heFdpZHRoLAogICAgIENTU1Byb3BlcnR5
TWluSGVpZ2h0LAogICAgIENTU1Byb3BlcnR5TWluV2lkdGgsCisgICAgQ1NTUHJvcGVydHlOYXZE
b3duLAorICAgIENTU1Byb3BlcnR5TmF2TGVmdCwKKyAgICBDU1NQcm9wZXJ0eU5hdlJpZ2h0LAor
ICAgIENTU1Byb3BlcnR5TmF2VXAsCiAgICAgQ1NTUHJvcGVydHlPcGFjaXR5LAogICAgIENTU1By
b3BlcnR5T3JwaGFucywKICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwKQEAgLTExNDQsNiAr
MTE0OCwxNSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTCiAgICAg
cmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCitzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
bmF2RGlyVG9DU1NWYWx1ZShjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgbmF2VmFsdWUsIENT
U1ZhbHVlUG9vbCogY3NzVmFsdWVQb29sKQoreworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC0+Y3JlYXRlVmFsdWUobmF2VmFsdWUuaWQoKS5zdHJpbmcoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKKyAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLT5jcmVhdGVWYWx1ZShuYXZWYWx1ZS50YXJnZXQoKS5zdHJpbmcoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TVFJJTkcpKTsKKworICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKK30KKyAg
ICAKIHN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlE
KQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxpbnQ+LCBwcm9wZXJ0eUlEU2V0
LCAoKSk7CkBAIC0xNzEyLDYgKzE3MjUsMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29t
cHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC0+Y3JlYXRlVmFs
dWUoc3R5bGUtPm1pbkhlaWdodCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRo
OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC0+Y3JlYXRlVmFsdWUoc3R5bGUtPm1p
bldpZHRoKCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5TmF2RG93bjoKKyAgICAgICAgICAg
IHJldHVybiBuYXZEaXJUb0NTU1ZhbHVlKHN0eWxlLT5uYXZEb3duKCksIGNzc1ZhbHVlUG9vbCk7
CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgICAgICAgICAgcmV0dXJuIG5h
dkRpclRvQ1NTVmFsdWUoc3R5bGUtPm5hdkxlZnQoKSwgY3NzVmFsdWVQb29sKTsKKyAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU5hdlJpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIG5hdkRpclRvQ1NT
VmFsdWUoc3R5bGUtPm5hdlJpZ2h0KCksIGNzc1ZhbHVlUG9vbCk7CisgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlOYXZVcDoKKyAgICAgICAgICAgIHJldHVybiBuYXZEaXJUb0NTU1ZhbHVlKHN0eWxl
LT5uYXZVcCgpLCBjc3NWYWx1ZVBvb2wpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0
eToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wtPmNyZWF0ZVZhbHVlKHN0eWxlLT5v
cGFjaXR5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eU9ycGhhbnM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkJKHJldmlzaW9u
IDEwNTI0NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZh
bCwgdm9pCiAKICV9CiAKLSVleHBlY3QgNTUKKyVleHBlY3QgNTYKIAogJW5vbmFzc29jIExPV0VT
VF9QUkVDCiAKQEAgLTE0MjUsNiArMTQyNSw3IEBAIHRlcm06CiAgIHwgVVJJIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVVJJOyB9CiAgIHwgVU5JQ09ERVJBTkdFIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAk
JC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5JQ09ERV9S
QU5HRTsgfQogICB8IEhFWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUjsgfQorICB8
IElEU0VMIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOyB9CiAgIHwgJyMnIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5zdHJpbmcgPSBDU1NQYXJzZXJTdHJpbmcoKTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9IC8qIEhhbmRsZSBlcnJvciBjYXNl
OiAiY29sb3I6ICM7IiAqLwogICAvKiBGSVhNRTogYWNjb3JkaW5nIHRvIHRoZSBzcGVjcyBhIGZ1
bmN0aW9uIGNhbiBoYXZlIGEgdW5hcnlfb3BlcmF0b3IgaW4gZnJvbnQuIEkga25vdyBubyBjYXNl
IHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgKi8KICAgfCBmdW5jdGlvbiB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMTA1MjQ2KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCwyNCBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRyYXN0KQogICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5TmF2RG93bjogLy8gYXV0byB8IDxpZD4gdGFyZ2V0ZnJhbWUgfCBpbmhlcml0
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlJp
Z2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZVcDoKKyAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlQXV0bworICAgICAgICAgICAgfHwgKG51bSA9PSAxICYmICh2YWx1ZS0+dW5pdCA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUikpKSB7CisgICAgICAgICAgICB2YWx1ZS0+dW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOworICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKG51bSA9PSAyKSB7CisgICAgICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOworICAgICAgICAgICAgd2hpbGUgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVWYWx1ZSh2YWx1ZS0+c3RyaW5nLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbV92
YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcnNlZFZhbHVl
ID0gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBicmVhazsKICAgICAvLyBFbmQgb2YgQ1NTMyBwcm9wZXJ0aWVzCiAKICAg
ICAvLyBBcHBsZSBzcGVjaWZpYyBwcm9wZXJ0aWVzLiAgVGhlc2Ugd2lsbCBuZXZlciBiZSBzdGFu
ZGFyZGl6ZWQgYW5kIGFyZSBwdXJlbHkgdG8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmNwcAkocmV2aXNpb24gMTA1MjQ2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDYgKzQ1NCwxMCBAQCBib29sIENTU1Byb3BlcnR5
Ojppc0luaGVyaXRlZFByb3BlcnR5KHVuCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldp
ZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZEb3duOgorICAgIGNhc2UgQ1NTUHJvcGVydHlO
YXZMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZSaWdodDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TmF2VXA6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU91dGxpbmU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiAxMDUyNDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDYgKzExOSwxMCBAQCBtYXgtaGVpZ2h0CiBtYXgtd2lkdGgKIG1pbi1oZWlnaHQKIG1pbi13
aWR0aAorbmF2LWRvd24KK25hdi1sZWZ0CituYXYtcmlnaHQKK25hdi11cAogb3BhY2l0eQogLy8g
SG9ub3IgLXdlYmtpdC1vcGFjaXR5IGFzIGEgc3lub255bSBmb3Igb3BhY2l0eS4gVGhpcyB3YXMg
dGhlIG9ubHkgc3ludGF4IHRoYXQgd29ya2VkIGluIFNhZmFyaSAxLjEsCiAvLyBhbmQgbWF5IGJl
IGluIHVzZSBvbiBzb21lIHdlYnNpdGVzIGFuZCB3aWRnZXRzLgpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDEwNTI0NikKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjExLDYgKzE2MTEsMzAgQEAgcHVibGljOgogICAgIH0KIH07CiAKK3RlbXBsYXRl
IDx0eXBlbmFtZSBHZXR0ZXJUeXBlLCBHZXR0ZXJUeXBlIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1
bmN0aW9uKSgpIGNvbnN0LCB0eXBlbmFtZSBTZXR0ZXJUeXBlLCB2b2lkIChSZW5kZXJTdHlsZTo6
KnNldHRlckZ1bmN0aW9uKShTZXR0ZXJUeXBlKSwgdHlwZW5hbWUgSW5pdGlhbFR5cGUsIEluaXRp
YWxUeXBlICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgorY2xhc3MgQXBwbHlQcm9wZXJ0eU5hdkRpcmVj
dGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwor
CisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVB
dXRvKQorICAgICAgICAgICAgICAgIChzZWxlY3Rvci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9u
KSgoKmluaXRpYWxGdW5jdGlvbikoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVW
YWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HCisg
ICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUikKKyAgICAgICAgICAgICAgICAoc2Vs
ZWN0b3ItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc2VsZWN0b3ItPmdldFN0eWxlTmF2aWdh
dGlvblZhbHVlKHZhbHVlKSk7CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzVmFsdWVMaXN0
KCkpCisgICAgICAgICAgICAoc2VsZWN0b3ItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc2Vs
ZWN0b3ItPmdldFN0eWxlTmF2aWdhdGlvblZhbHVlKHZhbHVlKSk7CisgICAgfQorCisgICAgc3Rh
dGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIFByb3Bl
cnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPEdldHRlclR5cGUs
IGdldHRlckZ1bmN0aW9uLCBTZXR0ZXJUeXBlLCBzZXR0ZXJGdW5jdGlvbiwgSW5pdGlhbFR5cGUs
IGluaXRpYWxGdW5jdGlvbj46OmNyZWF0ZUhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuIFByb3Bl
cnR5SGFuZGxlcihoYW5kbGVyLmluaGVyaXRGdW5jdGlvbigpLCBoYW5kbGVyLmluaXRpYWxGdW5j
dGlvbigpLCAmYXBwbHlWYWx1ZSk7CisgICAgfQorfTsKKyAgICAKIGNvbnN0IENTU1N0eWxlQXBw
bHlQcm9wZXJ0eSYgQ1NTU3R5bGVBcHBseVByb3BlcnR5OjpzaGFyZWRDU1NTdHlsZUFwcGx5UHJv
cGVydHkoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTU3R5bGVBcHBseVByb3BlcnR5
LCBjc3NTdHlsZUFwcGx5UHJvcGVydHlJbnN0YW5jZSwgKCkpOwpAQCAtMTg4NCw2ICsxOTA4LDEx
IEBAIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVBcHBseVByb3AKIAogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVpJbmRleCwgQXBwbHlQcm9wZXJ0eUF1dG88aW50LCAm
UmVuZGVyU3R5bGU6OnpJbmRleCwgJlJlbmRlclN0eWxlOjpzZXRaSW5kZXgsICZSZW5kZXJTdHls
ZTo6aGFzQXV0b1pJbmRleCwgJlJlbmRlclN0eWxlOjpzZXRIYXNBdXRvWkluZGV4Pjo6Y3JlYXRl
SGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlab29tLCBBcHBs
eVByb3BlcnR5Wm9vbTo6Y3JlYXRlSGFuZGxlcigpKTsKKworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eU5hdkRvd24sIEFwcGx5UHJvcGVydHlOYXZEaXJlY3Rpb248U3R5bGVOYXZp
Z2F0aW9uVmFsdWUsICZSZW5kZXJTdHlsZTo6bmF2RG93biwgU3R5bGVOYXZpZ2F0aW9uVmFsdWUs
ICZSZW5kZXJTdHlsZTo6c2V0TmF2RG93biwgU3R5bGVOYXZpZ2F0aW9uVmFsdWUsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbFN0eWxlTmF2aWdhdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TmF2TGVmdCwgQXBwbHlQcm9wZXJ0eU5hdkRpcmVj
dGlvbjxTdHlsZU5hdmlnYXRpb25WYWx1ZSwgJlJlbmRlclN0eWxlOjpuYXZMZWZ0LCBTdHlsZU5h
dmlnYXRpb25WYWx1ZSwgJlJlbmRlclN0eWxlOjpzZXROYXZMZWZ0LCBTdHlsZU5hdmlnYXRpb25W
YWx1ZSwgJlJlbmRlclN0eWxlOjppbml0aWFsU3R5bGVOYXZpZ2F0aW9uPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlOYXZSaWdodCwgQXBwbHlQ
cm9wZXJ0eU5hdkRpcmVjdGlvbjxTdHlsZU5hdmlnYXRpb25WYWx1ZSwgJlJlbmRlclN0eWxlOjpu
YXZSaWdodCwgU3R5bGVOYXZpZ2F0aW9uVmFsdWUsICZSZW5kZXJTdHlsZTo6c2V0TmF2UmlnaHQs
IFN0eWxlTmF2aWdhdGlvblZhbHVlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxTdHlsZU5hdmlnYXRp
b24+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eU5hdlVwLCBBcHBseVByb3BlcnR5TmF2RGlyZWN0aW9uPFN0eWxlTmF2aWdhdGlvblZhbHVlLCAm
UmVuZGVyU3R5bGU6Om5hdlVwLCBTdHlsZU5hdmlnYXRpb25WYWx1ZSwgJlJlbmRlclN0eWxlOjpz
ZXROYXZVcCwgU3R5bGVOYXZpZ2F0aW9uVmFsdWUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFN0eWxl
TmF2aWdhdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7ICAgIAogfQogCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg0
NSw2ICszODQ1LDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDoKICAgICBjYXNlIENTU1Byb3BlcnR5Wklu
ZGV4OgogICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZE
b3duOgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlO
YXZSaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAjaWYgRU5BQkxFKFNWRykKQEAgLTQ0NTEsNiAr
NDQ1NSwyNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcE5pbmVQaWVjZUltYWdlCiAgICAg
aW1hZ2Uuc2V0VmVydGljYWxSdWxlKHZlcnRpY2FsUnVsZSk7CiB9CiAKK1N0eWxlTmF2aWdhdGlv
blZhbHVlIENTU1N0eWxlU2VsZWN0b3I6OmdldFN0eWxlTmF2aWdhdGlvblZhbHVlKENTU1ZhbHVl
KiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAg
ICAgICBTdHJpbmdJbXBsKiB2YWxbMl0gPSB7MH07CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IDA7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAy
OyBpKyspIHsKKyAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjayhpKTsKKyAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpCisgICAgICAgICAgICAgICAgdmFsW2ldID0gcHJpbWl0aXZlVmFsdWUtPmdldFN0
cmluZ1ZhbHVlKCkuaW1wbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBTdHlsZU5hdmln
YXRpb25WYWx1ZShBdG9taWNTdHJpbmcodmFsWzBdKSwgQXRvbWljU3RyaW5nKHZhbFsxXSkpOwor
ICAgIH0KKworICAgIHJldHVybiBTdHlsZU5hdmlnYXRpb25WYWx1ZShBdG9taWNTdHJpbmcoc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFN0cmluZ1ZhbHVlKCkpKTsg
ICAgCit9CisKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgp
CiB7CiAgICAgaWYgKG1fc3R5bGUtPnRleHRTaXplQWRqdXN0KCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MCw2ICszNTAs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXBOaW5lUGllY2VJbWFnZVNsaWNlKENTU1ZhbHVlKiwg
TmluZVBpZWNlSW1hZ2UmKTsKICAgICBMZW5ndGhCb3ggbWFwTmluZVBpZWNlSW1hZ2VRdWFkKENT
U1ZhbHVlKik7CiAgICAgdm9pZCBtYXBOaW5lUGllY2VJbWFnZVJlcGVhdChDU1NWYWx1ZSosIE5p
bmVQaWVjZUltYWdlJik7CisKK3B1YmxpYzoKKyAgICBTdHlsZU5hdmlnYXRpb25WYWx1ZSBnZXRT
dHlsZU5hdmlnYXRpb25WYWx1ZShDU1NWYWx1ZSopOwogcHJpdmF0ZToKICAgICBib29sIGNhblNo
YXJlU3R5bGVXaXRoQ29udHJvbChTdHlsZWRFbGVtZW50KikgY29uc3Q7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4Nyw2ICsz
MDg3LDkgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZAogICAgIGlm
IChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgaWYgKHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5oYW5kbGVDU1NGb2N1c05hdmlnYXRp
b24oZm9jdXNEaXJlY3Rpb24pKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAocGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmFkdmFuY2VGb2N1cyhmb2N1c0RpcmVjdGlvbiwgZXZlbnQpKQogICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgwLDQgKzc4
MCw3OCBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0CiAgICAgcmV0
dXJuIGNvbnN1bWVkOwogfQogCitib29sIEZvY3VzQ29udHJvbGxlcjo6aGFuZGxlQ1NTRm9jdXNO
YXZpZ2F0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBGcmFtZSogY3VyRnJh
bWUgPSBmb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBBU1NFUlQoY3VyRnJhbWUpOworCisgICAg
RG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IGN1ckZyYW1lLT5kb2N1bWVudCgpOworICAgIGlm
ICghZm9jdXNlZERvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBOb2RlKiBm
b2N1c2VkTm9kZSA9IGZvY3VzZWREb2N1bWVudC0+Zm9jdXNlZE5vZGUoKTsKKyAgICBSZW5kZXJP
YmplY3QqIHJlbmRlcmVyID0gZm9jdXNlZE5vZGUgPyBmb2N1c2VkTm9kZS0+cmVuZGVyZXIoKSA6
IDA7CisKKyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBT
dHlsZU5hdmlnYXRpb25WYWx1ZSB2YWx1ZTsKKyAgICBzd2l0Y2ggKGRpcmVjdGlvbikgeworICAg
IGNhc2UgRm9jdXNEaXJlY3Rpb25Gb3J3YXJkOgorICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25CYWNr
d2FyZDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25VcDoK
KyAgICAgICAgdmFsdWUgPSByZW5kZXJlci0+c3R5bGUoKS0+bmF2VXAoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkRvd246CisgICAgICAgIHZhbHVlID0gcmVuZGVy
ZXItPnN0eWxlKCktPm5hdkRvd24oKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb2N1c0Rp
cmVjdGlvbkxlZnQ6CisgICAgICAgIHZhbHVlID0gcmVuZGVyZXItPnN0eWxlKCktPm5hdkxlZnQo
KTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvblJpZ2h0OgorICAgICAg
ICB2YWx1ZSA9IHJlbmRlcmVyLT5zdHlsZSgpLT5uYXZSaWdodCgpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uTm9uZToKKyAgICBkZWZhdWx0OgorICAgICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKHZhbHVl
LmlkKCkuaXNOdWxsKCkgfHwgdmFsdWUuaXNBdXRvKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgdGFyZ2V0ID0gdmFsdWUudGFyZ2V0KCk7CisgICAg
RnJhbWUqIHRhcmdldEZyYW1lID0gMDsKKworICAgIC8vIElmIHdlIHdlcmUgaW4gdGhlIGF1dG9z
Y3JvbGwvcGFuU2Nyb2xsIG1vZGUgd2Ugd2FudCB0byBzdG9wIGl0LgorICAgIGN1ckZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c3RvcEF1dG9zY3JvbGxUaW1lcigpOworCisgICAgaWYgKHRhcmdldCA9
PSAiY3VycmVudCIpCisgICAgICAgIHRhcmdldEZyYW1lID0gY3VyRnJhbWU7CisgICAgZWxzZSBp
ZiAodGFyZ2V0ID09ICJyb290IikKKyAgICAgICAgdGFyZ2V0RnJhbWUgPSBjdXJGcmFtZS0+dHJl
ZSgpLT50b3AoKTsKKyAgICBlbHNlCisgICAgICAgIHRhcmdldEZyYW1lID0gY3VyRnJhbWUtPnRy
ZWUoKS0+ZmluZCh0YXJnZXQpOworCisgICAgLy8gVE9ETzovLyB3aGljaCBvbmUgaXMgcmlnaHQ/
CisgICAgaWYgKCF0YXJnZXRGcmFtZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyB0YXJnZXRG
cmFtZSA9IGN1ckZyYW1lOworCisgICAgRWxlbWVudCogYW5jaG9yTm9kZSA9IHRhcmdldEZyYW1l
LT5kb2N1bWVudCgpLT5maW5kQW5jaG9yKHZhbHVlLmlkKCkuc3RyaW5nKCkpOworICAgIGlmICgh
YW5jaG9yTm9kZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIC8vIGlmIGl0J3Mgc2FtZSB3
aXRoIHRoZSBjdXJyZW50IGZvY3VzZWQsIGl0IHNob3VsZCBiZSBjb25zdW1lZC4KKyAgICBpZiAo
Zm9jdXNlZE5vZGUgPT0gYW5jaG9yTm9kZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICBh
bmNob3JOb2RlLT5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKKworICAgIGJvb2wgc3Vj
Y2Vzc2Z1bGx5Rm9jdXNlZCA9IHNldEZvY3VzZWROb2RlKGFuY2hvck5vZGUsIHRhcmdldEZyYW1l
KTsKKworICAgIGlmIChzdWNjZXNzZnVsbHlGb2N1c2VkKQorICAgICAgICBtX3BhZ2UtPmNocm9t
ZSgpLT5mb2N1c2VkTm9kZUNoYW5nZWQoYW5jaG9yTm9kZSk7CisgICAgcmV0dXJuIHRydWU7ICAg
IAorfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9j
dXNDb250cm9sbGVyLmgJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
Rm9jdXNDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTU0LDYgKzU0LDcgQEAgcHVibGlj
OgogCiAgICAgYm9vbCBzZXRJbml0aWFsRm9jdXMoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZl
bnQqKTsKICAgICBib29sIGFkdmFuY2VGb2N1cyhGb2N1c0RpcmVjdGlvbiwgS2V5Ym9hcmRFdmVu
dCosIGJvb2wgaW5pdGlhbEZvY3VzID0gZmFsc2UpOworICAgIGJvb2wgaGFuZGxlQ1NTRm9jdXNO
YXZpZ2F0aW9uKEZvY3VzRGlyZWN0aW9uKTsKICAgICAgICAgCiAgICAgYm9vbCBzZXRGb2N1c2Vk
Tm9kZShOb2RlKiwgUGFzc1JlZlB0cjxGcmFtZT4pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaAkocmV2aXNpb24gMTA1MjQ2KQorKysgU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHdvcmtpbmcgY29weSkK
QEAgLTUzLDYgKzUzLDcgQEAKICNpbmNsdWRlICJTdHlsZUluaGVyaXRlZERhdGEuaCIKICNpbmNs
dWRlICJTdHlsZU1hcnF1ZWVEYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVNdWx0aUNvbERhdGEuaCIK
KyNpbmNsdWRlICJTdHlsZU5hdmlnYXRpb25WYWx1ZS5oIgogI2luY2x1ZGUgIlN0eWxlUmFyZUlu
aGVyaXRlZERhdGEuaCIKICNpbmNsdWRlICJTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgiCiAj
aW5jbHVkZSAiU3R5bGVSZWZsZWN0aW9uLmgiCkBAIC0xMDcsNiArMTA4LDcgQEAgY2xhc3MgUGFp
cjsKIGNsYXNzIFNoYWRvd0RhdGE7CiBjbGFzcyBTdHlsZUltYWdlOwogY2xhc3MgVHJhbnNmb3Jt
YXRpb25NYXRyaXg7CitjbGFzcyBTdHlsZU5hdmlnYXRpb25EYXRhOwogCiBjbGFzcyBDb250ZW50
RGF0YTsKIApAQCAtODkyLDYgKzg5NCwxMSBAQCBwdWJsaWM6CiAKICAgICBUZXh0Q29tYmluZSB0
ZXh0Q29tYmluZSgpIGNvbnN0IHsgcmV0dXJuIHN0YXRpY19jYXN0PFRleHRDb21iaW5lPihyYXJl
Tm9uSW5oZXJpdGVkRGF0YS0+bV90ZXh0Q29tYmluZSk7IH0KICAgICBib29sIGhhc1RleHRDb21i
aW5lKCkgY29uc3QgeyByZXR1cm4gdGV4dENvbWJpbmUoKSAhPSBUZXh0Q29tYmluZU5vbmU7IH0K
KyAgICAKKyAgICBTdHlsZU5hdmlnYXRpb25WYWx1ZSBuYXZEb3duKCkgY29uc3QgeyByZXR1cm4g
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbmF2Lm1fZG93bjsgfQorICAgIFN0eWxlTmF2aWdhdGlv
blZhbHVlIG5hdkxlZnQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9u
YXYubV9sZWZ0OyB9CisgICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgbmF2UmlnaHQoKSBjb25zdCB7
IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+bV9uYXYubV9yaWdodDsgfQorICAgIFN0eWxl
TmF2aWdhdGlvblZhbHVlIG5hdlVwKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERh
dGEtPm1fbmF2Lm1fdXA7IH0KICAgICAvLyBFbmQgQ1NTMyBHZXR0ZXJzCiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGZsb3dUaHJlYWQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVk
RGF0YS0+bV9mbG93VGhyZWFkOyB9CkBAIC0xMjkyLDYgKzEyOTksMTEgQEAgcHVibGljOgogICAg
IHZvaWQgc2V0RmlsdGVyKGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wcykgeyBTRVRfVkFSKHJh
cmVOb25Jbmhlcml0ZWREYXRhLmFjY2VzcygpLT5tX2ZpbHRlciwgbV9vcGVyYXRpb25zLCBvcHMp
OyB9CiAjZW5kaWYKIAorICAgIHZvaWQgc2V0TmF2RG93bihTdHlsZU5hdmlnYXRpb25WYWx1ZSB2
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbmF2Lm1fZG93biwgdik7IH0KKyAg
ICB2b2lkIHNldE5hdkxlZnQoU3R5bGVOYXZpZ2F0aW9uVmFsdWUgdikgeyBTRVRfVkFSKHJhcmVO
b25Jbmhlcml0ZWREYXRhLCBtX25hdi5tX2xlZnQsIHYpOyB9CisgICAgdm9pZCBzZXROYXZSaWdo
dChTdHlsZU5hdmlnYXRpb25WYWx1ZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEs
IG1fbmF2Lm1fcmlnaHQsIHYpOyB9CisgICAgdm9pZCBzZXROYXZVcChTdHlsZU5hdmlnYXRpb25W
YWx1ZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbmF2Lm1fdXAsIHYpOyB9
CisgICAgCiAgICAgLy8gRW5kIENTUzMgU2V0dGVycwogCiAgICAgdm9pZCBzZXRMaW5lR3JpZChj
b25zdCBBdG9taWNTdHJpbmcmIGxpbmVHcmlkKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEs
IG1fbGluZUdyaWQsIGxpbmVHcmlkKTsgfQpAQCAtMTYzMSw2ICsxNjQzLDggQEAgcHVibGljOgog
ICAgIHN0YXRpYyBXcmFwRmxvdyBpbml0aWFsV3JhcEZsb3coKSB7IHJldHVybiBXcmFwRmxvd0F1
dG87IH0KICAgICBzdGF0aWMgV3JhcFRocm91Z2ggaW5pdGlhbFdyYXBUaHJvdWdoKCkgeyByZXR1
cm4gV3JhcFRocm91Z2hXcmFwOyB9CiAKKyAgICBzdGF0aWMgU3R5bGVOYXZpZ2F0aW9uVmFsdWUg
aW5pdGlhbFN0eWxlTmF2aWdhdGlvbigpIHsgREVGSU5FX1NUQVRJQ19MT0NBTChTdHlsZU5hdmln
YXRpb25WYWx1ZSwgbmF2aSwgKCkpOyByZXR1cm4gbmF2aTsgfQorCiAgICAgLy8gS2VlcCB0aGVz
ZSBhdCB0aGUgZW5kLgogICAgIHN0YXRpYyBMaW5lQ2xhbXBWYWx1ZSBpbml0aWFsTGluZUNsYW1w
KCkgeyByZXR1cm4gTGluZUNsYW1wVmFsdWUoKTsgfQogICAgIHN0YXRpYyBib29sIGluaXRpYWxU
ZXh0U2l6ZUFkanVzdCgpIHsgcmV0dXJuIHRydWU7IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZU5hdmlnYXRpb25EYXRhLmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvbkRhdGEuaAkocmV2aXNpb24g
MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdmlnYXRpb25EYXRh
LmgJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIw
MTEgS3lvdW5nYSBSYSAoa3lvdW5nYS5yYUBnbWFpbC5jb20pCisgKgorICogVGhpcyBsaWJyYXJ5
IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9k
aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMK
KyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247
IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBp
biB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdB
UlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5U
QUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05V
CisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAq
CisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgc2VlIHRo
ZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LCB3cml0ZSB0bworICogdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKKyAq
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICoKKyAqLworCisjaWZuZGVmIFN0eWxlTmF2
aWdhdGlvbkRhdGFfaAorI2RlZmluZSBTdHlsZU5hdmlnYXRpb25EYXRhX2gKKworI2luY2x1ZGUg
IlN0eWxlTmF2aWdhdGlvblZhbHVlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U3R5bGVOYXZpZ2F0aW9uRGF0YSB7CitmcmllbmQgY2xhc3MgUmVuZGVyU3R5bGU7CitwdWJsaWM6
CisgICAgU3R5bGVOYXZpZ2F0aW9uRGF0YSgpIHsgfQorCisgICAgU3R5bGVOYXZpZ2F0aW9uRGF0
YShjb25zdCBTdHlsZU5hdmlnYXRpb25EYXRhJiBvKQorICAgIDogbV91cChvLm1fdXApCisgICAg
LCBtX2Rvd24oby5tX2Rvd24pCisgICAgLCBtX2xlZnQoby5tX2xlZnQpCisgICAgLCBtX3JpZ2h0
KG8ubV9yaWdodCkKKyAgICB7IH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU5h
dmlnYXRpb25EYXRhJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1fdXAgPT0gby5t
X3VwICYmIG1fZG93biA9PSBvLm1fZG93biAmJiBtX2xlZnQgPT0gby5tX2xlZnQgJiYgbV9yaWdo
dCA9PSBvLm1fcmlnaHQ7CisgICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxl
TmF2aWdhdGlvbkRhdGEmIG8pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gISgqdGhpcyA9
PSBvKTsKKyAgICB9CisgICAgICAgIAorICAgIGNvbnN0IFN0eWxlTmF2aWdhdGlvblZhbHVlJiB1
cCgpIGNvbnN0IHsgcmV0dXJuIG1fdXA7IH0KKyAgICBjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1
ZSYgZG93bigpIGNvbnN0IHsgcmV0dXJuIG1fZG93bjsgfQorICAgIGNvbnN0IFN0eWxlTmF2aWdh
dGlvblZhbHVlJiBsZWZ0KCkgY29uc3QgeyByZXR1cm4gbV9sZWZ0OyB9CisgICAgY29uc3QgU3R5
bGVOYXZpZ2F0aW9uVmFsdWUmIHJpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9yaWdodDsgfQorCitw
cml2YXRlOgorICAgIFN0eWxlTmF2aWdhdGlvblZhbHVlIG1fdXA7CisgICAgU3R5bGVOYXZpZ2F0
aW9uVmFsdWUgbV9kb3duOworICAgIFN0eWxlTmF2aWdhdGlvblZhbHVlIG1fbGVmdDsKKyAgICBT
dHlsZU5hdmlnYXRpb25WYWx1ZSBtX3JpZ2h0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYgLy8gU3R5bGVOYXZpZ2F0aW9uRGF0YV9oCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZpZ2F0aW9uVmFsdWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZpZ2F0aW9uVmFsdWUuaAkocmV2
aXNpb24gMCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdmlnYXRp
b25WYWx1ZS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDczIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEt5b3VuZ2EgUmEgKGt5b3VuZ2EucmFAZ21haWwuY29tKQorICoKKyAqIFRoaXMg
bGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IK
KyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIg
b3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJp
YnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VU
IEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBN
RVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUg
dGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp
bHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExp
YnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7
IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVl
IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxv
b3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBT
dHlsZU5hdmlnYXRpb25WYWx1ZV9oCisjZGVmaW5lIFN0eWxlTmF2aWdhdGlvblZhbHVlX2gKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBTdHlsZU5hdmlnYXRpb25WYWx1ZSB7Citmcmll
bmQgY2xhc3MgUmVuZGVyU3R5bGU7CitwdWJsaWM6CisgICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUo
KQorICAgIDptX2lkKEF0b21pY1N0cmluZygiYXV0byIpKQorICAgICwgbV90YXJnZXQoQXRvbWlj
U3RyaW5nKCJjdXJyZW50IikpIHsgfQorCisgICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUoY29uc3Qg
Y2hhciogaWQsIGNvbnN0IGNoYXIqIHRhcmdldCkKKyAgICA6bV9pZChBdG9taWNTdHJpbmcoaWQp
KQorICAgICwgbV90YXJnZXQoQXRvbWljU3RyaW5nKHRhcmdldCkpIHsgfQorCisgICAgU3R5bGVO
YXZpZ2F0aW9uVmFsdWUoY29uc3QgQXRvbWljU3RyaW5nJiBpZCwgY29uc3QgQXRvbWljU3RyaW5n
JiB0YXJnZXQgPSBBdG9taWNTdHJpbmcoImN1cnJlbnQiKSkKKyAgICA6bV9pZChpZCkKKyAgICAs
IG1fdGFyZ2V0KHRhcmdldCkgCisgICAgeyB9CisKKyAgICBib29sIGlzQXV0bygpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gbV9pZCA9PSAiYXV0byI7CisgICAgfQorCisgICAgYm9vbCBv
cGVyYXRvcj09KGNvbnN0IFN0eWxlTmF2aWdhdGlvblZhbHVlJiBvKSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG1faWQgPT0gby5tX2lkICYmIG1fdGFyZ2V0ID09IG8ubV90YXJnZXQ7Cisg
ICAgfQorCisgICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IFN0eWxlTmF2aWdhdGlvblZhbHVlJiBv
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAgfQorCisg
ICAgdm9pZCBvcGVyYXRvcj0oY29uc3QgU3R5bGVOYXZpZ2F0aW9uVmFsdWUmIG8pCisgICAgewor
ICAgICAgICBtX2lkID0gby5tX2lkOworICAgICAgICBtX3RhcmdldCA9IG8ubV90YXJnZXQ7Cisg
ICAgfQorCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiBpZCgpIGNvbnN0IHsgcmV0dXJuIG1faWQ7
IH0KKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRhcmdldCgpIGNvbnN0IHsgcmV0dXJuIG1fdGFy
Z2V0OyB9CisKK3Byb3RlY3RlZDoKKyAgICBBdG9taWNTdHJpbmcgbV9pZDsKKyAgICBBdG9taWNT
dHJpbmcgbV90YXJnZXQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBTdHlsZU5hdmlnYXRpb25WYWx1ZV9oCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCShy
ZXZpc2lvbiAxMDUyNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDcgQEAg
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSQogICAgICwgbV9wZXJzcGVj
dGl2ZU9yaWdpblkoUmVuZGVyU3R5bGU6OmluaXRpYWxQZXJzcGVjdGl2ZU9yaWdpblkoKSkKICAg
ICAsIGxpbmVDbGFtcChSZW5kZXJTdHlsZTo6aW5pdGlhbExpbmVDbGFtcCgpKQogICAgICwgbV9t
YXNrKEZpbGxMYXllcihNYXNrRmlsbExheWVyKSkKKyAgICAsIG1fbmF2KCkKICAgICAsIG1fcGFn
ZVNpemUoKQogICAgICwgbV93cmFwU2hhcGVJbnNpZGUoUmVuZGVyU3R5bGU6OmluaXRpYWxXcmFw
U2hhcGVJbnNpZGUoKSkKICAgICAsIG1fd3JhcFNoYXBlT3V0c2lkZShSZW5kZXJTdHlsZTo6aW5p
dGlhbFdyYXBTaGFwZU91dHNpZGUoKSkKQEAgLTEwNyw2ICsxMDgsNyBAQCBTdHlsZVJhcmVOb25J
bmhlcml0ZWREYXRhOjpTdHlsZVJhcmVOb25JCiAgICAgLCBtX3RyYW5zaXRpb25zKG8ubV90cmFu
c2l0aW9ucyA/IGFkb3B0UHRyKG5ldyBBbmltYXRpb25MaXN0KCpvLm1fdHJhbnNpdGlvbnMpKSA6
IG51bGxwdHIpCiAgICAgLCBtX21hc2soby5tX21hc2spCiAgICAgLCBtX21hc2tCb3hJbWFnZShv
Lm1fbWFza0JveEltYWdlKQorICAgICwgbV9uYXYoby5tX25hdikKICAgICAsIG1fcGFnZVNpemUo
by5tX3BhZ2VTaXplKQogICAgICwgbV93cmFwU2hhcGVJbnNpZGUoby5tX3dyYXBTaGFwZUluc2lk
ZSkKICAgICAsIG1fd3JhcFNoYXBlT3V0c2lkZShvLm1fd3JhcFNoYXBlT3V0c2lkZSkKQEAgLTE5
MCw2ICsxOTIsNyBAQCBib29sIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yCiAg
ICAgICAgICYmIHRyYW5zaXRpb25EYXRhRXF1aXZhbGVudChvKQogICAgICAgICAmJiBtX21hc2sg
PT0gby5tX21hc2sKICAgICAgICAgJiYgbV9tYXNrQm94SW1hZ2UgPT0gby5tX21hc2tCb3hJbWFn
ZQorICAgICAgICAmJiBtX25hdiA9PSBvLm1fbmF2CiAgICAgICAgICYmIChtX3RyYW5zZm9ybVN0
eWxlM0QgPT0gby5tX3RyYW5zZm9ybVN0eWxlM0QpCiAgICAgICAgICYmIChtX2JhY2tmYWNlVmlz
aWJpbGl0eSA9PSBvLm1fYmFja2ZhY2VWaXNpYmlsaXR5KQogICAgICAgICAmJiAobV9wZXJzcGVj
dGl2ZSA9PSBvLm1fcGVyc3BlY3RpdmUpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgJKHJldmlz
aW9uIDEwNTI0NikKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNs
dWRlICJGaWxsTGF5ZXIuaCIKICNpbmNsdWRlICJMaW5lQ2xhbXBWYWx1ZS5oIgogI2luY2x1ZGUg
Ik5pbmVQaWVjZUltYWdlLmgiCisjaW5jbHVkZSAiU3R5bGVOYXZpZ2F0aW9uRGF0YS5oIgogI2lu
Y2x1ZGUgPHd0Zi9Pd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KQEAgLTEzMyw2ICsxMzQsNyBAQCBwdWJsaWM6CiAKICAgICBGaWxs
TGF5ZXIgbV9tYXNrOwogICAgIE5pbmVQaWVjZUltYWdlIG1fbWFza0JveEltYWdlOworICAgIFN0
eWxlTmF2aWdhdGlvbkRhdGEgbV9uYXY7CiAKICAgICBMZW5ndGhTaXplIG1fcGFnZVNpemU7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123446</attachid>
            <date>2012-01-21 06:13:31 -0800</date>
            <delta_ts>2013-07-25 02:24:24 -0700</delta_ts>
            <desc>Patch_v2 is including the reviewer&apos;s comment.</desc>
            <filename>66027_v2.patch</filename>
            <type>text/plain</type>
            <size>31411</size>
            <attacher name="kyounga">kyounga.ra</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDEwNTQ2OSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAxLTE5ICBLeW91bmdh
IFJhICA8a3lvdW5nYS5yYUBnbWFpbC5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2Ny
aXB0aW9uIGFuZCBidWcgVVJMIChPT1BTISkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdHMuIChPT1BTISkKKworICAgICAgICAqIFdl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBjc3MvQ1NTQ29tcHV0
ZWRTdHlsZURlY2xhcmF0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om5hdkRpclRvQ1NTVmFs
dWUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uOjpnZXRQ
cm9wZXJ0eUNTU1ZhbHVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAq
IGNzcy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZh
bHVlKToKKyAgICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9w
ZXJ0eU5hbWVzLmluOgorICAgICAgICAqIGNzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eU5hdkRpcmVjdGlvbjo6YXBwbHlWYWx1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpBcHBseVByb3BlcnR5TmF2RGlyZWN0aW9uOjpjcmVhdGVIYW5k
bGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVB
cHBseVByb3BlcnR5KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OmdldFN0eWxlTmF2aWdhdGlvblZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5k
bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmhhbmRsZUNTU0ZvY3VzTmF2aWdhdGlvbik6Cisg
ICAgICAgICogcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5
bGUvUmVuZGVyU3R5bGUuaDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRz
OjpuYXZEb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpuYXZM
ZWZ0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpuYXZSaWdodCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTdHlsZUJpdGZpZWxkczo6bmF2VXApOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OnNldE5hdkRvd24pOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OnNldE5hdkxlZnQpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU3R5bGVCaXRmaWVsZHM6OnNldE5hdlJpZ2h0KToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclN0eWxlQml0ZmllbGRzOjpzZXROYXZVcCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJTdHlsZUJpdGZpZWxkczo6aW5pdGlhbFN0eWxlTmF2aWdhdGlvbik6CisgICAgICAgICog
cmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvbkRhdGEuaDogQWRkZWQuCisgICAgICAgIChX
ZWJDb3JlOjpTdHlsZU5hdmlnYXRpb25EYXRhOjpTdHlsZU5hdmlnYXRpb25EYXRhKToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvbkRhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAo
V2ViQ29yZTo6U3R5bGVOYXZpZ2F0aW9uRGF0YTo6b3BlcmF0b3IhPSk6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZU5hdmlnYXRpb25EYXRhOjp1cCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZU5h
dmlnYXRpb25EYXRhOjpkb3duKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvbkRh
dGE6OmxlZnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVOYXZpZ2F0aW9uRGF0YTo6cmlnaHQp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZU5hdmlnYXRpb25WYWx1ZS5oOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvblZhbHVlOjptX3RhcmdldCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZU5hdmlnYXRpb25WYWx1ZTo6aXNBdXRvKToKKyAgICAgICAg
KFdlYkNvcmU6OlN0eWxlTmF2aWdhdGlvblZhbHVlOjpvcGVyYXRvcj09KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlTmF2aWdhdGlvblZhbHVlOjpvcGVyYXRvciE9KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlTmF2aWdhdGlvblZhbHVlOjpvcGVyYXRvcj0pOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVOYXZpZ2F0aW9uVmFsdWU6OmlkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlTmF2aWdh
dGlvblZhbHVlOjp0YXJnZXQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVy
aXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YTo6b3BlcmF0b3I9PSk6CisgICAgICAgICogcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaDoKKwogMjAxMi0wMS0xOSAgQ2Fy
eSBDbGFyayAgPGNhcnljbGFya0Bnb29nbGUuY29tPgogCiAgICAgICAgIFtTa2lhIE1hY10gTWF0
Y2ggc3R5bGUgb2YgcGxhdGZvcm0gZXJyb3IgdW5kZXJsaW5lIGZvciBtaXNzcGVsbGluZ3MKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMzI2Niw2ICszMjY2LDggQEAKIAkJ
OTNGOUI3QTAwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRjlCNzlFMEJBNjAzMjYwMDg1
NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5jcHAgKi87IH07CiAJCTkzRjlCN0ExMEJBNjAzMjYwMDg1
NDA2NCAvKiBKU0NEQVRBU2VjdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gOTNGOUI3OUYwQkE2MDMyNjAwODU0MDY0IC8qIEpTQ0RBVEFTZWN0aW9u
LmggKi87IH07CiAJCTkzRkRBRkNBMEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rp
b24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzRkRB
RkM5MEIxMTMwNzQwMEUyNzQ2RiAvKiBFZGl0b3JJbnNlcnRBY3Rpb24uaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQk5NTFFNzgzNzE0Qzg0QTNEMDA5
N0VDM0MgLyogU3R5bGVOYXZpZ2F0aW9uRGF0YS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gOTUxRTc4MzUxNEM4NEEzRDAwOTdFQzNDIC8qIFN0eWxlTmF2
aWdhdGlvbkRhdGEuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OworCQk5NTFFNzgzODE0Qzg0QTNEMDA5N0VDM0MgLyogU3R5bGVOYXZpZ2F0aW9uVmFsdWUu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDk1MUU3ODM2
MTRDODRBM0QwMDk3RUMzQyAvKiBTdHlsZU5hdmlnYXRpb25WYWx1ZS5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTk2QUJBNDIzMTRCQ0I4MEUwMEQ1
NjIwNCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA5NkFCQTQyMjE0QkNCODBFMDBENTYyMDQg
LyogR3JhcGhpY3NDb250ZXh0M0RPcGVuR0xDb21tb24uY3BwICovOyB9OwogCQk5NzA1OTk3NzEw
N0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gOTcwNTk5NzMxMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNhbGxiYWNrLmNwcCAqLzsgfTsKIAkJOTcwNTk5NzgxMDdEOTc1MjAwQTUwQTdDIC8qIFBv
bGljeUNhbGxiYWNrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA5NzA1OTk3NDEwN0Q5NzUyMDBBNTBBN0MgLyogUG9saWN5Q2FsbGJhY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAwNzUsNiArMTAw
NzcsOCBAQAogCQk5M0Y5Qjc5RTBCQTYwMzI2MDA4NTQwNjQgLyogSlNDREFUQVNlY3Rpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNDREFUQVNlY3Rpb24uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5M0Y5Qjc5RjBCQTYwMzI2MDA4NTQwNjQg
LyogSlNDREFUQVNlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlND
REFUQVNlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTNGREFGQzkwQjEx
MzA3NDAwRTI3NDZGIC8qIEVkaXRvckluc2VydEFjdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuYy5oOyBwYXRoID0gRWRpdG9ySW5zZXJ0QWN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CisJCTk1MUU3ODM1MTRDODRBM0QwMDk3RUMzQyAvKiBTdHlsZU5hdmlnYXRpb25EYXRh
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IFN0eWxlTmF2aWdhdGlvbkRhdGEu
aDsgcGF0aCA9IHJlbmRlcmluZy9zdHlsZS9TdHlsZU5hdmlnYXRpb25EYXRhLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CisJCTk1MUU3ODM2MTRDODRBM0QwMDk3RUMzQyAvKiBTdHlsZU5h
dmlnYXRpb25WYWx1ZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBTdHlsZU5h
dmlnYXRpb25WYWx1ZS5oOyBwYXRoID0gcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvblZh
bHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk2QUJBNDIyMTRCQ0I4MEUwMEQ1
NjIwNCAvKiBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBHcmFwaGljc0NvbnRleHQzRE9wZW5HTENvbW1vbi5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5OTczMTA3RDk3NTIwMEE1MEE3QyAv
KiBQb2xpY3lDYWxsYmFjay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBQb2xpY3lDYWxsYmFjay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTk3MDU5
OTc0MTA3RDk3NTIwMEE1MEE3QyAvKiBQb2xpY3lDYWxsYmFjay5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBQb2xpY3lDYWxsYmFjay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMTMzMTcsNiArMTMzMjEsOCBAQAogCQkwODY3RDY5MUZFODQwMjhGQzAyQUFDMDcg
LyogV2ViS2l0ICovID0gewogCQkJaXNhID0gUEJYR3JvdXA7CiAJCQljaGlsZHJlbiA9ICgKKwkJ
CQk5NTFFNzgzNTE0Qzg0QTNEMDA5N0VDM0MgLyogU3R5bGVOYXZpZ2F0aW9uRGF0YS5oICovLAor
CQkJCTk1MUU3ODM2MTRDODRBM0QwMDk3RUMzQyAvKiBTdHlsZU5hdmlnYXRpb25WYWx1ZS5oICov
LAogCQkJCTY1Qzk3QUYyMDhFQTkwODgwMEFDRDI3MyAvKiBjb25maWcuaCAqLywKIAkJCQlFREVD
OTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29yZVByZWZpeC5oICovLAogCQkJCTkzMDcwNjEz
MDlFMENBODIwMEIxN0ZFNCAvKiBEZXJpdmVkU291cmNlcy5tYWtlICovLApAQCAtMjQwMjgsNiAr
MjQwMzQsOCBAQAogCQkJCTUwQUNFMkNCMTRCNUQ3OTMwMDQ0NjY2NiAvKiBDdXN0b21GaWx0ZXJP
cGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTdBQ0Q4OEQ0MTRDMDhCRDYwMDg0RUREMiAv
KiBJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTEwODlEMzIx
NEMzMzYwMDAwNUFGQzQ5IC8qIEpTVWludDhDbGFtcGVkQXJyYXkuaCBpbiBIZWFkZXJzICovLAor
CQkJCTk1MUU3ODM3MTRDODRBM0QwMDk3RUMzQyAvKiBTdHlsZU5hdmlnYXRpb25EYXRhLmggaW4g
SGVhZGVycyAqLywKKwkJCQk5NTFFNzgzODE0Qzg0QTNEMDA5N0VDM0MgLyogU3R5bGVOYXZpZ2F0
aW9uVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL1dlYkNvcmUvY3NzL0NTU0Nv
bXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAJKHJldmlzaW9uIDEwNTI0NikKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMzMsNiArMTMzLDEwIEBAIHN0YXRpYyBjb25zdCBpbnQgY29tcHV0ZWRQ
cm9wZXJ0aWVzW10gPSAKICAgICBDU1NQcm9wZXJ0eU1heFdpZHRoLAogICAgIENTU1Byb3BlcnR5
TWluSGVpZ2h0LAogICAgIENTU1Byb3BlcnR5TWluV2lkdGgsCisgICAgQ1NTUHJvcGVydHlOYXZE
b3duLAorICAgIENTU1Byb3BlcnR5TmF2TGVmdCwKKyAgICBDU1NQcm9wZXJ0eU5hdlJpZ2h0LAor
ICAgIENTU1Byb3BlcnR5TmF2VXAsCiAgICAgQ1NTUHJvcGVydHlPcGFjaXR5LAogICAgIENTU1By
b3BlcnR5T3JwaGFucywKICAgICBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvciwKQEAgLTExNDQsNiAr
MTE0OCwxNSBAQCBzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTCiAgICAg
cmV0dXJuIGxpc3QucmVsZWFzZSgpOwogfQogCitzdGF0aWMgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
bmF2RGlyVG9DU1NWYWx1ZShjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgbmF2VmFsdWUsIENT
U1ZhbHVlUG9vbCogY3NzVmFsdWVQb29sKQoreworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxp
c3QgPSBDU1NWYWx1ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgbGlzdC0+YXBw
ZW5kKGNzc1ZhbHVlUG9vbC0+Y3JlYXRlVmFsdWUobmF2VmFsdWUuaWQoKS5zdHJpbmcoKSwgQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkcpKTsKKyAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQ
b29sLT5jcmVhdGVWYWx1ZShuYXZWYWx1ZS50YXJnZXQoKS5zdHJpbmcoKSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TVFJJTkcpKTsKKworICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKK30KKyAg
ICAKIHN0YXRpYyB2b2lkIGxvZ1VuaW1wbGVtZW50ZWRQcm9wZXJ0eUlEKGludCBwcm9wZXJ0eUlE
KQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoSGFzaFNldDxpbnQ+LCBwcm9wZXJ0eUlEU2V0
LCAoKSk7CkBAIC0xNzEyLDYgKzE3MjUsMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4gQ1NTQ29t
cHV0ZWRTdHlsZURlYwogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC0+Y3JlYXRlVmFs
dWUoc3R5bGUtPm1pbkhlaWdodCgpKTsKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldpZHRo
OgogICAgICAgICAgICAgcmV0dXJuIGNzc1ZhbHVlUG9vbC0+Y3JlYXRlVmFsdWUoc3R5bGUtPm1p
bldpZHRoKCkpOworICAgICAgICBjYXNlIENTU1Byb3BlcnR5TmF2RG93bjoKKyAgICAgICAgICAg
IHJldHVybiBuYXZEaXJUb0NTU1ZhbHVlKHN0eWxlLT5uYXZEb3duKCksIGNzc1ZhbHVlUG9vbCk7
CisgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgICAgICAgICAgcmV0dXJuIG5h
dkRpclRvQ1NTVmFsdWUoc3R5bGUtPm5hdkxlZnQoKSwgY3NzVmFsdWVQb29sKTsKKyAgICAgICAg
Y2FzZSBDU1NQcm9wZXJ0eU5hdlJpZ2h0OgorICAgICAgICAgICAgcmV0dXJuIG5hdkRpclRvQ1NT
VmFsdWUoc3R5bGUtPm5hdlJpZ2h0KCksIGNzc1ZhbHVlUG9vbCk7CisgICAgICAgIGNhc2UgQ1NT
UHJvcGVydHlOYXZVcDoKKyAgICAgICAgICAgIHJldHVybiBuYXZEaXJUb0NTU1ZhbHVlKHN0eWxl
LT5uYXZVcCgpLCBjc3NWYWx1ZVBvb2wpOwogICAgICAgICBjYXNlIENTU1Byb3BlcnR5T3BhY2l0
eToKICAgICAgICAgICAgIHJldHVybiBjc3NWYWx1ZVBvb2wtPmNyZWF0ZVZhbHVlKHN0eWxlLT5v
cGFjaXR5KCksIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTlVNQkVSKTsKICAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eU9ycGhhbnM6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkJKHJldmlzaW9u
IDEwNTI0NikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkJKHdvcmtpbmcgY29w
eSkKQEAgLTEwMCw3ICsxMDAsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZh
bCwgdm9pCiAKICV9CiAKLSVleHBlY3QgNTUKKyVleHBlY3QgNTYKIAogJW5vbmFzc29jIExPV0VT
VF9QUkVDCiAKQEAgLTE0MjUsNiArMTQyNSw3IEBAIHRlcm06CiAgIHwgVVJJIG1heWJlX3NwYWNl
IHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpDU1NfVVJJOyB9CiAgIHwgVU5JQ09ERVJBTkdFIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAk
JC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfVU5JQ09ERV9S
QU5HRTsgfQogICB8IEhFWCBtYXliZV9zcGFjZSB7ICQkLmlkID0gMDsgJCQuc3RyaW5nID0gJDE7
ICQkLnVuaXQgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUjsgfQorICB8
IElEU0VMIG1heWJlX3NwYWNlIHsgJCQuaWQgPSAwOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOyB9CiAgIHwgJyMnIG1heWJlX3NwYWNlIHsg
JCQuaWQgPSAwOyAkJC5zdHJpbmcgPSBDU1NQYXJzZXJTdHJpbmcoKTsgJCQudW5pdCA9IENTU1By
aW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9IC8qIEhhbmRsZSBlcnJvciBjYXNl
OiAiY29sb3I6ICM7IiAqLwogICAvKiBGSVhNRTogYWNjb3JkaW5nIHRvIHRoZSBzcGVjcyBhIGZ1
bmN0aW9uIGNhbiBoYXZlIGEgdW5hcnlfb3BlcmF0b3IgaW4gZnJvbnQuIEkga25vdyBubyBjYXNl
IHdoZXJlIHRoaXMgbWFrZXMgc2Vuc2UgKi8KICAgfCBmdW5jdGlvbiB7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcAkocmV2aXNpb24gMTA1MjQ2KQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1BhcnNlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE5MDAsNiArMTkwMCwyNCBAQCBib29s
IENTU1BhcnNlcjo6cGFyc2VWYWx1ZShpbnQgcHJvcElkLCBiCiAgICAgICAgIGlmIChpZCA9PSBD
U1NWYWx1ZUF1dG8gfHwgaWQgPT0gQ1NTVmFsdWVXZWJraXRPcHRpbWl6ZUNvbnRyYXN0KQogICAg
ICAgICAgICAgdmFsaWRQcmltaXRpdmUgPSB0cnVlOwogICAgICAgICBicmVhazsKKyAgICBjYXNl
IENTU1Byb3BlcnR5TmF2RG93bjogLy8gYXV0byB8IDxpZD4gdGFyZ2V0ZnJhbWUgfCBpbmhlcml0
CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlJp
Z2h0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZVcDoKKyAgICAgICAgaWYgKGlkID09IENTU1Zh
bHVlQXV0bworICAgICAgICAgICAgfHwgKG51bSA9PSAxICYmICh2YWx1ZS0+dW5pdCA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORyB8fCB2YWx1ZS0+dW5pdCA9PSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUikpKSB7CisgICAgICAgICAgICB2YWx1ZS0+dW5pdCA9
IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HOworICAgICAgICAgICAgdmFsaWRQcmltaXRp
dmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKG51bSA9PSAyKSB7CisgICAgICAgICAgICBS
ZWZQdHI8Q1NTVmFsdWVMaXN0PiBsaXN0ID0gQ1NTVmFsdWVMaXN0OjpjcmVhdGVTcGFjZVNlcGFy
YXRlZCgpOworICAgICAgICAgICAgd2hpbGUgKHZhbHVlKSB7CisgICAgICAgICAgICAgICAgbGlz
dC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLT5jcmVhdGVWYWx1ZSh2YWx1ZS0+c3RyaW5nLCBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORykpOworICAgICAgICAgICAgICAgIHZhbHVlID0gbV92
YWx1ZUxpc3QtPm5leHQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcnNlZFZhbHVl
ID0gbGlzdC5yZWxlYXNlKCk7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICBicmVhazsKICAgICAvLyBFbmQgb2YgQ1NTMyBwcm9wZXJ0aWVzCiAKICAg
ICAvLyBBcHBsZSBzcGVjaWZpYyBwcm9wZXJ0aWVzLiAgVGhlc2Ugd2lsbCBuZXZlciBiZSBzdGFu
ZGFyZGl6ZWQgYW5kIGFyZSBwdXJlbHkgdG8KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQ
cm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmNwcAkocmV2aXNpb24gMTA1MjQ2KQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDU0LDYgKzQ1NCwxMCBAQCBib29sIENTU1Byb3BlcnR5
Ojppc0luaGVyaXRlZFByb3BlcnR5KHVuCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1heFdpZHRoOgog
ICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5IZWlnaHQ6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU1pbldp
ZHRoOgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZEb3duOgorICAgIGNhc2UgQ1NTUHJvcGVydHlO
YXZMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZSaWdodDoKKyAgICBjYXNlIENTU1Byb3Bl
cnR5TmF2VXA6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU9wYWNpdHk6CiAgICAgY2FzZSBDU1NQcm9w
ZXJ0eU91dGxpbmU6CiAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVDb2xvcjoKSW5kZXg6IFNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQcm9wZXJ0eU5hbWVzLmluCShyZXZpc2lvbiAxMDUyNDYpCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlOYW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAt
MTE5LDYgKzExOSwxMCBAQCBtYXgtaGVpZ2h0CiBtYXgtd2lkdGgKIG1pbi1oZWlnaHQKIG1pbi13
aWR0aAorbmF2LWRvd24KK25hdi1sZWZ0CituYXYtcmlnaHQKK25hdi11cAogb3BhY2l0eQogLy8g
SG9ub3IgLXdlYmtpdC1vcGFjaXR5IGFzIGEgc3lub255bSBmb3Igb3BhY2l0eS4gVGhpcyB3YXMg
dGhlIG9ubHkgc3ludGF4IHRoYXQgd29ya2VkIGluIFNhZmFyaSAxLjEsCiAvLyBhbmQgbWF5IGJl
IGluIHVzZSBvbiBzb21lIHdlYnNpdGVzIGFuZCB3aWRnZXRzLgpJbmRleDogU291cmNlL1dlYkNv
cmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDEwNTI0NikKKysr
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xNjExLDYgKzE2MTEsMzAgQEAgcHVibGljOgogICAgIH0KIH07CiAKK3RlbXBsYXRl
IDx0eXBlbmFtZSBHZXR0ZXJUeXBlLCBHZXR0ZXJUeXBlIChSZW5kZXJTdHlsZTo6KmdldHRlckZ1
bmN0aW9uKSgpIGNvbnN0LCB0eXBlbmFtZSBTZXR0ZXJUeXBlLCB2b2lkIChSZW5kZXJTdHlsZTo6
KnNldHRlckZ1bmN0aW9uKShTZXR0ZXJUeXBlKSwgdHlwZW5hbWUgSW5pdGlhbFR5cGUsIEluaXRp
YWxUeXBlICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgorY2xhc3MgQXBwbHlQcm9wZXJ0eU5hdkRpcmVj
dGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBwbHlWYWx1ZShDU1NTdHlsZVNlbGVj
dG9yKiBzZWxlY3RvciwgQ1NTVmFsdWUqIHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHZhbHVl
LT5pc1ByaW1pdGl2ZVZhbHVlKCkpIHsKKyAgICAgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVlKiBw
cmltaXRpdmVWYWx1ZSA9IHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpOwor
CisgICAgICAgICAgICBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVB
dXRvKQorICAgICAgICAgICAgICAgIChzZWxlY3Rvci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9u
KSgoKmluaXRpYWxGdW5jdGlvbikoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVW
YWx1ZS0+cHJpbWl0aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HCisg
ICAgICAgICAgICAgICAgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUikKKyAgICAgICAgICAgICAgICAoc2Vs
ZWN0b3ItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc2VsZWN0b3ItPmdldFN0eWxlTmF2aWdh
dGlvblZhbHVlKHZhbHVlKSk7CisgICAgICAgIH0gZWxzZSBpZiAodmFsdWUtPmlzVmFsdWVMaXN0
KCkpCisgICAgICAgICAgICAoc2VsZWN0b3ItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbikoc2Vs
ZWN0b3ItPmdldFN0eWxlTmF2aWdhdGlvblZhbHVlKHZhbHVlKSk7CisgICAgfQorCisgICAgc3Rh
dGljIFByb3BlcnR5SGFuZGxlciBjcmVhdGVIYW5kbGVyKCkKKyAgICB7CisgICAgICAgIFByb3Bl
cnR5SGFuZGxlciBoYW5kbGVyID0gQXBwbHlQcm9wZXJ0eURlZmF1bHRCYXNlPEdldHRlclR5cGUs
IGdldHRlckZ1bmN0aW9uLCBTZXR0ZXJUeXBlLCBzZXR0ZXJGdW5jdGlvbiwgSW5pdGlhbFR5cGUs
IGluaXRpYWxGdW5jdGlvbj46OmNyZWF0ZUhhbmRsZXIoKTsKKyAgICAgICAgcmV0dXJuIFByb3Bl
cnR5SGFuZGxlcihoYW5kbGVyLmluaGVyaXRGdW5jdGlvbigpLCBoYW5kbGVyLmluaXRpYWxGdW5j
dGlvbigpLCAmYXBwbHlWYWx1ZSk7CisgICAgfQorfTsKKyAgICAKIGNvbnN0IENTU1N0eWxlQXBw
bHlQcm9wZXJ0eSYgQ1NTU3R5bGVBcHBseVByb3BlcnR5OjpzaGFyZWRDU1NTdHlsZUFwcGx5UHJv
cGVydHkoKQogewogICAgIERFRklORV9TVEFUSUNfTE9DQUwoQ1NTU3R5bGVBcHBseVByb3BlcnR5
LCBjc3NTdHlsZUFwcGx5UHJvcGVydHlJbnN0YW5jZSwgKCkpOwpAQCAtMTg4NCw2ICsxOTA4LDEx
IEBAIENTU1N0eWxlQXBwbHlQcm9wZXJ0eTo6Q1NTU3R5bGVBcHBseVByb3AKIAogICAgIHNldFBy
b3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVpJbmRleCwgQXBwbHlQcm9wZXJ0eUF1dG88aW50LCAm
UmVuZGVyU3R5bGU6OnpJbmRleCwgJlJlbmRlclN0eWxlOjpzZXRaSW5kZXgsICZSZW5kZXJTdHls
ZTo6aGFzQXV0b1pJbmRleCwgJlJlbmRlclN0eWxlOjpzZXRIYXNBdXRvWkluZGV4Pjo6Y3JlYXRl
SGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlab29tLCBBcHBs
eVByb3BlcnR5Wm9vbTo6Y3JlYXRlSGFuZGxlcigpKTsKKworICAgIHNldFByb3BlcnR5SGFuZGxl
cihDU1NQcm9wZXJ0eU5hdkRvd24sIEFwcGx5UHJvcGVydHlOYXZEaXJlY3Rpb248U3R5bGVOYXZp
Z2F0aW9uVmFsdWUsICZSZW5kZXJTdHlsZTo6bmF2RG93biwgU3R5bGVOYXZpZ2F0aW9uVmFsdWUs
ICZSZW5kZXJTdHlsZTo6c2V0TmF2RG93biwgU3R5bGVOYXZpZ2F0aW9uVmFsdWUsICZSZW5kZXJT
dHlsZTo6aW5pdGlhbFN0eWxlTmF2aWdhdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7CisgICAgc2V0
UHJvcGVydHlIYW5kbGVyKENTU1Byb3BlcnR5TmF2TGVmdCwgQXBwbHlQcm9wZXJ0eU5hdkRpcmVj
dGlvbjxTdHlsZU5hdmlnYXRpb25WYWx1ZSwgJlJlbmRlclN0eWxlOjpuYXZMZWZ0LCBTdHlsZU5h
dmlnYXRpb25WYWx1ZSwgJlJlbmRlclN0eWxlOjpzZXROYXZMZWZ0LCBTdHlsZU5hdmlnYXRpb25W
YWx1ZSwgJlJlbmRlclN0eWxlOjppbml0aWFsU3R5bGVOYXZpZ2F0aW9uPjo6Y3JlYXRlSGFuZGxl
cigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlOYXZSaWdodCwgQXBwbHlQ
cm9wZXJ0eU5hdkRpcmVjdGlvbjxTdHlsZU5hdmlnYXRpb25WYWx1ZSwgJlJlbmRlclN0eWxlOjpu
YXZSaWdodCwgU3R5bGVOYXZpZ2F0aW9uVmFsdWUsICZSZW5kZXJTdHlsZTo6c2V0TmF2UmlnaHQs
IFN0eWxlTmF2aWdhdGlvblZhbHVlLCAmUmVuZGVyU3R5bGU6OmluaXRpYWxTdHlsZU5hdmlnYXRp
b24+OjpjcmVhdGVIYW5kbGVyKCkpOworICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0
eU5hdlVwLCBBcHBseVByb3BlcnR5TmF2RGlyZWN0aW9uPFN0eWxlTmF2aWdhdGlvblZhbHVlLCAm
UmVuZGVyU3R5bGU6Om5hdlVwLCBTdHlsZU5hdmlnYXRpb25WYWx1ZSwgJlJlbmRlclN0eWxlOjpz
ZXROYXZVcCwgU3R5bGVOYXZpZ2F0aW9uVmFsdWUsICZSZW5kZXJTdHlsZTo6aW5pdGlhbFN0eWxl
TmF2aWdhdGlvbj46OmNyZWF0ZUhhbmRsZXIoKSk7ICAgIAogfQogCiAKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzg0
NSw2ICszODQ1LDEwIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQK
ICAgICBjYXNlIENTU1Byb3BlcnR5V2Via2l0V3JhcDoKICAgICBjYXNlIENTU1Byb3BlcnR5Wklu
ZGV4OgogICAgIGNhc2UgQ1NTUHJvcGVydHlab29tOgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZE
b3duOgorICAgIGNhc2UgQ1NTUHJvcGVydHlOYXZMZWZ0OgorICAgIGNhc2UgQ1NTUHJvcGVydHlO
YXZSaWdodDoKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6CiAgICAgICAgIEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgICAgICByZXR1cm47CiAjaWYgRU5BQkxFKFNWRykKQEAgLTQ0NTEsNiAr
NDQ1NSwyNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcE5pbmVQaWVjZUltYWdlCiAgICAg
aW1hZ2Uuc2V0VmVydGljYWxSdWxlKHZlcnRpY2FsUnVsZSk7CiB9CiAKK1N0eWxlTmF2aWdhdGlv
blZhbHVlIENTU1N0eWxlU2VsZWN0b3I6OmdldFN0eWxlTmF2aWdhdGlvblZhbHVlKENTU1ZhbHVl
KiB2YWx1ZSkKK3sKKyAgICBpZiAodmFsdWUtPmlzVmFsdWVMaXN0KCkpIHsKKyAgICAgICAgQ1NT
VmFsdWVMaXN0KiBsaXN0ID0gc3RhdGljX2Nhc3Q8Q1NTVmFsdWVMaXN0Kj4odmFsdWUpOworICAg
ICAgICBTdHJpbmdJbXBsKiB2YWxbMl0gPSB7MH07CisgICAgICAgIENTU1ByaW1pdGl2ZVZhbHVl
KiBwcmltaXRpdmVWYWx1ZSA9IDA7CisKKyAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCAy
OyBpKyspIHsKKyAgICAgICAgICAgIENTU1ZhbHVlKiBpdGVtID0gbGlzdC0+aXRlbVdpdGhvdXRC
b3VuZHNDaGVjayhpKTsKKyAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgp
KQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUg
PSBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworICAgICAgICAgICAgaWYg
KHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19TVFJJTkcpCisgICAgICAgICAgICAgICAgdmFsW2ldID0gcHJpbWl0aXZlVmFsdWUtPmdldFN0
cmluZ1ZhbHVlKCkuaW1wbCgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBTdHlsZU5hdmln
YXRpb25WYWx1ZShBdG9taWNTdHJpbmcodmFsWzBdKSwgQXRvbWljU3RyaW5nKHZhbFsxXSkpOwor
ICAgIH0KKworICAgIHJldHVybiBTdHlsZU5hdmlnYXRpb25WYWx1ZShBdG9taWNTdHJpbmcoc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFN0cmluZ1ZhbHVlKCkpKTsg
ICAgCit9CisKIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6Y2hlY2tGb3JUZXh0U2l6ZUFkanVzdCgp
CiB7CiAgICAgaWYgKG1fc3R5bGUtPnRleHRTaXplQWRqdXN0KCkpCkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTM1MCw2ICszNTAs
OSBAQCBwdWJsaWM6CiAgICAgdm9pZCBtYXBOaW5lUGllY2VJbWFnZVNsaWNlKENTU1ZhbHVlKiwg
TmluZVBpZWNlSW1hZ2UmKTsKICAgICBMZW5ndGhCb3ggbWFwTmluZVBpZWNlSW1hZ2VRdWFkKENT
U1ZhbHVlKik7CiAgICAgdm9pZCBtYXBOaW5lUGllY2VJbWFnZVJlcGVhdChDU1NWYWx1ZSosIE5p
bmVQaWVjZUltYWdlJik7CisKK3B1YmxpYzoKKyAgICBTdHlsZU5hdmlnYXRpb25WYWx1ZSBnZXRT
dHlsZU5hdmlnYXRpb25WYWx1ZShDU1NWYWx1ZSopOwogcHJpdmF0ZToKICAgICBib29sIGNhblNo
YXJlU3R5bGVXaXRoQ29udHJvbChTdHlsZWRFbGVtZW50KikgY29uc3Q7CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA4Nyw2ICsz
MDg3LDkgQEAgdm9pZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZAogICAgIGlm
IChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKICAgICAgICAgcmV0dXJuOwog
CisgICAgaWYgKHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5oYW5kbGVDU1NGb2N1c05hdmlnYXRp
b24oZm9jdXNEaXJlY3Rpb24pKQorICAgICAgICByZXR1cm47CisKICAgICBpZiAocGFnZS0+Zm9j
dXNDb250cm9sbGVyKCktPmFkdmFuY2VGb2N1cyhmb2N1c0RpcmVjdGlvbiwgZXZlbnQpKQogICAg
ICAgICBldmVudC0+c2V0RGVmYXVsdEhhbmRsZWQoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDEwNTI0NikKKysrIFNvdXJjZS9XZWJD
b3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTgsNiArNTgs
NyBAQAogI2luY2x1ZGUgIldpZGdldC5oIgogI2luY2x1ZGUgImh0bWxlZGl0aW5nLmgiIC8vIEZv
ciBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUKICNpbmNsdWRlIDxsaW1pdHM+CisjaW5jbHVk
ZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTc4MCw0
ICs3ODEsODAgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdAogICAg
IHJldHVybiBjb25zdW1lZDsKIH0KIAorYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmhhbmRsZUNTU0Zv
Y3VzTmF2aWdhdGlvbihGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCit7CisgICAgREVGSU5FX1NU
QVRJQ19MT0NBTChBdG9taWNTdHJpbmcsIEN1cnJlbnQsICgiY3VycmVudCIpKTsKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgUm9vdCwgKCJyb290IikpOworCisgICAgRnJh
bWUqIGN1ckZyYW1lID0gZm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgQVNTRVJUKGN1ckZyYW1l
KTsKKworICAgIERvY3VtZW50KiBmb2N1c2VkRG9jdW1lbnQgPSBjdXJGcmFtZS0+ZG9jdW1lbnQo
KTsKKyAgICBpZiAoIWZvY3VzZWREb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgTm9kZSogZm9jdXNlZE5vZGUgPSBmb2N1c2VkRG9jdW1lbnQtPmZvY3VzZWROb2RlKCk7Cisg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IGZvY3VzZWROb2RlID8gZm9jdXNlZE5vZGUtPnJl
bmRlcmVyKCkgOiAwOworICAgIGlmICghcmVuZGVyZXIpCisgICAgICAgIHJldHVybiBmYWxzZTsK
KworICAgIFN0eWxlTmF2aWdhdGlvblZhbHVlIHZhbHVlOworICAgIHN3aXRjaCAoZGlyZWN0aW9u
KSB7CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbkZvcndhcmQ6CisgICAgY2FzZSBGb2N1c0RpcmVj
dGlvbkJhY2t3YXJkOgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgY2FzZSBGb2N1c0RpcmVj
dGlvblVwOgorICAgICAgICB2YWx1ZSA9IHJlbmRlcmVyLT5zdHlsZSgpLT5uYXZVcCgpOworICAg
ICAgICBicmVhazsKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRG93bjoKKyAgICAgICAgdmFsdWUg
PSByZW5kZXJlci0+c3R5bGUoKS0+bmF2RG93bigpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IEZvY3VzRGlyZWN0aW9uTGVmdDoKKyAgICAgICAgdmFsdWUgPSByZW5kZXJlci0+c3R5bGUoKS0+
bmF2TGVmdCgpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uUmlnaHQ6
CisgICAgICAgIHZhbHVlID0gcmVuZGVyZXItPnN0eWxlKCktPm5hdlJpZ2h0KCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25Ob25lOgorICAgIGRlZmF1bHQ6CisgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBp
ZiAodmFsdWUuaWQoKS5pc051bGwoKSB8fCB2YWx1ZS5pc0F1dG8oKSkKKyAgICAgICAgcmV0dXJu
IGZhbHNlOworCisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YXJnZXQgPSB2YWx1ZS50YXJnZXQo
KTsKKyAgICBGcmFtZSogdGFyZ2V0RnJhbWUgPSAwOworCisgICAgLy8gSWYgd2Ugd2VyZSBpbiB0
aGUgYXV0b3Njcm9sbC9wYW5TY3JvbGwgbW9kZSB3ZSB3YW50IHRvIHN0b3AgaXQuCisgICAgY3Vy
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zdG9wQXV0b3Njcm9sbFRpbWVyKCk7CisKKyAgICBpZiAo
dGFyZ2V0ID09IEN1cnJlbnQpCisgICAgICAgIHRhcmdldEZyYW1lID0gY3VyRnJhbWU7CisgICAg
ZWxzZSBpZiAodGFyZ2V0ID09IFJvb3QpCisgICAgICAgIHRhcmdldEZyYW1lID0gY3VyRnJhbWUt
PnRyZWUoKS0+dG9wKCk7CisgICAgZWxzZQorICAgICAgICB0YXJnZXRGcmFtZSA9IGN1ckZyYW1l
LT50cmVlKCktPmZpbmQodGFyZ2V0KTsKKworICAgIC8vIFRPRE86Ly8gd2hpY2ggb25lIGlzIHJp
Z2h0PworICAgIGlmICghdGFyZ2V0RnJhbWUpCisgICAgICAgIHJldHVybiBmYWxzZTsgLy8gdGFy
Z2V0RnJhbWUgPSBjdXJGcmFtZTsKKworICAgIEVsZW1lbnQqIGFuY2hvck5vZGUgPSB0YXJnZXRG
cmFtZS0+ZG9jdW1lbnQoKS0+ZmluZEFuY2hvcih2YWx1ZS5pZCgpLnN0cmluZygpKTsKKyAgICBp
ZiAoIWFuY2hvck5vZGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBJZiBpdCdzIHNh
bWUgd2l0aCB0aGUgY3VycmVudCBmb2N1c2VkLCBpdCBzaG91bGQgYmUgY29uc3VtZWQuCisgICAg
aWYgKGZvY3VzZWROb2RlID09IGFuY2hvck5vZGUpCisgICAgICAgIHJldHVybiB0cnVlOworCisg
ICAgYW5jaG9yTm9kZS0+c2Nyb2xsSW50b1ZpZXdJZk5lZWRlZChmYWxzZSk7CisKKyAgICBib29s
IHN1Y2Nlc3NmdWxseUZvY3VzZWQgPSBzZXRGb2N1c2VkTm9kZShhbmNob3JOb2RlLCB0YXJnZXRG
cmFtZSk7CisgICAgaWYgKHN1Y2Nlc3NmdWxseUZvY3VzZWQpCisgICAgICAgIG1fcGFnZS0+Y2hy
b21lKCktPmZvY3VzZWROb2RlQ2hhbmdlZChhbmNob3JOb2RlKTsKKworICAgIHJldHVybiB0cnVl
OyAgICAKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGFnZS9Gb2N1c0NvbnRyb2xsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdl
L0ZvY3VzQ29udHJvbGxlci5oCShyZXZpc2lvbiAxMDUyNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9w
YWdlL0ZvY3VzQ29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC01NCw2ICs1NCw3IEBAIHB1
YmxpYzoKIAogICAgIGJvb2wgc2V0SW5pdGlhbEZvY3VzKEZvY3VzRGlyZWN0aW9uLCBLZXlib2Fy
ZEV2ZW50Kik7CiAgICAgYm9vbCBhZHZhbmNlRm9jdXMoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJk
RXZlbnQqLCBib29sIGluaXRpYWxGb2N1cyA9IGZhbHNlKTsKKyAgICBib29sIGhhbmRsZUNTU0Zv
Y3VzTmF2aWdhdGlvbihGb2N1c0RpcmVjdGlvbik7CiAgICAgICAgIAogICAgIGJvb2wgc2V0Rm9j
dXNlZE5vZGUoTm9kZSosIFBhc3NSZWZQdHI8RnJhbWU+KTsKIApJbmRleDogU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgJKHJldmlzaW9uIDEwNTI0NikKKysr
IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Myw2ICs1Myw3IEBACiAjaW5jbHVkZSAiU3R5bGVJbmhlcml0ZWREYXRhLmgiCiAj
aW5jbHVkZSAiU3R5bGVNYXJxdWVlRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlTXVsdGlDb2xEYXRh
LmgiCisjaW5jbHVkZSAiU3R5bGVOYXZpZ2F0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJTdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5o
IgogI2luY2x1ZGUgIlN0eWxlUmVmbGVjdGlvbi5oIgpAQCAtMTA3LDYgKzEwOCw3IEBAIGNsYXNz
IFBhaXI7CiBjbGFzcyBTaGFkb3dEYXRhOwogY2xhc3MgU3R5bGVJbWFnZTsKIGNsYXNzIFRyYW5z
Zm9ybWF0aW9uTWF0cml4OworY2xhc3MgU3R5bGVOYXZpZ2F0aW9uRGF0YTsKIAogY2xhc3MgQ29u
dGVudERhdGE7CiAKQEAgLTg5Miw2ICs4OTQsMTEgQEAgcHVibGljOgogCiAgICAgVGV4dENvbWJp
bmUgdGV4dENvbWJpbmUoKSBjb25zdCB7IHJldHVybiBzdGF0aWNfY2FzdDxUZXh0Q29tYmluZT4o
cmFyZU5vbkluaGVyaXRlZERhdGEtPm1fdGV4dENvbWJpbmUpOyB9CiAgICAgYm9vbCBoYXNUZXh0
Q29tYmluZSgpIGNvbnN0IHsgcmV0dXJuIHRleHRDb21iaW5lKCkgIT0gVGV4dENvbWJpbmVOb25l
OyB9CisgICAgCisgICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgbmF2RG93bigpIGNvbnN0IHsgcmV0
dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX25hdi5tX2Rvd247IH0KKyAgICBTdHlsZU5hdmln
YXRpb25WYWx1ZSBuYXZMZWZ0KCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEt
Pm1fbmF2Lm1fbGVmdDsgfQorICAgIFN0eWxlTmF2aWdhdGlvblZhbHVlIG5hdlJpZ2h0KCkgY29u
c3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fbmF2Lm1fcmlnaHQ7IH0KKyAgICBT
dHlsZU5hdmlnYXRpb25WYWx1ZSBuYXZVcCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0
ZWREYXRhLT5tX25hdi5tX3VwOyB9CiAgICAgLy8gRW5kIENTUzMgR2V0dGVycwogCiAgICAgY29u
c3QgQXRvbWljU3RyaW5nJiBmbG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVy
aXRlZERhdGEtPm1fZmxvd1RocmVhZDsgfQpAQCAtMTI5Miw2ICsxMjk5LDExIEBAIHB1YmxpYzoK
ICAgICB2b2lkIHNldEZpbHRlcihjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcHMpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YS5hY2Nlc3MoKS0+bV9maWx0ZXIsIG1fb3BlcmF0aW9ucywg
b3BzKTsgfQogI2VuZGlmCiAKKyAgICB2b2lkIHNldE5hdkRvd24oU3R5bGVOYXZpZ2F0aW9uVmFs
dWUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX25hdi5tX2Rvd24sIHYpOyB9
CisgICAgdm9pZCBzZXROYXZMZWZ0KFN0eWxlTmF2aWdhdGlvblZhbHVlIHYpIHsgU0VUX1ZBUihy
YXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9uYXYubV9sZWZ0LCB2KTsgfQorICAgIHZvaWQgc2V0TmF2
UmlnaHQoU3R5bGVOYXZpZ2F0aW9uVmFsdWUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWRE
YXRhLCBtX25hdi5tX3JpZ2h0LCB2KTsgfQorICAgIHZvaWQgc2V0TmF2VXAoU3R5bGVOYXZpZ2F0
aW9uVmFsdWUgdikgeyBTRVRfVkFSKHJhcmVOb25Jbmhlcml0ZWREYXRhLCBtX25hdi5tX3VwLCB2
KTsgfQorICAgIAogICAgIC8vIEVuZCBDU1MzIFNldHRlcnMKIAogICAgIHZvaWQgc2V0TGluZUdy
aWQoY29uc3QgQXRvbWljU3RyaW5nJiBsaW5lR3JpZCkgeyBTRVRfVkFSKHJhcmVJbmhlcml0ZWRE
YXRhLCBtX2xpbmVHcmlkLCBsaW5lR3JpZCk7IH0KQEAgLTE2MzEsNiArMTY0Myw4IEBAIHB1Ymxp
YzoKICAgICBzdGF0aWMgV3JhcEZsb3cgaW5pdGlhbFdyYXBGbG93KCkgeyByZXR1cm4gV3JhcEZs
b3dBdXRvOyB9CiAgICAgc3RhdGljIFdyYXBUaHJvdWdoIGluaXRpYWxXcmFwVGhyb3VnaCgpIHsg
cmV0dXJuIFdyYXBUaHJvdWdoV3JhcDsgfQogCisgICAgc3RhdGljIFN0eWxlTmF2aWdhdGlvblZh
bHVlIGluaXRpYWxTdHlsZU5hdmlnYXRpb24oKSB7IERFRklORV9TVEFUSUNfTE9DQUwoU3R5bGVO
YXZpZ2F0aW9uVmFsdWUsIG5hdmksICgpKTsgcmV0dXJuIG5hdmk7IH0KKwogICAgIC8vIEtlZXAg
dGhlc2UgYXQgdGhlIGVuZC4KICAgICBzdGF0aWMgTGluZUNsYW1wVmFsdWUgaW5pdGlhbExpbmVD
bGFtcCgpIHsgcmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KICAgICBzdGF0aWMgYm9vbCBpbml0
aWFsVGV4dFNpemVBZGp1c3QoKSB7IHJldHVybiB0cnVlOyB9CkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZpZ2F0aW9uRGF0YS5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZU5hdmlnYXRpb25EYXRhLmgJKHJldmlz
aW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZpZ2F0aW9u
RGF0YS5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEt5b3VuZ2EgUmEgKGt5b3VuZ2EucmFAZ21haWwuY29tKQorICoKKyAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0
aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0
aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0
ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFO
WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJD
SEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhl
IEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMu
CisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNl
ZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNv
ZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3Is
CisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBTdHls
ZU5hdmlnYXRpb25EYXRhX2gKKyNkZWZpbmUgU3R5bGVOYXZpZ2F0aW9uRGF0YV9oCisKKyNpbmNs
dWRlICJTdHlsZU5hdmlnYXRpb25WYWx1ZS5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIFN0eWxlTmF2aWdhdGlvbkRhdGEgeworZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOworcHVi
bGljOgorICAgIFN0eWxlTmF2aWdhdGlvbkRhdGEoKSB7IH0KKworICAgIFN0eWxlTmF2aWdhdGlv
bkRhdGEoY29uc3QgU3R5bGVOYXZpZ2F0aW9uRGF0YSYgbykKKyAgICA6IG1fdXAoby5tX3VwKQor
ICAgICwgbV9kb3duKG8ubV9kb3duKQorICAgICwgbV9sZWZ0KG8ubV9sZWZ0KQorICAgICwgbV9y
aWdodChvLm1fcmlnaHQpCisgICAgeyB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5
bGVOYXZpZ2F0aW9uRGF0YSYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBtX3VwID09
IG8ubV91cCAmJiBtX2Rvd24gPT0gby5tX2Rvd24gJiYgbV9sZWZ0ID09IG8ubV9sZWZ0ICYmIG1f
cmlnaHQgPT0gby5tX3JpZ2h0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZU5hdmlnYXRpb25EYXRhJiBvKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gbyk7CisgICAgfQorICAgICAgICAKKyAgICBjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1
ZSYgdXAoKSBjb25zdCB7IHJldHVybiBtX3VwOyB9CisgICAgY29uc3QgU3R5bGVOYXZpZ2F0aW9u
VmFsdWUmIGRvd24oKSBjb25zdCB7IHJldHVybiBtX2Rvd247IH0KKyAgICBjb25zdCBTdHlsZU5h
dmlnYXRpb25WYWx1ZSYgbGVmdCgpIGNvbnN0IHsgcmV0dXJuIG1fbGVmdDsgfQorICAgIGNvbnN0
IFN0eWxlTmF2aWdhdGlvblZhbHVlJiByaWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0K
KworcHJpdmF0ZToKKyAgICBTdHlsZU5hdmlnYXRpb25WYWx1ZSBtX3VwOworICAgIFN0eWxlTmF2
aWdhdGlvblZhbHVlIG1fZG93bjsKKyAgICBTdHlsZU5hdmlnYXRpb25WYWx1ZSBtX2xlZnQ7Cisg
ICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgbV9yaWdodDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKKworI2VuZGlmIC8vIFN0eWxlTmF2aWdhdGlvbkRhdGFfaApJbmRleDogU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvblZhbHVlLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvblZhbHVlLmgJ
KHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZp
Z2F0aW9uVmFsdWUuaAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBLeW91bmdhIFJhIChreW91bmdhLnJhQGdtYWlsLmNvbSkKKyAqCisgKiBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUg
Rm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5
b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRp
c3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lU
SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor
ICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAg
U2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRo
IEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNpZm5k
ZWYgU3R5bGVOYXZpZ2F0aW9uVmFsdWVfaAorI2RlZmluZSBTdHlsZU5hdmlnYXRpb25WYWx1ZV9o
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgewor
ZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOworcHVibGljOgorICAgIFN0eWxlTmF2aWdhdGlvblZh
bHVlKCkKKyAgICA6bV9pZChBdG9taWNTdHJpbmcoImF1dG8iKSkKKyAgICAsIG1fdGFyZ2V0KEF0
b21pY1N0cmluZygiY3VycmVudCIpKSB7IH0KKworICAgIFN0eWxlTmF2aWdhdGlvblZhbHVlKGNv
bnN0IGNoYXIqIGlkLCBjb25zdCBjaGFyKiB0YXJnZXQpCisgICAgOm1faWQoQXRvbWljU3RyaW5n
KGlkKSkKKyAgICAsIG1fdGFyZ2V0KEF0b21pY1N0cmluZyh0YXJnZXQpKSB7IH0KKworICAgIFN0
eWxlTmF2aWdhdGlvblZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21pY1N0
cmluZyYgdGFyZ2V0ID0gQXRvbWljU3RyaW5nKCJjdXJyZW50IikpCisgICAgOm1faWQoaWQpCisg
ICAgLCBtX3RhcmdldCh0YXJnZXQpIAorICAgIHsgfQorCisgICAgYm9vbCBpc0F1dG8oKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWQgPT0gImF1dG8iOworICAgIH0KKworICAgIGJv
b2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgbykgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiBtX2lkID09IG8ubV9pZCAmJiBtX3RhcmdldCA9PSBvLm1fdGFyZ2V0
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1
ZSYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOworICAgIH0K
KworICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFN0eWxlTmF2aWdhdGlvblZhbHVlJiBvKQorICAg
IHsKKyAgICAgICAgbV9pZCA9IG8ubV9pZDsKKyAgICAgICAgbV90YXJnZXQgPSBvLm1fdGFyZ2V0
OworICAgIH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQoKSBjb25zdCB7IHJldHVybiBt
X2lkOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YXJnZXQoKSBjb25zdCB7IHJldHVybiBt
X3RhcmdldDsgfQorCitwcm90ZWN0ZWQ6CisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAgQXRv
bWljU3RyaW5nIG1fdGFyZ2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5k
aWYgLy8gU3R5bGVOYXZpZ2F0aW9uVmFsdWVfaApJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNw
cAkocmV2aXNpb24gMTA1MjQ2KQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCw3
IEBAIFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkkKICAgICAsIG1fcGVy
c3BlY3RpdmVPcmlnaW5ZKFJlbmRlclN0eWxlOjppbml0aWFsUGVyc3BlY3RpdmVPcmlnaW5ZKCkp
CiAgICAgLCBsaW5lQ2xhbXAoUmVuZGVyU3R5bGU6OmluaXRpYWxMaW5lQ2xhbXAoKSkKICAgICAs
IG1fbWFzayhGaWxsTGF5ZXIoTWFza0ZpbGxMYXllcikpCisgICAgLCBtX25hdigpCiAgICAgLCBt
X3BhZ2VTaXplKCkKICAgICAsIG1fd3JhcFNoYXBlSW5zaWRlKFJlbmRlclN0eWxlOjppbml0aWFs
V3JhcFNoYXBlSW5zaWRlKCkpCiAgICAgLCBtX3dyYXBTaGFwZU91dHNpZGUoUmVuZGVyU3R5bGU6
OmluaXRpYWxXcmFwU2hhcGVPdXRzaWRlKCkpCkBAIC0xMDcsNiArMTA4LDcgQEAgU3R5bGVSYXJl
Tm9uSW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSQogICAgICwgbV90cmFuc2l0aW9ucyhvLm1f
dHJhbnNpdGlvbnMgPyBhZG9wdFB0cihuZXcgQW5pbWF0aW9uTGlzdCgqby5tX3RyYW5zaXRpb25z
KSkgOiBudWxscHRyKQogICAgICwgbV9tYXNrKG8ubV9tYXNrKQogICAgICwgbV9tYXNrQm94SW1h
Z2Uoby5tX21hc2tCb3hJbWFnZSkKKyAgICAsIG1fbmF2KG8ubV9uYXYpCiAgICAgLCBtX3BhZ2VT
aXplKG8ubV9wYWdlU2l6ZSkKICAgICAsIG1fd3JhcFNoYXBlSW5zaWRlKG8ubV93cmFwU2hhcGVJ
bnNpZGUpCiAgICAgLCBtX3dyYXBTaGFwZU91dHNpZGUoby5tX3dyYXBTaGFwZU91dHNpZGUpCkBA
IC0xOTAsNiArMTkyLDcgQEAgYm9vbCBTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpvcGVyYXRv
cgogICAgICAgICAmJiB0cmFuc2l0aW9uRGF0YUVxdWl2YWxlbnQobykKICAgICAgICAgJiYgbV9t
YXNrID09IG8ubV9tYXNrCiAgICAgICAgICYmIG1fbWFza0JveEltYWdlID09IG8ubV9tYXNrQm94
SW1hZ2UKKyAgICAgICAgJiYgbV9uYXYgPT0gby5tX25hdgogICAgICAgICAmJiAobV90cmFuc2Zv
cm1TdHlsZTNEID09IG8ubV90cmFuc2Zvcm1TdHlsZTNEKQogICAgICAgICAmJiAobV9iYWNrZmFj
ZVZpc2liaWxpdHkgPT0gby5tX2JhY2tmYWNlVmlzaWJpbGl0eSkKICAgICAgICAgJiYgKG1fcGVy
c3BlY3RpdmUgPT0gby5tX3BlcnNwZWN0aXZlKQpJbmRleDogU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oCShy
ZXZpc2lvbiAxMDUyNDYpCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVS
YXJlTm9uSW5oZXJpdGVkRGF0YS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zMiw2ICszMiw3IEBACiAj
aW5jbHVkZSAiRmlsbExheWVyLmgiCiAjaW5jbHVkZSAiTGluZUNsYW1wVmFsdWUuaCIKICNpbmNs
dWRlICJOaW5lUGllY2VJbWFnZS5oIgorI2luY2x1ZGUgIlN0eWxlTmF2aWdhdGlvbkRhdGEuaCIK
ICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC0xMzMsNiArMTM0LDcgQEAgcHVibGljOgogCiAgICAg
RmlsbExheWVyIG1fbWFzazsKICAgICBOaW5lUGllY2VJbWFnZSBtX21hc2tCb3hJbWFnZTsKKyAg
ICBTdHlsZU5hdmlnYXRpb25EYXRhIG1fbmF2OwogCiAgICAgTGVuZ3RoU2l6ZSBtX3BhZ2VTaXpl
OwogCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>207442</attachid>
            <date>2013-07-25 02:24:24 -0700</date>
            <delta_ts>2013-07-25 07:17:10 -0700</delta_ts>
            <desc>patch for latest webkit</desc>
            <filename>66027_v3.patch</filename>
            <type>text/plain</type>
            <size>28142</size>
            <attacher name="kyounga">kyounga.ra</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCmluZGV4IGE3NjQyNmUuLjI3NmMwOTIgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDEz
LTA3LTI1ICBLeW91bmdhIFJhICA8a3lvdW5nYS5yYUBnbWFpbC5jb20+CisKKyAgICAgICAgU3Vw
cG9ydCBkaXJlY3Rpb25hbCBmb2N1cyBuYXZpZ2F0aW9uIHByb3BlcnRpZXMobmF2LVtkaXJdKSBp
biBDU1MgVUkgbW9kdWxlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9NjYwMjcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICBObyBuZXcgdGVzdHMgKE9PUFMhKS4KKworICAgICAgICAqIGNzcy9DU1NDb21wdXRl
ZFN0eWxlRGVjbGFyYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6bmF2RGlyVG9DU1NWYWx1
ZSk6CisgICAgICAgIChXZWJDb3JlOjpDb21wdXRlZFN0eWxlRXh0cmFjdG9yOjpwcm9wZXJ0eVZh
bHVlKToKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55LmluOgorICAgICAgICAqIGNzcy9DU1NQ
YXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpwYXJzZVZhbHVlKToKKyAg
ICAgICAgKiBjc3MvQ1NTUHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJvcGVy
dHk6OmlzSW5oZXJpdGVkUHJvcGVydHkpOgorICAgICAgICAqIGNzcy9DU1NQcm9wZXJ0eU5hbWVz
LmluOgorICAgICAgICAqIGNzcy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkFwcGx5UHJvcGVydHlOYXZEaXJlY3Rpb246OmFwcGx5VmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6QXBwbHlQcm9wZXJ0eU5hdkRpcmVjdGlvbjo6Y3JlYXRlSGFuZGxlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEZXByZWNhdGVkU3R5bGVCdWlsZGVyOjpEZXByZWNhdGVkU3R5bGVC
dWlsZGVyKToKKyAgICAgICAgKiBjc3MvU3R5bGVSZXNvbHZlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTdHlsZVJlc29sdmVyOjphcHBseVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlN0
eWxlUmVzb2x2ZXI6OmdldFN0eWxlTmF2aWdhdGlvblZhbHVlKToKKyAgICAgICAgKiBjc3MvU3R5
bGVSZXNvbHZlci5oOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKToKKyAgICAg
ICAgKiBwYWdlL0ZvY3VzQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0Nv
bnRyb2xsZXI6OmhhbmRsZUNTU0ZvY3VzTmF2aWdhdGlvbik6CisgICAgICAgICogcGFnZS9Gb2N1
c0NvbnRyb2xsZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGUuaDoK
KyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhOjpTdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlUmFyZU5vbkluaGVyaXRl
ZERhdGE6Om9wZXJhdG9yPT0pOgorICAgICAgICAqIHJlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVO
b25Jbmhlcml0ZWREYXRhLmg6CisKIDIwMTMtMDctMjQgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5n
LmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBJbnRyb2R1Y2UgdG9TVkdQYXR0ZXJuRWxlbWVu
dCgpLCB1c2UgaXQKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHls
ZURlY2xhcmF0aW9uLmNwcCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTQ29tcHV0ZWRTdHlsZURlY2xh
cmF0aW9uLmNwcAppbmRleCBjZmRkYTM5Li5hNzQwNThlIDEwMDY0NAotLS0gU291cmNlL1dlYkNv
cmUvY3NzL0NTU0NvbXB1dGVkU3R5bGVEZWNsYXJhdGlvbi5jcHAKKysrIFNvdXJjZS9XZWJDb3Jl
L2Nzcy9DU1NDb21wdXRlZFN0eWxlRGVjbGFyYXRpb24uY3BwCkBAIC00LDYgKzQsNyBAQAogICog
Q29weXJpZ2h0IChDKSAyMDA3IEFsZXhleSBQcm9za3VyeWFrb3YgPGFwQHdlYmtpdC5vcmc+CiAg
KiBDb3B5cmlnaHQgKEMpIDIwMDcgTmljaG9sYXMgU2hhbmtzIDx3ZWJraXRAbmlja3NoYW5rcy5j
b20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgU2VuY2hhLCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQWx0aWNhc3QgQ29ycG9yYXRpb24uIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBj
YW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBv
ZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwpAQCAtMTYzLDYgKzE2NCwxMCBAQCBzdGF0
aWMgY29uc3QgQ1NTUHJvcGVydHlJRCBjb21wdXRlZFByb3BlcnRpZXNbXSA9IHsKICAgICBDU1NQ
cm9wZXJ0eU1heFdpZHRoLAogICAgIENTU1Byb3BlcnR5TWluSGVpZ2h0LAogICAgIENTU1Byb3Bl
cnR5TWluV2lkdGgsCisgICAgQ1NTUHJvcGVydHlOYXZEb3duLAorICAgIENTU1Byb3BlcnR5TmF2
TGVmdCwKKyAgICBDU1NQcm9wZXJ0eU5hdlJpZ2h0LAorICAgIENTU1Byb3BlcnR5TmF2VXAsCiAg
ICAgQ1NTUHJvcGVydHlPcGFjaXR5LAogICAgIENTU1Byb3BlcnR5T3JwaGFucywKICAgICBDU1NQ
cm9wZXJ0eU91dGxpbmVDb2xvciwKQEAgLTE0NDQsNiArMTQ0OSwxNSBAQCBzdGF0aWMgUGFzc1Jl
ZlB0cjxDU1NWYWx1ZT4gY291bnRlclRvQ1NTVmFsdWUoY29uc3QgUmVuZGVyU3R5bGUqIHN0eWxl
LCBDU1NQcm9wZQogICAgIHJldHVybiBsaXN0LnJlbGVhc2UoKTsKIH0KIAorc3RhdGljIFBhc3NS
ZWZQdHI8Q1NTVmFsdWU+IG5hdkRpclRvQ1NTVmFsdWUoY29uc3QgU3R5bGVOYXZpZ2F0aW9uVmFs
dWUmIG5hdlZhbHVlKQoreworICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1
ZUxpc3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVl
UG9vbCgpLmNyZWF0ZVZhbHVlKG5hdlZhbHVlLmlkKCkuc3RyaW5nKCksIENTU1ByaW1pdGl2ZVZh
bHVlOjpDU1NfU1RSSU5HKSk7CisgICAgbGlzdC0+YXBwZW5kKGNzc1ZhbHVlUG9vbCgpLmNyZWF0
ZVZhbHVlKG5hdlZhbHVlLnRhcmdldCgpLnN0cmluZygpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
X1NUUklORykpOworCisgICAgcmV0dXJuIGxpc3QucmVsZWFzZSgpOworfQorCiBzdGF0aWMgdm9p
ZCBsb2dVbmltcGxlbWVudGVkUHJvcGVydHlJRChDU1NQcm9wZXJ0eUlEIHByb3BlcnR5SUQpCiB7
CiAgICAgREVGSU5FX1NUQVRJQ19MT0NBTChIYXNoU2V0PENTU1Byb3BlcnR5SUQ+LCBwcm9wZXJ0
eUlEU2V0LCAoKSk7CkBAIC0yODg1LDYgKzI4OTksMTQgQEAgUGFzc1JlZlB0cjxDU1NWYWx1ZT4g
Q29tcHV0ZWRTdHlsZUV4dHJhY3Rvcjo6cHJvcGVydHlWYWx1ZShDU1NQcm9wZXJ0eUlEIHByb3Bl
cnQKICAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eVVzZXJab29tOgogICAgICAgICAgICAgYnJlYWs7
CiAjZW5kaWYKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246CisgICAgICAgICAgICBy
ZXR1cm4gbmF2RGlyVG9DU1NWYWx1ZShzdHlsZS0+bmF2RG93bigpKTsKKyAgICAgICAgY2FzZSBD
U1NQcm9wZXJ0eU5hdkxlZnQ6CisgICAgICAgICAgICByZXR1cm4gbmF2RGlyVG9DU1NWYWx1ZShz
dHlsZS0+bmF2TGVmdCgpKTsKKyAgICAgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlJpZ2h0OgorICAg
ICAgICAgICAgcmV0dXJuIG5hdkRpclRvQ1NTVmFsdWUoc3R5bGUtPm5hdlJpZ2h0KCkpOworICAg
ICAgICBjYXNlIENTU1Byb3BlcnR5TmF2VXA6CisgICAgICAgICAgICByZXR1cm4gbmF2RGlyVG9D
U1NWYWx1ZShzdHlsZS0+bmF2VXAoKSk7CiAKICNpZiBFTkFCTEUoU1ZHKQogICAgICAgICBjYXNl
IENTU1Byb3BlcnR5QnVmZmVyZWRSZW5kZXJpbmc6CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueS5pbiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCmlu
ZGV4IDczODUzODcuLmE4OTg1NDEgMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55LmluCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55LmluCkBAIC04OCw5
ICs4OCw5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBpc0NTU1Rva2VuQVN0cmluZyhpbnQgeXl0eXBl
KQogJX0KIAogI2lmIEVOQUJMRV9TSEFET1dfRE9NCi0lZXhwZWN0IDMyCislZXhwZWN0IDMzCiAj
ZWxzZQotJWV4cGVjdCAzMQorJWV4cGVjdCAzMgogI2VuZGlmCiAKICVub25hc3NvYyBMT1dFU1Rf
UFJFQwpAQCAtMTY5NSw2ICsxNjk1LDcgQEAgdGVybToKICAgfCBVUkkgbWF5YmVfc3BhY2UgeyAk
JC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQcmlt
aXRpdmVWYWx1ZTo6Q1NTX1VSSTsgfQogICB8IFVOSUNPREVSQU5HRSBtYXliZV9zcGFjZSB7ICQk
LmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfVU5JQ09ERV9SQU5HRTsgfQogICB8IEhFWCBtYXliZV9zcGFjZSB7ICQk
LmlkID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5zdHJpbmcgPSAkMTsgJCQudW5pdCA9IENTU1ByaW1p
dGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9CisgIHwgSURTRUwgbWF5YmVfc3BhY2Ug
eyAkJC5pZCA9IENTU1ZhbHVlSW52YWxpZDsgJCQuc3RyaW5nID0gJDE7ICQkLnVuaXQgPSBDU1NQ
cmltaXRpdmVWYWx1ZTo6Q1NTX1NUUklORzsgfQogICB8ICcjJyBtYXliZV9zcGFjZSB7ICQkLmlk
ID0gQ1NTVmFsdWVJbnZhbGlkOyAkJC5zdHJpbmcgPSBDU1NQYXJzZXJTdHJpbmcoKTsgJCQudW5p
dCA9IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SOyB9IC8qIEhhbmRsZSBl
cnJvciBjYXNlOiAiY29sb3I6ICM7IiAqLwogICB8IFZBUkZVTkNUSU9OIG1heWJlX3NwYWNlIElE
RU5UIGNsb3NpbmdfcGFyZW50aGVzaXMgbWF5YmVfc3BhY2UgewogI2lmIEVOQUJMRV9DU1NfVkFS
SUFCTEVTCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggMWQyZDBjYS4uOWQ5NDA4YiAxMDA2NDQK
LS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtNyw2ICs3LDcgQEAKICAqIENvcHlyaWdodCAoQykgMjAwOSBU
b3JjaCBNb2JpbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLiAoaHR0cDovL3d3dy50b3JjaG1v
YmlsZS5jb20vKQogICogQ29weXJpZ2h0IChDKSAyMDEyIEFkb2JlIFN5c3RlbXMgSW5jb3Jwb3Jh
dGVkLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENv
cnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFs
dGljYXN0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFRoaXMgbGli
cmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAq
IG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCkBAIC0yNzI4LDYgKzI3MjksMjQgQEAgYm9vbCBDU1NQYXJzZXI6OnBhcnNlVmFsdWUoQ1NT
UHJvcGVydHlJRCBwcm9wSWQsIGJvb2wgaW1wb3J0YW50KQogICAgICAgICBlbHNlIC8vIEFsd2F5
cyBwYXJzZSB0aGlzIHByb3BlcnR5IGluIHN0cmljdCBtb2RlLCBzaW5jZSBpdCB3b3VsZCBiZSBh
bWJpZ3VvdXMgb3RoZXJ3aXNlIHdoZW4gdXNlZCBpbiB0aGUgJ2NvbHVtbnMnIHNob3J0aGFuZCBw
cm9wZXJ0eS4KICAgICAgICAgICAgIHZhbGlkUHJpbWl0aXZlID0gdmFsaWRVbml0KHZhbHVlLCBG
TGVuZ3RoIHwgRk5vbk5lZywgQ1NTU3RyaWN0TW9kZSkgJiYgdmFsdWUtPmZWYWx1ZTsKICAgICAg
ICAgYnJlYWs7CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlVwOiAvLyBhdXRvIHwgPGlkPiB0YXJn
ZXRmcmFtZSB8IGluaGVyaXQuCisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246CisgICAgY2Fz
ZSBDU1NQcm9wZXJ0eU5hdkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlJpZ2h0OgorICAg
ICAgICBpZiAoaWQgPT0gQ1NTVmFsdWVBdXRvCisgICAgICAgICAgICB8fCAobnVtID09IDEgJiYg
KHZhbHVlLT51bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HIHx8IHZhbHVlLT51
bml0ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEFSU0VSX0hFWENPTE9SKSkpIHsKKyAgICAg
ICAgICAgIHZhbHVlLT51bml0ID0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19TVFJJTkc7CisgICAg
ICAgICAgICB2YWxpZFByaW1pdGl2ZSA9IHRydWU7CisgICAgICAgIH0gZWxzZSBpZiAobnVtID09
IDIpIHsKKyAgICAgICAgICAgIFJlZlB0cjxDU1NWYWx1ZUxpc3Q+IGxpc3QgPSBDU1NWYWx1ZUxp
c3Q6OmNyZWF0ZVNwYWNlU2VwYXJhdGVkKCk7CisgICAgICAgICAgICB3aGlsZSAodmFsdWUpIHsK
KyAgICAgICAgICAgICAgICBsaXN0LT5hcHBlbmQoY3NzVmFsdWVQb29sKCkuY3JlYXRlVmFsdWUo
dmFsdWUtPnN0cmluZywgKENTU1ByaW1pdGl2ZVZhbHVlOjpVbml0VHlwZXMpQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19TVFJJTkcpKTsKKyAgICAgICAgICAgICAgICB2YWx1ZSA9IG1fdmFsdWVMaXN0
LT5uZXh0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJzZWRWYWx1ZSA9IGxpc3Qu
cmVsZWFzZSgpOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgYnJlYWs7CiAgICAgLy8gRW5kIG9mIENTUzMgcHJvcGVydGllcwogCiAgICAgLy8gQXBw
bGUgc3BlY2lmaWMgcHJvcGVydGllcy4gIFRoZXNlIHdpbGwgbmV2ZXIgYmUgc3RhbmRhcmRpemVk
IGFuZCBhcmUgcHVyZWx5IHRvCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3Bl
cnR5LmNwcCBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCmluZGV4IDEzYTRkN2Uu
LjhlNzI2NjggMTAwNjQ0Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCisr
KyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHkuY3BwCkBAIC00NTQsNiArNDU0LDEwIEBA
IGJvb2wgQ1NTUHJvcGVydHk6OmlzSW5oZXJpdGVkUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eUlEKQogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKICAgICBjYXNlIENTU1Byb3Bl
cnR5TWluSGVpZ2h0OgogICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBjYXNlIENT
U1Byb3BlcnR5TmF2RG93bjoKKyAgICBjYXNlIENTU1Byb3BlcnR5TmF2TGVmdDoKKyAgICBjYXNl
IENTU1Byb3BlcnR5TmF2UmlnaHQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlVwOgogICAgIGNh
c2UgQ1NTUHJvcGVydHlPcGFjaXR5OgogICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lOgogICAg
IGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6CmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1Byb3BlcnR5TmFtZXMuaW4gU291cmNlL1dlYkNvcmUvY3NzL0NTU1Byb3BlcnR5TmFt
ZXMuaW4KaW5kZXggMzU4ZWUyYy4uMmZhOTA1NCAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQcm9wZXJ0eU5hbWVzLmluCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJvcGVydHlO
YW1lcy5pbgpAQCAtMTM1LDYgKzEzNSwxMCBAQCBtaW4td2lkdGgKIG1peAogcGFyYW1ldGVycwog
I2VuZGlmCituYXYtZG93bgorbmF2LWxlZnQKK25hdi1yaWdodAorbmF2LXVwCiBvcGFjaXR5CiAv
LyBIb25vciAtd2Via2l0LW9wYWNpdHkgYXMgYSBzeW5vbnltIGZvciBvcGFjaXR5LiBUaGlzIHdh
cyB0aGUgb25seSBzeW50YXggdGhhdCB3b3JrZWQgaW4gU2FmYXJpIDEuMSwKIC8vIGFuZCBtYXkg
YmUgaW4gdXNlIG9uIHNvbWUgd2Vic2l0ZXMgYW5kIHdpZGdldHMuCmRpZmYgLS1naXQgU291cmNl
L1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwIFNvdXJjZS9XZWJDb3JlL2Nz
cy9EZXByZWNhdGVkU3R5bGVCdWlsZGVyLmNwcAppbmRleCBlZTEzOTg1Li41MDY3YjQ0IDEwMDY0
NAotLS0gU291cmNlL1dlYkNvcmUvY3NzL0RlcHJlY2F0ZWRTdHlsZUJ1aWxkZXIuY3BwCisrKyBT
b3VyY2UvV2ViQ29yZS9jc3MvRGVwcmVjYXRlZFN0eWxlQnVpbGRlci5jcHAKQEAgLTEsNiArMSw3
IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFsdGljYXN0IENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC01NzAsNiAr
NTcxLDMwIEBAIHB1YmxpYzoKICAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRs
ZXIoKSB7IHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoJmFwcGx5SW5oZXJpdFZhbHVlLCAmYXBwbHlJ
bml0aWFsVmFsdWUsICZhcHBseVZhbHVlKTsgfQogfTsKIAordGVtcGxhdGUgPHR5cGVuYW1lIFQs
IFQgKFJlbmRlclN0eWxlOjoqZ2V0dGVyRnVuY3Rpb24pKCkgY29uc3QsIHZvaWQgKFJlbmRlclN0
eWxlOjoqc2V0dGVyRnVuY3Rpb24pKFQpLCBUICgqaW5pdGlhbEZ1bmN0aW9uKSgpPgorY2xhc3Mg
QXBwbHlQcm9wZXJ0eU5hdkRpcmVjdGlvbiB7CitwdWJsaWM6CisgICAgc3RhdGljIHZvaWQgYXBw
bHlWYWx1ZShDU1NQcm9wZXJ0eUlELCBTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVyLCBDU1NW
YWx1ZSogdmFsdWUpCisgICAgeworICAgICAgICBpZiAodmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUo
KSkgeworICAgICAgICAgICAgQ1NTUHJpbWl0aXZlVmFsdWUqIHByaW1pdGl2ZVZhbHVlID0gc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSk7CisKKyAgICAgICAgICAgIGlmIChw
cmltaXRpdmVWYWx1ZS0+Z2V0VmFsdWVJRCgpID09IENTU1ZhbHVlQXV0bykKKyAgICAgICAgICAg
ICAgICAoc3R5bGVSZXNvbHZlci0+c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKSgoKmluaXRpYWxG
dW5jdGlvbikoKSk7CisgICAgICAgICAgICBlbHNlIGlmIChwcmltaXRpdmVWYWx1ZS0+cHJpbWl0
aXZlVHlwZSgpID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfU1RSSU5HCisgICAgICAgICAgICAg
ICAgfHwgcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1
ZTo6Q1NTX1BBUlNFUl9IRVhDT0xPUikKKyAgICAgICAgICAgICAgICAoc3R5bGVSZXNvbHZlci0+
c3R5bGUoKS0+KnNldHRlckZ1bmN0aW9uKShzdHlsZVJlc29sdmVyLT5nZXRTdHlsZU5hdmlnYXRp
b25WYWx1ZSh2YWx1ZSkpOworICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgp
KQorICAgICAgICAgICAgKHN0eWxlUmVzb2x2ZXItPnN0eWxlKCktPipzZXR0ZXJGdW5jdGlvbiko
c3R5bGVSZXNvbHZlci0+Z2V0U3R5bGVOYXZpZ2F0aW9uVmFsdWUodmFsdWUpKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgUHJvcGVydHlIYW5kbGVyIGNyZWF0ZUhhbmRsZXIoKQorICAgIHsKKyAgICAg
ICAgUHJvcGVydHlIYW5kbGVyIGhhbmRsZXIgPSBBcHBseVByb3BlcnR5RGVmYXVsdEJhc2U8VCwg
Z2V0dGVyRnVuY3Rpb24sIFQsIHNldHRlckZ1bmN0aW9uLCBULCBpbml0aWFsRnVuY3Rpb24+Ojpj
cmVhdGVIYW5kbGVyKCk7CisgICAgICAgIHJldHVybiBQcm9wZXJ0eUhhbmRsZXIoaGFuZGxlci5p
bmhlcml0RnVuY3Rpb24oKSwgaGFuZGxlci5pbml0aWFsRnVuY3Rpb24oKSwgJmFwcGx5VmFsdWUp
OworICAgIH0KK307CisKIGVudW0gQ29tcHV0ZUxlbmd0aE5vcm1hbCB7Tm9ybWFsRGlzYWJsZWQg
PSAwLCBOb3JtYWxFbmFibGVkfTsKIGVudW0gQ29tcHV0ZUxlbmd0aFRoaWNrbmVzcyB7VGhpY2tu
ZXNzRGlzYWJsZWQgPSAwLCBUaGlja25lc3NFbmFibGVkfTsKIGVudW0gQ29tcHV0ZUxlbmd0aFNW
R1pvb20ge1NWR1pvb21EaXNhYmxlZCA9IDAsIFNWR1pvb21FbmFibGVkfTsKQEAgLTIzNjEsNiAr
MjM4NiwxMCBAQCBEZXByZWNhdGVkU3R5bGVCdWlsZGVyOjpEZXByZWNhdGVkU3R5bGVCdWlsZGVy
KCkKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlXb3JkV3JhcCwgQXBwbHlQcm9w
ZXJ0eURlZmF1bHQ8RU92ZXJmbG93V3JhcCwgJlJlbmRlclN0eWxlOjpvdmVyZmxvd1dyYXAsIEVP
dmVyZmxvd1dyYXAsICZSZW5kZXJTdHlsZTo6c2V0T3ZlcmZsb3dXcmFwLCBFT3ZlcmZsb3dXcmFw
LCAmUmVuZGVyU3R5bGU6OmluaXRpYWxPdmVyZmxvd1dyYXA+OjpjcmVhdGVIYW5kbGVyKCkpOwog
ICAgIHNldFByb3BlcnR5SGFuZGxlcihDU1NQcm9wZXJ0eVpJbmRleCwgQXBwbHlQcm9wZXJ0eUF1
dG88aW50LCAmUmVuZGVyU3R5bGU6OnpJbmRleCwgJlJlbmRlclN0eWxlOjpzZXRaSW5kZXgsICZS
ZW5kZXJTdHlsZTo6aGFzQXV0b1pJbmRleCwgJlJlbmRlclN0eWxlOjpzZXRIYXNBdXRvWkluZGV4
Pjo6Y3JlYXRlSGFuZGxlcigpKTsKICAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHla
b29tLCBBcHBseVByb3BlcnR5Wm9vbTo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0
eUhhbmRsZXIoQ1NTUHJvcGVydHlOYXZEb3duLCBBcHBseVByb3BlcnR5TmF2RGlyZWN0aW9uPFN0
eWxlTmF2aWdhdGlvblZhbHVlLCAmUmVuZGVyU3R5bGU6Om5hdkRvd24sICZSZW5kZXJTdHlsZTo6
c2V0TmF2RG93biwgJlJlbmRlclN0eWxlOjppbml0aWFsU3R5bGVOYXZpZ2F0aW9uPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlOYXZMZWZ0LCBB
cHBseVByb3BlcnR5TmF2RGlyZWN0aW9uPFN0eWxlTmF2aWdhdGlvblZhbHVlLCAmUmVuZGVyU3R5
bGU6Om5hdkxlZnQsICZSZW5kZXJTdHlsZTo6c2V0TmF2TGVmdCwgJlJlbmRlclN0eWxlOjppbml0
aWFsU3R5bGVOYXZpZ2F0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhh
bmRsZXIoQ1NTUHJvcGVydHlOYXZSaWdodCwgQXBwbHlQcm9wZXJ0eU5hdkRpcmVjdGlvbjxTdHls
ZU5hdmlnYXRpb25WYWx1ZSwgJlJlbmRlclN0eWxlOjpuYXZSaWdodCwgJlJlbmRlclN0eWxlOjpz
ZXROYXZSaWdodCwgJlJlbmRlclN0eWxlOjppbml0aWFsU3R5bGVOYXZpZ2F0aW9uPjo6Y3JlYXRl
SGFuZGxlcigpKTsKKyAgICBzZXRQcm9wZXJ0eUhhbmRsZXIoQ1NTUHJvcGVydHlOYXZVcCwgQXBw
bHlQcm9wZXJ0eU5hdkRpcmVjdGlvbjxTdHlsZU5hdmlnYXRpb25WYWx1ZSwgJlJlbmRlclN0eWxl
OjpuYXZVcCwgJlJlbmRlclN0eWxlOjpzZXROYXZVcCwgJlJlbmRlclN0eWxlOjppbml0aWFsU3R5
bGVOYXZpZ2F0aW9uPjo6Y3JlYXRlSGFuZGxlcigpKTsKIH0KIAogCmRpZmYgLS1naXQgU291cmNl
L1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwIFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmNwcAppbmRleCAyYTA5ZDMwLi5jZmQxNDM2IDEwMDY0NAotLS0gU291cmNlL1dlYkNv
cmUvY3NzL1N0eWxlUmVzb2x2ZXIuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVSZXNv
bHZlci5jcHAKQEAgLTksNiArOSw3IEBACiAgKiBDb3B5cmlnaHQgKGMpIDIwMTEsIENvZGUgQXVy
b3JhIEZvcnVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJpZ2h0IChDKSBSZXNlYXJj
aCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmln
aHQgKEMpIDIwMTMgQWx0aWNhc3QgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRl
IGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMKQEAgLTEwNiw2ICsxMDcsNyBAQAogI2luY2x1ZGUgIlNoYWRvd1Zh
bHVlLmgiCiAjaW5jbHVkZSAiU3R5bGVDYWNoZWRJbWFnZS5oIgogI2luY2x1ZGUgIlN0eWxlR2Vu
ZXJhdGVkSW1hZ2UuaCIKKyNpbmNsdWRlICJTdHlsZU5hdmlnYXRpb25WYWx1ZS5oIgogI2luY2x1
ZGUgIlN0eWxlUGVuZGluZ0ltYWdlLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0eVNldC5oIgog
I2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKQEAgLTI5MjksNiArMjkzMSwxMCBA
QCB2b2lkIFN0eWxlUmVzb2x2ZXI6OmFwcGx5UHJvcGVydHkoQ1NTUHJvcGVydHlJRCBpZCwgQ1NT
VmFsdWUqIHZhbHVlKQogICAgIGNhc2UgQ1NTUHJvcGVydHlNYXhXaWR0aDoKICAgICBjYXNlIENT
U1Byb3BlcnR5TWluSGVpZ2h0OgogICAgIGNhc2UgQ1NTUHJvcGVydHlNaW5XaWR0aDoKKyAgICBj
YXNlIENTU1Byb3BlcnR5TmF2VXA6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdkRvd246CisgICAg
Y2FzZSBDU1NQcm9wZXJ0eU5hdkxlZnQ6CisgICAgY2FzZSBDU1NQcm9wZXJ0eU5hdlJpZ2h0Ogog
ICAgIGNhc2UgQ1NTUHJvcGVydHlPcGFjaXR5OgogICAgIGNhc2UgQ1NTUHJvcGVydHlPcnBoYW5z
OgogICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lQ29sb3I6CkBAIC0zMTg4LDYgKzMxOTQsMjgg
QEAgUGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpzZXRPclBlbmRpbmdGcm9t
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXIKIH0KICNlbmRpZgogCitTdHlsZU5hdmlnYXRpb25W
YWx1ZSBTdHlsZVJlc29sdmVyOjpnZXRTdHlsZU5hdmlnYXRpb25WYWx1ZShDU1NWYWx1ZSogdmFs
dWUpCit7CisgICAgaWYgKHZhbHVlLT5pc1ZhbHVlTGlzdCgpKSB7CisgICAgICAgIENTU1ZhbHVl
TGlzdCogbGlzdCA9IHN0YXRpY19jYXN0PENTU1ZhbHVlTGlzdCo+KHZhbHVlKTsKKyAgICAgICAg
U3RyaW5nSW1wbCogdmFsWzJdID0gezB9OworICAgICAgICBDU1NQcmltaXRpdmVWYWx1ZSogcHJp
bWl0aXZlVmFsdWUgPSAwOworCisgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7
CisgICAgICAgICAgICBDU1NWYWx1ZSogaXRlbSA9IGxpc3QtPml0ZW1XaXRob3V0Qm91bmRzQ2hl
Y2soaSk7CisKKyAgICAgICAgICAgIGlmICghaXRlbS0+aXNQcmltaXRpdmVWYWx1ZSgpKQorICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgcHJpbWl0aXZlVmFsdWUgPSBzdGF0
aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KGl0ZW0pOworCisgICAgICAgICAgICBpZiAocHJp
bWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1NU
UklORykKKyAgICAgICAgICAgICAgICB2YWxbaV0gPSBwcmltaXRpdmVWYWx1ZS0+Z2V0U3RyaW5n
VmFsdWUoKS5pbXBsKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIFN0eWxlTmF2aWdhdGlv
blZhbHVlKEF0b21pY1N0cmluZyh2YWxbMF0pLCBBdG9taWNTdHJpbmcodmFsWzFdKSk7CisgICAg
fQorICAgIHJldHVybiBTdHlsZU5hdmlnYXRpb25WYWx1ZShBdG9taWNTdHJpbmcoc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmdldFN0cmluZ1ZhbHVlKCkpKTsKK30KKwog
UGFzc1JlZlB0cjxTdHlsZUltYWdlPiBTdHlsZVJlc29sdmVyOjpjdXJzb3JPclBlbmRpbmdGcm9t
VmFsdWUoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgQ1NTQ3Vyc29ySW1hZ2VWYWx1ZSogdmFsdWUp
CiB7CiAgICAgUmVmUHRyPFN0eWxlSW1hZ2U+IGltYWdlID0gdmFsdWUtPmNhY2hlZE9yUGVuZGlu
Z0ltYWdlKGRvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZVJl
c29sdmVyLmggU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAppbmRleCBhZTA4MDQ1
Li43MGVkZDZkIDEwMDY0NAotLS0gU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaAor
KysgU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlUmVzb2x2ZXIuaApAQCAtOTMsNiArOTMsNyBAQCBj
bGFzcyBTdHlsZUN1c3RvbUZpbHRlclByb2dyYW1DYWNoZTsKIGNsYXNzIFN0eWxlU2NvcGVSZXNv
bHZlcjsKIGNsYXNzIFN0eWxlSW1hZ2U7CiBjbGFzcyBTdHlsZUtleWZyYW1lOworY2xhc3MgU3R5
bGVOYXZpZ2F0aW9uVmFsdWU7CiBjbGFzcyBTdHlsZVBlbmRpbmdJbWFnZTsKIGNsYXNzIFN0eWxl
UHJvcGVydHlTZXQ7CiBjbGFzcyBTdHlsZVJ1bGU7CkBAIC01NjUsNiArNTY2LDggQEAgcHVibGlj
OgogICAgIHZvaWQgc2V0V3JpdGluZ01vZGUoV3JpdGluZ01vZGUgd3JpdGluZ01vZGUpIHsgbV9z
dGF0ZS5zZXRXcml0aW5nTW9kZSh3cml0aW5nTW9kZSk7IH0KICAgICB2b2lkIHNldFRleHRPcmll
bnRhdGlvbihUZXh0T3JpZW50YXRpb24gdGV4dE9yaWVudGF0aW9uKSB7IG1fc3RhdGUuc2V0VGV4
dE9yaWVudGF0aW9uKHRleHRPcmllbnRhdGlvbik7IH0KIAorICAgIFN0eWxlTmF2aWdhdGlvblZh
bHVlIGdldFN0eWxlTmF2aWdhdGlvblZhbHVlKENTU1ZhbHVlKik7CisKIHByaXZhdGU6CiAgICAg
c3RhdGljIFJlbmRlclN0eWxlKiBzX3N0eWxlTm90WWV0QXZhaWxhYmxlOwogCmRpZmYgLS1naXQg
U291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwIFNvdXJjZS9XZWJDb3JlL3BhZ2Uv
RXZlbnRIYW5kbGVyLmNwcAppbmRleCBjMmExNzJhLi5lMzU0YWU0IDEwMDY0NAotLS0gU291cmNl
L1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0V2
ZW50SGFuZGxlci5jcHAKQEAgLTM3MzIsNiArMzczMiwxMSBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6
ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9uLCBL
ZXlibwogICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKICAgICAg
ICAgcmV0dXJuOwogCisgICAgaWYgKHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLT5oYW5kbGVDU1NG
b2N1c05hdmlnYXRpb24oZm9jdXNEaXJlY3Rpb24pKSB7CisgICAgICAgIGV2ZW50LT5zZXREZWZh
dWx0SGFuZGxlZCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgaWYgKHBhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpLT5hZHZhbmNlRm9jdXMoZm9jdXNEaXJlY3Rpb24sIGV2ZW50KSkKICAg
ICAgICAgZXZlbnQtPnNldERlZmF1bHRIYW5kbGVkKCk7CiB9CmRpZmYgLS1naXQgU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXND
b250cm9sbGVyLmNwcAppbmRleCBiYzgzZTdmLi5iMThhOWM1IDEwMDY0NAotLS0gU291cmNlL1dl
YkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL0Zv
Y3VzQ29udHJvbGxlci5jcHAKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAy
MDA2LCAyMDA3LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqIENvcHly
aWdodCAoQykgMjAwOCBOdWFudGkgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFsdGljYXN0
IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC04OTQsNCArODk1LDc5IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZh
bmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAg
ICAgcmV0dXJuIGNvbnN1bWVkOwogfQogCitib29sIEZvY3VzQ29udHJvbGxlcjo6aGFuZGxlQ1NT
Rm9jdXNOYXZpZ2F0aW9uKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKK3sKKyAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgQ3VycmVudCwgKCJjdXJyZW50IikpOworICAgIERF
RklORV9TVEFUSUNfTE9DQUwoQXRvbWljU3RyaW5nLCBSb290LCAoInJvb3QiKSk7CisKKyAgICBG
cmFtZSogY3VyRnJhbWUgPSBmb2N1c2VkT3JNYWluRnJhbWUoKTsKKyAgICBBU1NFUlQoY3VyRnJh
bWUpOworCisgICAgRG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IGN1ckZyYW1lLT5kb2N1bWVu
dCgpOworICAgIGlmICghZm9jdXNlZERvY3VtZW50KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICBFbGVtZW50KiBmb2N1c2VkID0gZm9jdXNlZERvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgp
OworICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBmb2N1c2VkID8gZm9jdXNlZC0+cmVuZGVy
ZXIoKSA6IDA7CisgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgdmFsdWU7CisgICAgc3dpdGNoIChkaXJlY3Rpb24pIHsK
KyAgICBjYXNlIEZvY3VzRGlyZWN0aW9uRm9yd2FyZDoKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9u
QmFja3dhcmQ6CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBjYXNlIEZvY3VzRGlyZWN0aW9u
VXA6CisgICAgICAgIHZhbHVlID0gcmVuZGVyZXItPnN0eWxlKCktPm5hdlVwKCk7CisgICAgICAg
IGJyZWFrOworICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25Eb3duOgorICAgICAgICB2YWx1ZSA9IHJl
bmRlcmVyLT5zdHlsZSgpLT5uYXZEb3duKCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9j
dXNEaXJlY3Rpb25MZWZ0OgorICAgICAgICB2YWx1ZSA9IHJlbmRlcmVyLT5zdHlsZSgpLT5uYXZM
ZWZ0KCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRm9jdXNEaXJlY3Rpb25SaWdodDoKKyAg
ICAgICAgdmFsdWUgPSByZW5kZXJlci0+c3R5bGUoKS0+bmF2UmlnaHQoKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBGb2N1c0RpcmVjdGlvbk5vbmU6CisgICAgZGVmYXVsdDoKKyAgICAgICAg
QVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGlmICh2
YWx1ZS5pZCgpLmlzTnVsbCgpIHx8IHZhbHVlLmlzQXV0bygpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICBjb25zdCBBdG9taWNTdHJpbmcmIHRhcmdldCA9IHZhbHVlLnRhcmdldCgpOwor
ICAgIEZyYW1lKiB0YXJnZXRGcmFtZSA9IDA7CisKKyAgICAvLyBJZiB3ZSB3ZXJlIGluIHRoZSBh
dXRvc2Nyb2xsL3BhblNjcm9sbCBtb2RlIHdlIHdhbnQgdG8gc3RvcCBpdC4KKyAgICBjdXJGcmFt
ZS0+ZXZlbnRIYW5kbGVyKCktPnN0b3BBdXRvc2Nyb2xsVGltZXIoKTsKKworICAgIGlmICh0YXJn
ZXQgPT0gQ3VycmVudCkKKyAgICAgICAgdGFyZ2V0RnJhbWUgPSBjdXJGcmFtZTsKKyAgICBlbHNl
IGlmICh0YXJnZXQgPT0gUm9vdCkKKyAgICAgICAgdGFyZ2V0RnJhbWUgPSBjdXJGcmFtZS0+dHJl
ZSgpLT50b3AoKTsKKyAgICBlbHNlCisgICAgICAgIHRhcmdldEZyYW1lID0gY3VyRnJhbWUtPnRy
ZWUoKS0+ZmluZCh0YXJnZXQpOworCisgICAgaWYgKCF0YXJnZXRGcmFtZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworCisgICAgRWxlbWVudCogYW5jaG9yID0gdGFyZ2V0RnJhbWUtPmRvY3VtZW50
KCktPmZpbmRBbmNob3IodmFsdWUuaWQoKS5zdHJpbmcoKSk7CisgICAgaWYgKCFhbmNob3IpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAvLyBJZiBpdCdzIHNhbWUgd2l0aCB0aGUgY3VycmVu
dCBmb2N1c2VkLCBpdCBzaG91bGQgYmUgY29uc3VtZWQuCisgICAgaWYgKGZvY3VzZWQgPT0gYW5j
aG9yKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIGFuY2hvci0+c2Nyb2xsSW50b1ZpZXdJ
Zk5lZWRlZChmYWxzZSk7CisKKyAgICBib29sIHN1Y2Nlc3NmdWxseUZvY3VzZWQgPSBzZXRGb2N1
c2VkRWxlbWVudChhbmNob3IsIHRhcmdldEZyYW1lKTsKKyAgICBpZiAoc3VjY2Vzc2Z1bGx5Rm9j
dXNlZCkKKyAgICAgICAgbV9wYWdlLT5jaHJvbWUoKS5mb2N1c2VkTm9kZUNoYW5nZWQoYW5jaG9y
KTsKKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuaCBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCmluZGV4IDU0OTc3ODYuLjkwMjUwYzIgMTAwNjQ0Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5oCkBAIC03MCw2ICs3MCw3IEBAIHB1YmxpYzoKIAogICAg
IGJvb2wgc2V0SW5pdGlhbEZvY3VzKEZvY3VzRGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50Kik7CiAg
ICAgYm9vbCBhZHZhbmNlRm9jdXMoRm9jdXNEaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqLCBib29s
IGluaXRpYWxGb2N1cyA9IGZhbHNlKTsKKyAgICBib29sIGhhbmRsZUNTU0ZvY3VzTmF2aWdhdGlv
bihGb2N1c0RpcmVjdGlvbik7CiAKICAgICBib29sIHNldEZvY3VzZWRFbGVtZW50KEVsZW1lbnQq
LCBQYXNzUmVmUHRyPEZyYW1lPiwgRm9jdXNEaXJlY3Rpb24gPSBGb2N1c0RpcmVjdGlvbk5vbmUp
OwogCmRpZmYgLS1naXQgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
LmggU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlLmgKaW5kZXggNmE2
MGQ3YS4uNTQzNmEwYyAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9S
ZW5kZXJTdHlsZS5oCisrKyBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5
bGUuaApAQCAtNTgsNiArNTgsNyBAQAogI2luY2x1ZGUgIlN0eWxlR3JpZEl0ZW1EYXRhLmgiCiAj
aW5jbHVkZSAiU3R5bGVNYXJxdWVlRGF0YS5oIgogI2luY2x1ZGUgIlN0eWxlTXVsdGlDb2xEYXRh
LmgiCisjaW5jbHVkZSAiU3R5bGVOYXZpZ2F0aW9uVmFsdWUuaCIKICNpbmNsdWRlICJTdHlsZVJh
cmVJbmhlcml0ZWREYXRhLmgiCiAjaW5jbHVkZSAiU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5o
IgogI2luY2x1ZGUgIlN0eWxlUmVmbGVjdGlvbi5oIgpAQCAtMTE3LDYgKzExOCw3IEBAIGNsYXNz
IFN0eWxlSW1hZ2U7CiBjbGFzcyBTdHlsZUluaGVyaXRlZERhdGE7CiBjbGFzcyBTdHlsZVJlc29s
dmVyOwogY2xhc3MgVHJhbnNmb3JtYXRpb25NYXRyaXg7CitjbGFzcyBTdHlsZU5hdmlnYXRpb25E
YXRhOwogCiBjbGFzcyBDb250ZW50RGF0YTsKIApAQCAtODc3LDYgKzg3OSwxMSBAQCBwdWJsaWM6
CiAKICAgICB1bnNpZ25lZCB0YWJTaXplKCkgY29uc3QgeyByZXR1cm4gcmFyZUluaGVyaXRlZERh
dGEtPm1fdGFiU2l6ZTsgfQogCisgICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgbmF2RG93bigpIGNv
bnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX25hdmlnYXRpb24ubV9kb3duOyB9
CisgICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgbmF2TGVmdCgpIGNvbnN0IHsgcmV0dXJuIHJhcmVO
b25Jbmhlcml0ZWREYXRhLT5tX25hdmlnYXRpb24ubV9sZWZ0OyB9CisgICAgU3R5bGVOYXZpZ2F0
aW9uVmFsdWUgbmF2UmlnaHQoKSBjb25zdCB7IHJldHVybiByYXJlTm9uSW5oZXJpdGVkRGF0YS0+
bV9uYXZpZ2F0aW9uLm1fcmlnaHQ7IH0KKyAgICBTdHlsZU5hdmlnYXRpb25WYWx1ZSBuYXZVcCgp
IGNvbnN0IHsgcmV0dXJuIHJhcmVOb25Jbmhlcml0ZWREYXRhLT5tX25hdmlnYXRpb24ubV91cDsg
fQorCiAgICAgLy8gRW5kIENTUzMgR2V0dGVycwogCiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBm
bG93VGhyZWFkKCkgY29uc3QgeyByZXR1cm4gcmFyZU5vbkluaGVyaXRlZERhdGEtPm1fZmxvd1Ro
cmVhZDsgfQpAQCAtMTM3Myw2ICsxMzgwLDExIEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VGFi
U2l6ZSh1bnNpZ25lZCBzaXplKSB7IFNFVF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fdGFiU2l6
ZSwgc2l6ZSk7IH0KIAorICAgIHZvaWQgc2V0TmF2RG93bihTdHlsZU5hdmlnYXRpb25WYWx1ZSB2
KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERhdGEsIG1fbmF2aWdhdGlvbi5tX2Rvd24sIHYp
OyB9CisgICAgdm9pZCBzZXROYXZMZWZ0KFN0eWxlTmF2aWdhdGlvblZhbHVlIHYpIHsgU0VUX1ZB
UihyYXJlTm9uSW5oZXJpdGVkRGF0YSwgbV9uYXZpZ2F0aW9uLm1fbGVmdCwgdik7IH0KKyAgICB2
b2lkIHNldE5hdlJpZ2h0KFN0eWxlTmF2aWdhdGlvblZhbHVlIHYpIHsgU0VUX1ZBUihyYXJlTm9u
SW5oZXJpdGVkRGF0YSwgbV9uYXZpZ2F0aW9uLm1fcmlnaHQsIHYpOyB9CisgICAgdm9pZCBzZXRO
YXZVcChTdHlsZU5hdmlnYXRpb25WYWx1ZSB2KSB7IFNFVF9WQVIocmFyZU5vbkluaGVyaXRlZERh
dGEsIG1fbmF2aWdhdGlvbi5tX3VwLCB2KTsgfQorCiAgICAgLy8gRW5kIENTUzMgU2V0dGVycwog
CiAgICAgdm9pZCBzZXRMaW5lR3JpZChjb25zdCBBdG9taWNTdHJpbmcmIGxpbmVHcmlkKSB7IFNF
VF9WQVIocmFyZUluaGVyaXRlZERhdGEsIG1fbGluZUdyaWQsIGxpbmVHcmlkKTsgfQpAQCAtMTc0
MCw2ICsxNzUyLDggQEAgcHVibGljOgogICAgIHN0YXRpYyBXcmFwRmxvdyBpbml0aWFsV3JhcEZs
b3coKSB7IHJldHVybiBXcmFwRmxvd0F1dG87IH0KICAgICBzdGF0aWMgV3JhcFRocm91Z2ggaW5p
dGlhbFdyYXBUaHJvdWdoKCkgeyByZXR1cm4gV3JhcFRocm91Z2hXcmFwOyB9CiAKKyAgICBzdGF0
aWMgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgaW5pdGlhbFN0eWxlTmF2aWdhdGlvbigpIHsgREVGSU5F
X1NUQVRJQ19MT0NBTChTdHlsZU5hdmlnYXRpb25WYWx1ZSwgaW5pdGlhbF9uYXZpZ2F0aW9uLCAo
KSk7IHJldHVybiBpbml0aWFsX25hdmlnYXRpb247IH0KKwogICAgIC8vIEtlZXAgdGhlc2UgYXQg
dGhlIGVuZC4KICAgICBzdGF0aWMgTGluZUNsYW1wVmFsdWUgaW5pdGlhbExpbmVDbGFtcCgpIHsg
cmV0dXJuIExpbmVDbGFtcFZhbHVlKCk7IH0KICAgICBzdGF0aWMgRVRleHRTZWN1cml0eSBpbml0
aWFsVGV4dFNlY3VyaXR5KCkgeyByZXR1cm4gVFNOT05FOyB9CmRpZmYgLS1naXQgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvbkRhdGEuaCBTb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVOYXZpZ2F0aW9uRGF0YS5oCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLmUzYTY5ZTAKLS0tIC9kZXYvbnVsbAorKysgU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1N0eWxlTmF2aWdhdGlvbkRhdGEuaApAQCAtMCwwICsxLDY0IEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDEzIEFsdGljYXN0IENvcnBvcmF0aW9uLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3Ug
Y2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMg
b2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hl
ZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBv
ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAq
CisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxs
IGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRo
ZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJl
Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQor
ICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElm
IG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUx
IEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBTdHlsZU5hdmlnYXRpb25EYXRhX2gKKyNkZWZpbmUg
U3R5bGVOYXZpZ2F0aW9uRGF0YV9oCisKKyNpbmNsdWRlICJTdHlsZU5hdmlnYXRpb25WYWx1ZS5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFN0eWxlTmF2aWdhdGlvbkRhdGEgewor
ZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOworcHVibGljOgorICAgIFN0eWxlTmF2aWdhdGlvbkRh
dGEoKSB7IH0KKworICAgIFN0eWxlTmF2aWdhdGlvbkRhdGEoY29uc3QgU3R5bGVOYXZpZ2F0aW9u
RGF0YSYgbykKKyAgICA6IG1fdXAoby5tX3VwKQorICAgICwgbV9kb3duKG8ubV9kb3duKQorICAg
ICwgbV9sZWZ0KG8ubV9sZWZ0KQorICAgICwgbV9yaWdodChvLm1fcmlnaHQpCisgICAgeyB9CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVOYXZpZ2F0aW9uRGF0YSYgbykgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiBtX3VwID09IG8ubV91cCAmJiBtX2Rvd24gPT0gby5tX2Rv
d24gJiYgbV9sZWZ0ID09IG8ubV9sZWZ0ICYmIG1fcmlnaHQgPT0gby5tX3JpZ2h0OworICAgIH0K
KworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZU5hdmlnYXRpb25EYXRhJiBvKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gbyk7CisgICAgfQorICAgICAgICAK
KyAgICBjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgdXAoKSBjb25zdCB7IHJldHVybiBtX3Vw
OyB9CisgICAgY29uc3QgU3R5bGVOYXZpZ2F0aW9uVmFsdWUmIGRvd24oKSBjb25zdCB7IHJldHVy
biBtX2Rvd247IH0KKyAgICBjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgbGVmdCgpIGNvbnN0
IHsgcmV0dXJuIG1fbGVmdDsgfQorICAgIGNvbnN0IFN0eWxlTmF2aWdhdGlvblZhbHVlJiByaWdo
dCgpIGNvbnN0IHsgcmV0dXJuIG1fcmlnaHQ7IH0KKworcHJpdmF0ZToKKyAgICBTdHlsZU5hdmln
YXRpb25WYWx1ZSBtX3VwOworICAgIFN0eWxlTmF2aWdhdGlvblZhbHVlIG1fZG93bjsKKyAgICBT
dHlsZU5hdmlnYXRpb25WYWx1ZSBtX2xlZnQ7CisgICAgU3R5bGVOYXZpZ2F0aW9uVmFsdWUgbV9y
aWdodDsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIFN0eWxlTmF2
aWdhdGlvbkRhdGFfaApkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZU5hdmlnYXRpb25WYWx1ZS5oIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHls
ZU5hdmlnYXRpb25WYWx1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1
YTYxNjkKLS0tIC9kZXYvbnVsbAorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1N0
eWxlTmF2aWdhdGlvblZhbHVlLmgKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAxMyBBbHRpY2FzdCBDb3Jwb3JhdGlvbi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBH
ZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdh
cmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChh
dCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlz
IGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQg
V0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBv
ZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NF
LiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9y
ZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBs
aWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCisgKiB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZp
ZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKgorICovCisKKyNp
Zm5kZWYgU3R5bGVOYXZpZ2F0aW9uVmFsdWVfaAorI2RlZmluZSBTdHlsZU5hdmlnYXRpb25WYWx1
ZV9oCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU3R5bGVOYXZpZ2F0aW9uVmFsdWUg
eworZnJpZW5kIGNsYXNzIFJlbmRlclN0eWxlOworcHVibGljOgorICAgIFN0eWxlTmF2aWdhdGlv
blZhbHVlKCkKKyAgICA6bV9pZChBdG9taWNTdHJpbmcoImF1dG8iKSkKKyAgICAsIG1fdGFyZ2V0
KEF0b21pY1N0cmluZygiY3VycmVudCIpKSB7IH0KKworICAgIFN0eWxlTmF2aWdhdGlvblZhbHVl
KGNvbnN0IGNoYXIqIGlkLCBjb25zdCBjaGFyKiB0YXJnZXQpCisgICAgOm1faWQoQXRvbWljU3Ry
aW5nKGlkKSkKKyAgICAsIG1fdGFyZ2V0KEF0b21pY1N0cmluZyh0YXJnZXQpKSB7IH0KKworICAg
IFN0eWxlTmF2aWdhdGlvblZhbHVlKGNvbnN0IEF0b21pY1N0cmluZyYgaWQsIGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFyZ2V0ID0gQXRvbWljU3RyaW5nKCJjdXJyZW50IikpCisgICAgOm1faWQoaWQp
CisgICAgLCBtX3RhcmdldCh0YXJnZXQpIAorICAgIHsgfQorCisgICAgYm9vbCBpc0F1dG8oKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIG1faWQgPT0gImF1dG8iOworICAgIH0KKworICAg
IGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZU5hdmlnYXRpb25WYWx1ZSYgbykgY29uc3QKKyAg
ICB7CisgICAgICAgIHJldHVybiBtX2lkID09IG8ubV9pZCAmJiBtX3RhcmdldCA9PSBvLm1fdGFy
Z2V0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZU5hdmlnYXRpb25W
YWx1ZSYgbykgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAhKCp0aGlzID09IG8pOworICAg
IH0KKworICAgIHZvaWQgb3BlcmF0b3I9KGNvbnN0IFN0eWxlTmF2aWdhdGlvblZhbHVlJiBvKQor
ICAgIHsKKyAgICAgICAgbV9pZCA9IG8ubV9pZDsKKyAgICAgICAgbV90YXJnZXQgPSBvLm1fdGFy
Z2V0OworICAgIH0KKworICAgIGNvbnN0IEF0b21pY1N0cmluZyYgaWQoKSBjb25zdCB7IHJldHVy
biBtX2lkOyB9CisgICAgY29uc3QgQXRvbWljU3RyaW5nJiB0YXJnZXQoKSBjb25zdCB7IHJldHVy
biBtX3RhcmdldDsgfQorCitwcm90ZWN0ZWQ6CisgICAgQXRvbWljU3RyaW5nIG1faWQ7CisgICAg
QXRvbWljU3RyaW5nIG1fdGFyZ2V0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gU3R5bGVOYXZpZ2F0aW9uVmFsdWVfaApkaWZmIC0tZ2l0IFNvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcCBTb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5jcHAKaW5kZXgg
OTY2YmZjYi4uZmY5MmFlYyAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHls
ZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmNwcAorKysgU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N0eWxlL1N0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEuY3BwCkBAIC00NSw2ICs0NSw3IEBA
IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6OlN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGEoKQog
ICAgICwgbV9kcmFnZ2FibGVSZWdpb25Nb2RlKERyYWdnYWJsZVJlZ2lvbk5vbmUpCiAjZW5kaWYK
ICAgICAsIG1fbWFzayhGaWxsTGF5ZXIoTWFza0ZpbGxMYXllcikpCisgICAgLCBtX25hdmlnYXRp
b24oKQogICAgICwgbV9wYWdlU2l6ZSgpCiAgICAgLCBtX3NoYXBlSW5zaWRlKFJlbmRlclN0eWxl
Ojppbml0aWFsU2hhcGVJbnNpZGUoKSkKICAgICAsIG1fc2hhcGVPdXRzaWRlKFJlbmRlclN0eWxl
Ojppbml0aWFsU2hhcGVPdXRzaWRlKCkpCkBAIC0xMTksNiArMTIwLDcgQEAgU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YTo6U3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YShjb25zdCBTdHlsZVJhcmVO
b25Jbmhlcml0ZWQKICAgICAsIG1fdHJhbnNpdGlvbnMoby5tX3RyYW5zaXRpb25zID8gYWRvcHRQ
dHIobmV3IEFuaW1hdGlvbkxpc3QoKm8ubV90cmFuc2l0aW9ucykpIDogbnVsbHB0cikKICAgICAs
IG1fbWFzayhvLm1fbWFzaykKICAgICAsIG1fbWFza0JveEltYWdlKG8ubV9tYXNrQm94SW1hZ2Up
CisgICAgLCBtX25hdmlnYXRpb24oby5tX25hdmlnYXRpb24pCiAgICAgLCBtX3BhZ2VTaXplKG8u
bV9wYWdlU2l6ZSkKICAgICAsIG1fc2hhcGVJbnNpZGUoby5tX3NoYXBlSW5zaWRlKQogICAgICwg
bV9zaGFwZU91dHNpZGUoby5tX3NoYXBlT3V0c2lkZSkKQEAgLTIwOCw2ICsyMTAsNyBAQCBib29s
IFN0eWxlUmFyZU5vbkluaGVyaXRlZERhdGE6Om9wZXJhdG9yPT0oY29uc3QgU3R5bGVSYXJlTm9u
SW5oZXJpdGVkRGF0YSYgbykgYwogICAgICAgICAmJiB0cmFuc2l0aW9uRGF0YUVxdWl2YWxlbnQo
bykKICAgICAgICAgJiYgbV9tYXNrID09IG8ubV9tYXNrCiAgICAgICAgICYmIG1fbWFza0JveElt
YWdlID09IG8ubV9tYXNrQm94SW1hZ2UKKyAgICAgICAgJiYgbV9uYXZpZ2F0aW9uID09IG8ubV9u
YXZpZ2F0aW9uCiAgICAgICAgICYmIG1fcGFnZVNpemUgPT0gby5tX3BhZ2VTaXplCiAgICAgICAg
ICYmIG1fc2hhcGVJbnNpZGUgPT0gby5tX3NoYXBlSW5zaWRlCiAgICAgICAgICYmIG1fc2hhcGVP
dXRzaWRlID09IG8ubV9zaGFwZU91dHNpZGUKZGlmZiAtLWdpdCBTb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3R5bGUvU3R5bGVSYXJlTm9uSW5oZXJpdGVkRGF0YS5oIFNvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9TdHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKaW5kZXggMTE2MjViMy4u
OTk4NjBmMiAxMDA2NDQKLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9TdHlsZVJh
cmVOb25Jbmhlcml0ZWREYXRhLmgKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9T
dHlsZVJhcmVOb25Jbmhlcml0ZWREYXRhLmgKQEAgLTM0LDYgKzM0LDcgQEAKICNpbmNsdWRlICJM
aW5lQ2xhbXBWYWx1ZS5oIgogI2luY2x1ZGUgIk5pbmVQaWVjZUltYWdlLmgiCiAjaW5jbHVkZSAi
U2hhcGVWYWx1ZS5oIgorI2luY2x1ZGUgIlN0eWxlTmF2aWdhdGlvbkRhdGEuaCIKICNpbmNsdWRl
IDx3dGYvT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CkBAIC0xMzQsNiArMTM1LDggQEAgcHVibGljOgogICAgIEZpbGxMYXllciBt
X21hc2s7CiAgICAgTmluZVBpZWNlSW1hZ2UgbV9tYXNrQm94SW1hZ2U7CiAKKyAgICBTdHlsZU5h
dmlnYXRpb25EYXRhIG1fbmF2aWdhdGlvbjsKKwogICAgIExlbmd0aFNpemUgbV9wYWdlU2l6ZTsK
IAogICAgIFJlZlB0cjxTaGFwZVZhbHVlPiBtX3NoYXBlSW5zaWRlOwo=
</data>
<flag name="review"
          id="229234"
          type_id="1"
          status="-"
          setter="tonikitoo"
    />
          </attachment>
      

    </bug>

</bugzilla>