<?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>63246</bug_id>
          
          <creation_ts>2011-06-23 04:57:01 -0700</creation_ts>
          <short_desc>Convert SVGColor to SVGAnimatorFactory concept</short_desc>
          <delta_ts>2011-06-23 10:42:39 -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>SVG</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>41761</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dirk Schulze">krit</reporter>
          <assigned_to name="Dirk Schulze">krit</assigned_to>
          <cc>webkit.review.bot</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>426083</commentid>
    <comment_count>0</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 04:57:01 -0700</bug_when>
    <thetext>Convert SVGColor to SVGAnimatorFactory concept.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426124</commentid>
    <comment_count>1</comment_count>
      <attachid>98344</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 06:52:00 -0700</bug_when>
    <thetext>Created attachment 98344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426129</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 06:55:25 -0700</bug_when>
    <thetext>Attachment 98344 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Last 3072 characters of output:
tedAngle.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedAngle.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedTypeAnimator.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedTypeAnimator.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedTypeAnimator.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.cpp:76:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.cpp:76:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.cpp:76:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumber.h:54:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumber.h:54:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumber.h:54:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedRect.h:52:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedRect.h:52:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedRect.h:52:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedAngle.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedAngle.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedAngle.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPointList.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPointList.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPointList.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Total errors found: 47 in 26 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426133</commentid>
    <comment_count>3</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 06:58:45 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Attachment 98344 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
&gt; 
&gt; Last 3072 characters of output:
&gt; tedAngle.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedAngle.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedTypeAnimator.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedTypeAnimator.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedTypeAnimator.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedLength.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedLength.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedLength.h:51:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedLength.cpp:76:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedLength.cpp:76:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedLength.cpp:76:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedNumber.h:54:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedNumber.h:54:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedNumber.h:54:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedRect.h:52:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedRect.h:52:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedRect.h:52:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedAngle.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedAngle.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedAngle.cpp:77:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedPointList.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedPointList.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Source/WebCore/svg/SVGAnimatedPointList.h:39:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
&gt; Total errors found: 47 in 26 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against check-webkit-style.

I don&apos;t want to change the ownership of the arguments (OwnPtr&lt;SVGAnimatedType&gt;&amp;).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426140</commentid>
    <comment_count>4</comment_count>
      <attachid>98344</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-23 07:07:38 -0700</bug_when>
    <thetext>Comment on attachment 98344
Patch

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

I agree the style bot shouldn&apos;t warn here - the code should be safe as-is. Great patch, still some tweaks needed IMHO to make it perfect:

&gt; Source/WebCore/ChangeLog:12
&gt; +        This information is accessible with the animation element. The animators store the pointer of the animation element, so that it is not

This information is already exposed by the animation element.

&gt; Source/WebCore/svg/SVGAnimatedAngle.cpp:27
&gt; +SVGAnimatedAngleAnimator::SVGAnimatedAngleAnimator(SVGSMILElement* animationElement, SVGElement* contextElement)

Why pass in SVGSMILElement and do ....

&gt; Source/WebCore/svg/SVGAnimatedAngle.cpp:54
&gt; +    SVGAnimateElement* animationElement = static_cast&lt;SVGAnimateElement*&gt;(m_animationElement);

.... static_casts to SVGAnimateElement in the other methods? That seems like a flaw. Just use SVGAnimateElement in first place, no?

&gt; Source/WebCore/svg/SVGAnimatedNumber.h:46
&gt; +    SVGAnimatedNumberAnimator(SVGSMILElement* animationElement, SVGElement*);

No need to name the parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426224</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 09:12:45 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 98344 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=98344&amp;action=review
&gt; 
&gt; I agree the style bot shouldn&apos;t warn here - the code should be safe as-is. Great patch, still some tweaks needed IMHO to make it perfect:
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        This information is accessible with the animation element. The animators store the pointer of the animation element, so that it is not
&gt; 
&gt; This information is already exposed by the animation element.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedAngle.cpp:27
&gt; &gt; +SVGAnimatedAngleAnimator::SVGAnimatedAngleAnimator(SVGSMILElement* animationElement, SVGElement* contextElement)
&gt; 
&gt; Why pass in SVGSMILElement and do ....
&gt; 
&gt; &gt; Source/WebCore/svg/SVGAnimatedAngle.cpp:54
&gt; &gt; +    SVGAnimateElement* animationElement = static_cast&lt;SVGAnimateElement*&gt;(m_animationElement);
&gt; 
&gt; .... static_casts to SVGAnimateElement in the other methods? That seems like a flaw. Just use SVGAnimateElement in first place, no?

No, I plan to generalize the Animators more, so that they can be used for animateTransform and animateMotion as well. They would cast it to other elements. I tried to use SVGAnimationElement (the direct base class of animation elements), but got dependency problems.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426242</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 09:57:53 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; No, I plan to generalize the Animators more, so that they can be used for animateTransform and animateMotion as well. They would cast it to other elements. I tried to use SVGAnimationElement (the direct base class of animation elements), but got dependency problems.

Ok, replaced SVGSMILElement by SVGAnimationElement, the common base class of SVGAnimateElement, SVGAnimateTransformElement and SVGAnimateMotionElement. In the future we can use the same code on all animation types and may move the animator itself to SVGAnimationElement instead of leaving it in every single animation element. Uploading a patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426250</commentid>
    <comment_count>7</comment_count>
      <attachid>98362</attachid>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 10:03:15 -0700</bug_when>
    <thetext>Created attachment 98362
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426252</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-23 10:05:49 -0700</bug_when>
    <thetext>Attachment 98362 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Last 3072 characters of output:
tedAngle.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedAngle.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedTypeAnimator.h:40:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedTypeAnimator.h:40:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedTypeAnimator.h:40:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.h:53:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.cpp:78:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.cpp:78:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedLength.cpp:78:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumber.h:56:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumber.h:56:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedNumber.h:56:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedRect.h:54:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedRect.h:54:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedRect.h:54:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedAngle.cpp:79:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedAngle.cpp:79:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedAngle.cpp:79:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPointList.h:40:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPointList.h:40:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Source/WebCore/svg/SVGAnimatedPointList.h:40:  The parameter type should use PassOwnPtr instead of OwnPtr.  [readability/pass_ptr] [5]
Total errors found: 47 in 27 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426270</commentid>
    <comment_count>9</comment_count>
      <attachid>98362</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2011-06-23 10:33:05 -0700</bug_when>
    <thetext>Comment on attachment 98362
Patch

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

Looks great, r=me.

&gt; Source/WebCore/ChangeLog:15
&gt; +        Replace all SVGSMILElement references by SVGAnimationsElement - the direct base class of all animation elements.

s/direct/common/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>426287</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Schulze">krit</who>
    <bug_when>2011-06-23 10:42:39 -0700</bug_when>
    <thetext>Committed r89587: &lt;http://trac.webkit.org/changeset/89587&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98344</attachid>
            <date>2011-06-23 06:52:00 -0700</date>
            <delta_ts>2011-06-23 10:03:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63246-20110623155156.patch</filename>
            <type>text/plain</type>
            <size>71807</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NTYyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTYgQEAKKzIwMTEtMDYtMjMgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb252ZXJ0IFNWR0NvbG9yIHRvIFNWR0FuaW1hdG9yRmFjdG9yeSBj
b25jZXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzI0NgorCisgICAgICAgIEZvbGxvdyB1cCBvZiAiU1ZHQW5pbWF0aW9uIHNob3VsZCB1c2UgZGly
ZWN0IHVuaXQgYW5pbWF0aW9uIGZvciBTVkdMZW5ndGgiOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNjgKKyAgICAgICAgVGhpcyBwYXRjaCBjb250aW51ZXMgdGhl
IGNvbnZlcnNpb24gdG8gdGhlIG5ldyBjb25jZXB0IG9mIFNWR0FuaW1hdG9yRmFjdG9yeSB3aXRo
IFNWR0NvbG9yLgorCisgICAgICAgIENoYW5nZWQgY29uc3RydWN0b3JzIG9mIGFuaW1hdG9ycyB0
byB0YWtlIHRoZSBhbmltYXRpb24gZWxlbWVudCBTVkdTTUlMRWxlbWVudCBhcyBuZXcgYXJndW1l
bnQuIFJlbW92ZWQgYXR0cmlidXRlIG5hbWUgYXJndW1lbnQgaW5zdGVhZC4KKyAgICAgICAgVGhp
cyBpbmZvcm1hdGlvbiBpcyBhY2Nlc3NpYmxlIHdpdGggdGhlIGFuaW1hdGlvbiBlbGVtZW50LiBU
aGUgYW5pbWF0b3JzIHN0b3JlIHRoZSBwb2ludGVyIG9mIHRoZSBhbmltYXRpb24gZWxlbWVudCwg
c28gdGhhdCBpdCBpcyBub3QKKyAgICAgICAgbmVjZXNzYXJ5IHRvIHBhc3MgaXQgYXMgYXJndW1l
bnQgdG8gdGhlIGZ1bmN0aW9ucyBjYWxjdWxhdGVEaXN0YW5jZSwgY2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZS4KKworICAgICAgICBBZGRlZCBhIG5ldyBtZXRob2QgaW4gU1ZHQW5pbWF0ZUVsZW1lbnQg
dG8gZGV0ZXJtaW5lIHRoZSBwcm9wZXJ0eSB2YWx1ZSB0eXBlIG9mIENTUyBwcm9wZXJ0aWVzIChy
ZWd1bGFyIHZhbHVlIHR5cGUsIGluaGVyaXQgb3IgY3VycmVudENvbG9yKS4KKyAgICAgICAgVGhl
IG90aGVyIHR3byBuZXcgbWV0aG9kcyBmcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSBhbmQgdG9Qcm9w
ZXJ0eVZhbHVlVHlwZSgpIGF2b2lkIHBhc3NpbmcgYm9vbGVhbiBhcmd1bWVudHMgaW4gY2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZSgpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyBhZGRlZC4gQ3VycmVu
dCB0ZXN0cyBjb3ZlciB0aGUgY2hhbmdlcy4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBB
ZGRlZCBuZXcgZmlsZXMgdG8gYnVpbGQgc3lzdGVtLgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxp
c3QuYW06IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUuZ3lwaTogRGl0dG8uCisgICAgICAgICog
V2ViQ29yZS5wcm86IERpdHRvLgorICAgICAgICAqIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6
IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJbk9uZS5jcHA6ICBEaXR0by4KKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOiBVc2UgQW5pbWF0b3IgZm9yIFNWR0NvbG9yLiAK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpTVkdBbmltYXRlRWxlbWVudCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50
OjpkZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5p
bWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmVuc3VyZUFuaW1hdG9yKTogUGFzcyB0
aGUgYW5pbWF0aW9uIGVsZW1lbnQgYXMgcG9pbnRlciB0byBhbmltYXRvci4KKyAgICAgICAgKiBz
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaDogUmVtb3ZlZCB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4gU29t
ZSBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmZyb21Qcm9w
ZXJ0eVZhbHVlVHlwZSk6IEdldCBwcm9wZXJ0eSB2YWx1ZSB0eXBlIG9mICdmcm9tJyBwcm9wZXJ0
eS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50Ojp0b1Byb3BlcnR5VmFsdWVU
eXBlKTogR2V0IHByb3BlcnR5IHZhbHVlIHR5cGUgb2YgJ3RvJyBwcm9wZXJ0eS4KKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZEFuZ2xlQW5pbWF0b3I6OlNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcik6IEFkZGVkIFNWR1NNSUxF
bGVtZW50IGFzIG5ldyBhcmd1bWVudCwgcmVtb3ZlZCBhdHRyaWJ1dGVOYW1lLgorICAgICAgICAo
V2ViQ29yZTo6U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1
ZXMpOiBEZXRlcm1pbmUgcHJvcGVydHkgdmFsdWUgdHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKTogRGl0dG8u
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUpOiBVc2UgbmV3IGZ1bmN0aW9ucyBvZiBTVkdBbmltYXRlRWxlbWVudCBmb3Ig
aGFuZGxpbmcgb2YgJ2luaGVyaXQnLgorICAgICAgICAgICAgQW5kIHJlbW92ZWQgdW5uZWNlc3Nh
cnkgYXJndW1lbnRzLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9y
OjpjYWxjdWxhdGVEaXN0YW5jZSk6IFJlbW92ZWQgYW5pbWF0aW9uIGVsZW1lbnQgYXJndW1lbnQu
CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5p
bWF0ZWRDb2xvci5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRDb2xv
ckFuaW1hdG9yOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3IpOiBEaXR0by4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y29uc3RydWN0RnJvbVN0cmluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21B
bmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6
OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAg
ICogc3ZnL1NWR0FuaW1hdGVkQ29sb3IuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdB
bmltYXRlZENvbG9yQW5pbWF0b3I6On5TVkdBbmltYXRlZENvbG9yQW5pbWF0b3IpOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmlt
YXRlZExlbmd0aEFuaW1hdG9yOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9t
QW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRv
cjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAg
ICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRl
ZE51bWJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9y
OjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpT
VkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFu
ZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6
OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRO
dW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmlt
YXRlZE51bWJlci5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpTVkdBbmltYXRl
ZFBvaW50TGlzdEFuaW1hdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZFBvaW50TGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZH
QW5pbWF0ZWRSZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUmVjdEFuaW1h
dG9yOjpTVkdBbmltYXRlZFJlY3RBbmltYXRvcik6IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRSZWN0Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1h
dGVkVHlwZS5jcHA6IEFkZGVkIGhhbmRsaW5nIG9mIENvbG9yIHZhbHVlcy4KKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlwZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0FuaW1hdGVkVHlwZTo6Y29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBl
Ojp2YWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6c2V0
VmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5oOgorICAgICAg
ICAqIHN2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRvci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
QW5pbWF0ZWRUeXBlQW5pbWF0b3I6OlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKToKKyAgICAgICAg
KiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRv
ckZhY3Rvcnk6OmNyZWF0ZSk6CisKIDIwMTEtMDYtMjMgIE1pa2hhaWwgTmFnYW5vdiAgPG1uYWdh
bm92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBZdXJ5IFNlbWlraGF0c2t5
LgpJbmRleDogU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDg5NTM2KQorKysgU291cmNlL1dl
YkNvcmUvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTE2NTUsNiArMTY1NSw3IEBA
IElGIChFTkFCTEVfU1ZHKQogICAgICAgICBzdmcvU1ZHQW5nbGUuY3BwCiAgICAgICAgIHN2Zy9T
VkdBbmltYXRlQ29sb3JFbGVtZW50LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5j
cHAKKyAgICAgICAgc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwCiAgICAgICAgIHN2Zy9TVkdBbmlt
YXRlZExlbmd0aC5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAogICAgICAg
ICBzdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9HTlVt
YWtlZmlsZS5saXN0LmFtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxl
Lmxpc3QuYW0JKHJldmlzaW9uIDg5NTM2KQorKysgU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUu
bGlzdC5hbQkod29ya2luZyBjb3B5KQpAQCAtMzQwNCw2ICszNDA0LDggQEAgd2ViY29yZV9zb3Vy
Y2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAgXAogCVNv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZEJvb2xlYW4uaCBcCisJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
Q29sb3IuY3BwIFwKKwlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5oIFwKIAlTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRJbnRlZ2VyLmggXAogCVNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlZExlbmd0aC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQkocmV2aXNpb24gODk1MzYp
CisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkJKHdvcmtpbmcgY29weSkKQEAgLTEwNDUs
NiArMTA0NSw3IEBACiAgICAgICAgICAgICAnc3ZnL1NWR0FuZ2xlLmgnLAogICAgICAgICAgICAg
J3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEJv
b2xlYW4uaCcsCisgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkQ29sb3IuaCcsCiAgICAgICAg
ICAgICAnc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaCcsCiAgICAgICAgICAgICAnc3ZnL1NW
R0FuaW1hdGVkSW50ZWdlci5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRMZW5ndGgu
aCcsCkBAIC01NzA4LDYgKzU3MDksNyBAQAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlQ29s
b3JFbGVtZW50LmNwcCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVDb2xvckVsZW1lbnQu
aCcsCiAgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwJywKKyAgICAgICAgICAg
ICdzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRl
ZExlbmd0aC5jcHAnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAnLAog
ICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAnLApJbmRleDogU291cmNl
L1dlYkNvcmUvV2ViQ29yZS5wcm8KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5wcm8JKHJldmlzaW9uIDg5NTM2KQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5wcm8JKHdv
cmtpbmcgY29weSkKQEAgLTIzMzAsNiArMjMzMCw3IEBAIEhFQURFUlMgKz0gXAogICAgIHN2Zy9T
VkdBbmltYXRlQ29sb3JFbGVtZW50LmggXAogICAgIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmggXAog
ICAgIHN2Zy9TVkdBbmltYXRlZEJvb2xlYW4uaCBcCisgICAgc3ZnL1NWR0FuaW1hdGVkQ29sb3Iu
aCBcCiAgICAgc3ZnL1NWR0FuaW1hdGVkRW51bWVyYXRpb24uaCBcCiAgICAgc3ZnL1NWR0FuaW1h
dGVkSW50ZWdlci5oIFwKICAgICBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaCBcCkBAIC0zMzIyLDYg
KzMzMjMsNyBAQCBjb250YWlucyhERUZJTkVTLCBFTkFCTEVfU1ZHPTEpIHsKICAgICAgICAgICAg
ICAgc3ZnL1NWR0FuZ2xlLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlQ29sb3JF
bGVtZW50LmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcCBcCisg
ICAgICAgICAgICAgIHN2Zy9TVkdBbmltYXRlZENvbG9yLmNwcCBcCiAgICAgICAgICAgICAgIHN2
Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRO
dW1iZXIuY3BwIFwKICAgICAgICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcCBc
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvagko
cmV2aXNpb24gODk1MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3Jl
LnZjcHJvagkod29ya2luZyBjb3B5KQpAQCAtNjUzNjIsNiArNjUzNjIsMTAgQEAKIAkJCQk+CiAJ
CQk8L0ZpbGU+CiAJCQk8RmlsZQorCQkJCVJlbGF0aXZlUGF0aD0iLi5cc3ZnXFNWR0FuaW1hdGVk
Q29sb3IuaCIKKwkJCQk+CisJCQk8L0ZpbGU+CisJCQk8RmlsZQogCQkJCVJlbGF0aXZlUGF0aD0i
Li5cc3ZnXFNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCIKIAkJCQk+CiAJCQk8L0ZpbGU+CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9q
CShyZXZpc2lvbiA4OTUzNikKKysrIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtOTk1LDYgKzk5NSw4IEBACiAJCTQzOUQz
MzQ1MTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0
RiAvKiBTVkdBbmltYXRvckZhY3RvcnkuaCAqLzsgfTsKIAkJNDNBMEYwQjExM0FDN0Q2RDAwQTVG
MEE3IC8qIFNWR0FuaW1hdGVkTnVtYmVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDQzQTBGMEIwMTNBQzdENkQwMEE1RjBBNyAvKiBTVkdBbmltYXRl
ZE51bWJlci5jcHAgKi87IH07CiAJCTQzQTBGMEI2MTNBQ0NDRkYwMEE1RjBBNyAvKiBTVkdBbmlt
YXRlZFR5cGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNDNBMEYwQjUxM0FDQ0NGRjAwQTVGMEE3IC8qIFNWR0FuaW1hdGVkVHlwZS5jcHAgKi87IH07
CisJCTQzQTYyNUY4MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0E2MjVGNjEzQjMzMDQw
MDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5oICovOyB9OworCQk0M0E2MjVGOTEzQjMzMDQw
MDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0E2MjVGNzEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5p
bWF0ZWRDb2xvci5jcHAgKi87IH07CiAJCTQzQjkzMzY5MTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdB
bmltYXRlZFBvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDNCOTMzNjcxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVkUG9pbnRMaXN0
LmggKi87IH07CiAJCTQzQjkzMzZBMTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50
TGlzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0
M0I5MzM2ODEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwICovOyB9
OwogCQk0M0MwOTJCQzEyRDlFNEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNDMDkyQkEx
MkQ5RTRFRTAwQTk4OUMzIC8qIFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCAqLzsgfTsKQEAgLTc0
ODAsNiArNzQ4Miw4IEBACiAJCTQzOUQzMzQyMTNBNjkxMUMwMEMyMEY0RiAvKiBTVkdBbmltYXRv
ckZhY3RvcnkuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHQW5pbWF0b3JG
YWN0b3J5Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQTBGMEIwMTNBQzdENkQw
MEE1RjBBNyAvKiBTVkdBbmltYXRlZE51bWJlci5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZE51bWJlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTQzQTBGMEI1MTNBQ0NDRkYwMEE1RjBBNyAvKiBTVkdBbmltYXRlZFR5cGUuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRUeXBlLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDNBNjI1RjYxM0IzMzA0MDAwQUM5NEI4
IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U1ZHQW5pbWF0ZWRDb2xvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0M0E2MjVG
NzEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZENvbG9yLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNDNCOTMzNjcxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0FuaW1hdGVk
UG9pbnRMaXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVk
UG9pbnRMaXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQjkzMzY4MTNCMjYx
QjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTQzQzA5MkI5MTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdG
b3JlaWduT2JqZWN0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJl
bmRlclNWR0ZvcmVpZ25PYmplY3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAt
MTczOTAsNiArMTczOTQsOCBAQAogCQkJCUIyMjI3N0U2MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdB
bmltYXRlZEFuZ2xlLmlkbCAqLywKIAkJCQkwODU3OTcwODEyNzgzOTRDMDBBOEVDNUYgLyogU1ZH
QW5pbWF0ZWRCb29sZWFuLmggKi8sCiAJCQkJQjIyMjc3RTcwRDAwQkYxRjAwNzFCNzgyIC8qIFNW
R0FuaW1hdGVkQm9vbGVhbi5pZGwgKi8sCisJCQkJNDNBNjI1RjcxM0IzMzA0MDAwQUM5NEI4IC8q
IFNWR0FuaW1hdGVkQ29sb3IuY3BwICovLAorCQkJCTQzQTYyNUY2MTNCMzMwNDAwMEFDOTRCOCAv
KiBTVkdBbmltYXRlZENvbG9yLmggKi8sCiAJCQkJMDhENDZDRTIxMjdBRDVGQzAwODk2OTRCIC8q
IFNWR0FuaW1hdGVkRW51bWVyYXRpb24uaCAqLywKIAkJCQlCMjIyNzdFODBEMDBCRjFGMDA3MUI3
ODIgLyogU1ZHQW5pbWF0ZWRFbnVtZXJhdGlvbi5pZGwgKi8sCiAJCQkJMDgyM0QxNTgxMjdBRDZB
QzAwMEVCQzk1IC8qIFNWR0FuaW1hdGVkSW50ZWdlci5oICovLApAQCAtMjMwNTQsNiArMjMwNjAs
NyBAQAogCQkJCUIxQUQ0RTdEMTNBMTJBNzIwMDg0NkIyNyAvKiBDdWVQYXJzZXJQcml2YXRlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQk5N0IxRjAyRjEzQjAyNUQyMDBGNTEwM0YgLyogU2hhcmVkQnVm
ZmVyQ2h1bmtSZWFkZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTQzQjkzMzY5MTNCMjYxQjEwMDQ1
ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oIGluIEhlYWRlcnMgKi8sCisJCQkJNDNBNjI1
RjgxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCBpbiBIZWFkZXJzICovLAog
CQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpA
QCAtMjU4MTUsNiArMjU4MjIsNyBAQAogCQkJCTk3QjFGMDJFMTNCMDI1Q0EwMEY1MTAzRiAvKiBT
aGFyZWRCdWZmZXJDaHVua1JlYWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MzE0MkU3QTEz
QjFFOTc3MDBGMUM4NzEgLyogU1ZHQW5pbWF0ZWRSZWN0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTQzQjkzMzZBMTNCMjYxQjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5jcHAgaW4g
U291cmNlcyAqLywKKwkJCQk0M0E2MjVGOTEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRD
b2xvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbGxJ
bk9uZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FsbEluT25lLmNw
cAkocmV2aXNpb24gODk1MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0zMSw2ICszMSw3IEBACiAjaW5jbHVkZSAiU1ZHQW5nbGUuY3Bw
IgogI2luY2x1ZGUgIlNWR0FuaW1hdGVDb2xvckVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkQW5nbGUuY3BwIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkQ29sb3IuY3BwIgogI2luY2x1
ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZE51bWJlci5j
cHAiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIgpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwCShyZXZpc2lvbiA4OTUzNikKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI4
LDExICsyOCw5IEBACiAjaW5jbHVkZSAiQ1NTQ29tcHV0ZWRTdHlsZURlY2xhcmF0aW9uLmgiCiAj
aW5jbHVkZSAiQ1NTUGFyc2VyLmgiCiAjaW5jbHVkZSAiQ1NTUHJvcGVydHlOYW1lcy5oIgotI2lu
Y2x1ZGUgIkNvbG9yRGlzdGFuY2UuaCIKICNpbmNsdWRlICJRdWFsaWZpZWROYW1lLmgiCiAjaW5j
bHVkZSAiUmVuZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0b3JGYWN0b3J5LmgiCi0j
aW5jbHVkZSAiU1ZHQ29sb3IuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgogI2luY2x1ZGUgIlNW
R1BhdGhQYXJzZXJGYWN0b3J5LmgiCiAjaW5jbHVkZSAiU1ZHU3R5bGVkRWxlbWVudC5oIgpAQCAt
NDQsNiArNDIsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBTVkdBbmltYXRlRWxlbWVudDo6U1ZH
QW5pbWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRv
Y3VtZW50KQogICAgIDogU1ZHQW5pbWF0aW9uRWxlbWVudCh0YWdOYW1lLCBkb2N1bWVudCkKICAg
ICAsIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKEFuaW1hdGVkU3RyaW5nKQorICAgICwgbV9mcm9t
UHJvcGVydHlWYWx1ZVR5cGUoUmVndWxhclByb3BlcnR5VmFsdWUpCisgICAgLCBtX3RvUHJvcGVy
dHlWYWx1ZVR5cGUoUmVndWxhclByb3BlcnR5VmFsdWUpCiAgICAgLCBtX2FuaW1hdGVkUGF0aFBv
aW50ZXIoMCkKIHsKICAgICBBU1NFUlQoaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZVRhZykg
fHwgaGFzVGFnTmFtZShTVkdOYW1lczo6c2V0VGFnKSB8fCBoYXNUYWdOYW1lKFNWR05hbWVzOjph
bmltYXRlQ29sb3JUYWcpKTsKQEAgLTExOSw2ICsxMTksOCBAQCBBbmltYXRlZEF0dHJpYnV0ZVR5
cGUgU1ZHQW5pbWF0ZUVsZW1lbnQ6CiAgICAgY2FzZSBBbmltYXRlZFByZXNlcnZlQXNwZWN0UmF0
aW86CiAgICAgY2FzZSBBbmltYXRlZFN0cmluZzoKICAgICAgICAgcmV0dXJuIEFuaW1hdGVkU3Ry
aW5nOworICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKKyAgICAgICAgcmV0dXJuIEFuaW1hdGVkQ29s
b3I7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICAgICAgcmV0dXJuIEFuaW1hdGVkTGVu
Z3RoOwogICAgIGNhc2UgQW5pbWF0ZWRJbnRlZ2VyOgpAQCAtMTMwLDggKzEzMiw2IEBAIEFuaW1h
dGVkQXR0cmlidXRlVHlwZSBTVkdBbmltYXRlRWxlbWVudDoKICAgICAgICAgcmV0dXJuIEFuaW1h
dGVkUG9pbnRzOwogICAgIGNhc2UgQW5pbWF0ZWRSZWN0OgogICAgICAgICByZXR1cm4gQW5pbWF0
ZWRSZWN0OwotICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKLSAgICAgICAgcmV0dXJuIEFuaW1hdGVk
Q29sb3I7CiAgICAgY2FzZSBBbmltYXRlZFRyYW5zZm9ybUxpc3Q6CiAgICAgY2FzZSBBbmltYXRl
ZFVua25vd246CiAgICAgICAgIC8vIEFuaW1hdGlvbnMgb2YgdHJhbnNmb3JtIGxpc3RzIGFyZSBu
b3QgYWxsb3dlZCBmb3IgPGFuaW1hdGU+IG9yIDxzZXQ+CkBAIC0xNDcsNyArMTQ3LDYgQEAgdm9p
ZCBTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRlQW5pbWF0ZQogewogICAgIEFTU0VSVChwZXJj
ZW50YWdlID49IDAgJiYgcGVyY2VudGFnZSA8PSAxKTsKICAgICBBU1NFUlQocmVzdWx0RWxlbWVu
dCk7Ci0gICAgYm9vbCBpc0luRmlyc3RIYWxmT2ZBbmltYXRpb24gPSBwZXJjZW50YWdlIDwgMC41
ZjsKICAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSB0aGlzLT5hbmltYXRpb25Nb2Rl
KCk7CiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQo
KTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCkBAIC0xNjMsMzkgKzE2Miw2IEBAIHZvaWQgU1ZH
QW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGUKICAgICBpZiAocmVzdWx0cy0+bV9hbmlt
YXRlZEF0dHJpYnV0ZVR5cGUgPT0gQW5pbWF0ZWRTdHJpbmcgJiYgbV9hbmltYXRlZEF0dHJpYnV0
ZVR5cGUgIT0gQW5pbWF0ZWRTdHJpbmcpCiAgICAgICAgIHJldHVybjsKICAgICBzd2l0Y2ggKG1f
YW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7Ci0gICAgY2FzZSBBbmltYXRlZENvbG9yOiB7Ci0gICAg
ICAgIGlmIChhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uKQotICAgICAgICAgICAgbV9mcm9t
Q29sb3IgPSByZXN1bHRzLT5tX2FuaW1hdGVkQ29sb3I7Ci0KLSAgICAgICAgLy8gUmVwbGFjZSAn
Y3VycmVudENvbG9yJyAvICdpbmhlcml0JyBieSB0aGVpciBjb21wdXRlZCBwcm9wZXJ0eSB2YWx1
ZXMuCi0gICAgICAgIGlmIChtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZSA9PSBDdXJyZW50Q29sb3JW
YWx1ZSkKLSAgICAgICAgICAgIGFkanVzdEZvckN1cnJlbnRDb2xvcih0YXJnZXRFbGVtZW50LCBt
X2Zyb21Db2xvcik7Ci0gICAgICAgIGVsc2UgaWYgKG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlID09
IEluaGVyaXRWYWx1ZSkgewotICAgICAgICAgICAgU3RyaW5nIGZyb21Db2xvclN0cmluZzsKLSAg
ICAgICAgICAgIGFkanVzdEZvckluaGVyaXRhbmNlKHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5h
bWUoKSwgZnJvbUNvbG9yU3RyaW5nKTsKLSAgICAgICAgICAgIG1fZnJvbUNvbG9yID0gU1ZHQ29s
b3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKGZyb21Db2xvclN0cmluZyk7Ci0gICAgICAgIH0K
LSAgICAgICAgaWYgKG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZSA9PSBDdXJyZW50Q29sb3JWYWx1ZSkK
LSAgICAgICAgICAgIGFkanVzdEZvckN1cnJlbnRDb2xvcih0YXJnZXRFbGVtZW50LCBtX3RvQ29s
b3IpOwotICAgICAgICBlbHNlIGlmIChtX3RvUHJvcGVydHlWYWx1ZVR5cGUgPT0gSW5oZXJpdFZh
bHVlKSB7Ci0gICAgICAgICAgICBTdHJpbmcgdG9Db2xvclN0cmluZzsKLSAgICAgICAgICAgIGFk
anVzdEZvckluaGVyaXRhbmNlKHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwgdG9Db2xv
clN0cmluZyk7Ci0gICAgICAgICAgICBtX3RvQ29sb3IgPSBTVkdDb2xvcjo6Y29sb3JGcm9tUkdC
Q29sb3JTdHJpbmcodG9Db2xvclN0cmluZyk7Ci0gICAgICAgIH0KLQotICAgICAgICBDb2xvciBj
b2xvcjsKLSAgICAgICAgaWYgKGNhbGNNb2RlKCkgPT0gQ2FsY01vZGVEaXNjcmV0ZSkKLSAgICAg
ICAgICAgIGNvbG9yID0gaXNJbkZpcnN0SGFsZk9mQW5pbWF0aW9uID8gbV9mcm9tQ29sb3IgOiBt
X3RvQ29sb3I7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbG9yID0gQ29sb3JEaXN0YW5j
ZShtX2Zyb21Db2xvciwgbV90b0NvbG9yKS5zY2FsZWREaXN0YW5jZShwZXJjZW50YWdlKS5hZGRU
b0NvbG9yQW5kQ2xhbXAobV9mcm9tQ29sb3IpOwotCi0gICAgICAgIC8vIEZJWE1FOiBBY2N1bXVs
YXRlIGNvbG9ycy4KLSAgICAgICAgaWYgKGlzQWRkaXRpdmUoKSAmJiBhbmltYXRpb25Nb2RlICE9
IFRvQW5pbWF0aW9uKQotICAgICAgICAgICAgcmVzdWx0cy0+bV9hbmltYXRlZENvbG9yID0gQ29s
b3JEaXN0YW5jZTo6YWRkQ29sb3JzQW5kQ2xhbXAocmVzdWx0cy0+bV9hbmltYXRlZENvbG9yLCBj
b2xvcik7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlc3VsdHMtPm1fYW5pbWF0ZWRDb2xv
ciA9IGNvbG9yOwotICAgICAgICByZXR1cm47Ci0gICAgfQogICAgIGNhc2UgQW5pbWF0ZWRQYXRo
OiB7CiAgICAgICAgIGlmIChhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uKSB7CiAgICAgICAg
ICAgICBBU1NFUlQocmVzdWx0cy0+bV9hbmltYXRlZFBhdGhQb2ludGVyKTsKQEAgLTIzMCw2ICsx
OTYsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlCiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgorICAgIGNhc2UgQW5pbWF0
ZWRDb2xvcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0ZWROdW1i
ZXI6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKQEAgLTIzOCwxNCArMjA1LDE0IEBAIHZvaWQg
U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFuaW1hdGUKICAgICAgICAgQVNTRVJUKHJlc3Vs
dHMtPm1fYW5pbWF0ZWRUeXBlKTsKICAgICAgICAgLy8gVGFyZ2V0IGVsZW1lbnQgbWlnaHQgaGF2
ZSBjaGFuZ2VkLgogICAgICAgICBtX2FuaW1hdG9yLT5zZXRDb250ZXh0RWxlbWVudCh0YXJnZXRF
bGVtZW50KTsKLSAgICAgICAgbV9hbmltYXRvci0+Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSh0aGlz
LCBwZXJjZW50YWdlLCByZXBlYXQsIG1fZnJvbVR5cGUsIG1fdG9UeXBlLCByZXN1bHRzLT5tX2Fu
aW1hdGVkVHlwZSwgbV9mcm9tUHJvcGVydHlWYWx1ZVR5cGUgPT0gSW5oZXJpdFZhbHVlLCBtX3Rv
UHJvcGVydHlWYWx1ZVR5cGUgPT0gSW5oZXJpdFZhbHVlKTsKKyAgICAgICAgbV9hbmltYXRvci0+
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShwZXJjZW50YWdlLCByZXBlYXQsIG1fZnJvbVR5cGUsIG1f
dG9UeXBlLCByZXN1bHRzLT5tX2FuaW1hdGVkVHlwZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgZGVmYXVsdDoKICAgICAgICAgYnJlYWs7CiAgICAgfQogICAgIEFTU0VSVChhbmltYXRp
b25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiB8fCBhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9u
IHx8IGFuaW1hdGlvbk1vZGUgPT0gVmFsdWVzQW5pbWF0aW9uKTsKLSAgICBpZiAoKGFuaW1hdGlv
bk1vZGUgPT0gRnJvbVRvQW5pbWF0aW9uICYmIHBlcmNlbnRhZ2UgPiAwLjVmKSB8fCBhbmltYXRp
b25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkKKyAgICBpZiAoKGFuaW1h
dGlvbk1vZGUgPT0gRnJvbVRvQW5pbWF0aW9uICYmIHBlcmNlbnRhZ2UgPiAwLjUpIHx8IGFuaW1h
dGlvbk1vZGUgPT0gVG9BbmltYXRpb24gfHwgcGVyY2VudGFnZSA9PSAxKQogICAgICAgICByZXN1
bHRzLT5tX2FuaW1hdGVkU3RyaW5nID0gbV90b1N0cmluZzsKICAgICBlbHNlCiAgICAgICAgIHJl
c3VsdHMtPm1fYW5pbWF0ZWRTdHJpbmcgPSBtX2Zyb21TdHJpbmc7CkBAIC0yNjksMzQgKzIzNiwz
NCBAQCBzdGF0aWMgYm9vbCBhdHRyaWJ1dGVWYWx1ZUlzQ3VycmVudENvbG9yCiAgICAgcmV0dXJu
IHZhbHVlID09IGN1cnJlbnRDb2xvcjsKIH0KIAordm9pZCBTVkdBbmltYXRlRWxlbWVudDo6ZGV0
ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGNvbnN0IFN0cmluZyYgZnJvbSwgY29uc3QgU3RyaW5n
JiB0bykKK3sKKyAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxl
bWVudCgpOworICAgIEFTU0VSVCh0YXJnZXRFbGVtZW50KTsKKworICAgIGlmIChpbmhlcml0c0Zy
b21Qcm9wZXJ0eSh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKCksIGZyb20pKQorICAgICAg
ICBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZSA9IEluaGVyaXRWYWx1ZTsKKyAgICBpZiAoaW5oZXJp
dHNGcm9tUHJvcGVydHkodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSgpLCB0bykpCisgICAg
ICAgIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZSA9IEluaGVyaXRWYWx1ZTsKKworICAgIGlmIChtX2Fu
aW1hdGVkQXR0cmlidXRlVHlwZSAhPSBBbmltYXRlZENvbG9yKQorICAgICAgICByZXR1cm47Cisg
ICAgCisgICAgaWYgKGF0dHJpYnV0ZVZhbHVlSXNDdXJyZW50Q29sb3IoZnJvbSkpCisgICAgICAg
IG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlID0gQ3VycmVudENvbG9yVmFsdWU7CisgICAgaWYgKGF0
dHJpYnV0ZVZhbHVlSXNDdXJyZW50Q29sb3IodG8pKQorICAgICAgICBtX3RvUHJvcGVydHlWYWx1
ZVR5cGUgPSBDdXJyZW50Q29sb3JWYWx1ZTsKK30KKwogYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6
Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3Qg
U3RyaW5nJiB0b1N0cmluZykKIHsKICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhp
cy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwotICAgIG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlID0gaW5oZXJpdHNGcm9tUHJv
cGVydHkodGFyZ2V0RWxlbWVudCwgYXR0cmlidXRlTmFtZSgpLCBmcm9tU3RyaW5nKSA/IEluaGVy
aXRWYWx1ZSA6IFJlZ3VsYXJQcm9wZXJ0eVZhbHVlOwotICAgIG1fdG9Qcm9wZXJ0eVZhbHVlVHlw
ZSA9IGluaGVyaXRzRnJvbVByb3BlcnR5KHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwg
dG9TdHJpbmcpID8gSW5oZXJpdFZhbHVlIDogUmVndWxhclByb3BlcnR5VmFsdWU7CiAKICAgICAv
LyBGSVhNRTogTmVlZHMgbW9yZSBzb2xpZCB3YXkgZGV0ZXJtaW5lIHRhcmdldCBhdHRyaWJ1dGUg
dHlwZS4KICAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVybWluZUFuaW1hdGVkQXR0
cmlidXRlVHlwZSh0YXJnZXRFbGVtZW50KTsKICAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1
dGVUeXBlKSB7Ci0gICAgY2FzZSBBbmltYXRlZENvbG9yOiB7Ci0gICAgICAgIGJvb2wgZnJvbUlz
Q3VycmVudENvbG9yID0gYXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcihmcm9tU3RyaW5nKTsK
LSAgICAgICAgYm9vbCB0b0lzQ3VycmVudENvbG9yID0gYXR0cmlidXRlVmFsdWVJc0N1cnJlbnRD
b2xvcih0b1N0cmluZyk7Ci0gICAgICAgIGlmIChmcm9tSXNDdXJyZW50Q29sb3IpCi0gICAgICAg
ICAgICBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZSA9IEN1cnJlbnRDb2xvclZhbHVlOwotICAgICAg
ICBlbHNlCi0gICAgICAgICAgICBtX2Zyb21Db2xvciA9IFNWR0NvbG9yOjpjb2xvckZyb21SR0JD
b2xvclN0cmluZyhmcm9tU3RyaW5nKTsKLSAgICAgICAgaWYgKHRvSXNDdXJyZW50Q29sb3IpCi0g
ICAgICAgICAgICBtX3RvUHJvcGVydHlWYWx1ZVR5cGUgPSBDdXJyZW50Q29sb3JWYWx1ZTsKLSAg
ICAgICAgZWxzZQotICAgICAgICAgICAgbV90b0NvbG9yID0gU1ZHQ29sb3I6OmNvbG9yRnJvbVJH
QkNvbG9yU3RyaW5nKHRvU3RyaW5nKTsKLSAgICAgICAgYm9vbCBmcm9tSXNWYWxpZCA9IG1fZnJv
bUNvbG9yLmlzVmFsaWQoKSB8fCBmcm9tSXNDdXJyZW50Q29sb3IgfHwgbV9mcm9tUHJvcGVydHlW
YWx1ZVR5cGUgPT0gSW5oZXJpdFZhbHVlOwotICAgICAgICBib29sIHRvSXNWYWxpZCA9IG1fdG9D
b2xvci5pc1ZhbGlkKCkgfHwgdG9Jc0N1cnJlbnRDb2xvciB8fCBtX3RvUHJvcGVydHlWYWx1ZVR5
cGUgPT0gSW5oZXJpdFZhbHVlOwotICAgICAgICBpZiAoKGZyb21Jc1ZhbGlkICYmIHRvSXNWYWxp
ZCkgfHwgKHRvSXNWYWxpZCAmJiBhbmltYXRpb25Nb2RlKCkgPT0gVG9BbmltYXRpb24pKQotICAg
ICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KICAgICBjYXNlIEFu
aW1hdGVkUGF0aDogewogICAgICAgICBTVkdQYXRoUGFyc2VyRmFjdG9yeSogZmFjdG9yeSA9IFNW
R1BhdGhQYXJzZXJGYWN0b3J5OjpzZWxmKCk7CiAgICAgICAgIGlmIChmYWN0b3J5LT5idWlsZFNW
R1BhdGhCeXRlU3RyZWFtRnJvbVN0cmluZyh0b1N0cmluZywgbV90b1BhdGgsIFVuYWx0ZXJlZFBh
cnNpbmcpKSB7CkBAIC0zMDksNiArMjc2LDcgQEAgYm9vbCBTVkdBbmltYXRlRWxlbWVudDo6Y2Fs
Y3VsYXRlRnJvbUFuZAogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBBbmltYXRlZEFu
Z2xlOgorICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgog
ICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKQEAgLTMy
OSwzMCArMjk3LDEyIEBAIGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmQK
ICAgICBTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwog
ICAgIGlmICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIG1fZnJv
bVByb3BlcnR5VmFsdWVUeXBlID0gaW5oZXJpdHNGcm9tUHJvcGVydHkodGFyZ2V0RWxlbWVudCwg
YXR0cmlidXRlTmFtZSgpLCBmcm9tU3RyaW5nKSA/IEluaGVyaXRWYWx1ZSA6IFJlZ3VsYXJQcm9w
ZXJ0eVZhbHVlOwotICAgIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZSA9IGluaGVyaXRzRnJvbVByb3Bl
cnR5KHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwgYnlTdHJpbmcpID8gSW5oZXJpdFZh
bHVlIDogUmVndWxhclByb3BlcnR5VmFsdWU7CiAKICAgICBBU1NFUlQoIWhhc1RhZ05hbWUoU1ZH
TmFtZXM6OnNldFRhZykpOwogICAgIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gZGV0ZXJtaW5l
QW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpOwogICAgIHN3aXRjaCAobV9hbmlt
YXRlZEF0dHJpYnV0ZVR5cGUpIHsKLSAgICBjYXNlIEFuaW1hdGVkQ29sb3I6IHsKLSAgICAgICAg
Ym9vbCBmcm9tSXNDdXJyZW50Q29sb3IgPSBhdHRyaWJ1dGVWYWx1ZUlzQ3VycmVudENvbG9yKGZy
b21TdHJpbmcpOwotICAgICAgICBib29sIGJ5SXNDdXJyZW50Q29sb3IgPSBhdHRyaWJ1dGVWYWx1
ZUlzQ3VycmVudENvbG9yKGJ5U3RyaW5nKTsKLSAgICAgICAgaWYgKGZyb21Jc0N1cnJlbnRDb2xv
cikKLSAgICAgICAgICAgIG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlID0gQ3VycmVudENvbG9yVmFs
dWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fZnJvbUNvbG9yID0gU1ZHQ29sb3I6OmNv
bG9yRnJvbVJHQkNvbG9yU3RyaW5nKGZyb21TdHJpbmcpOwotICAgICAgICBpZiAoYnlJc0N1cnJl
bnRDb2xvcikKLSAgICAgICAgICAgIG1fdG9Qcm9wZXJ0eVZhbHVlVHlwZSA9IEN1cnJlbnRDb2xv
clZhbHVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBtX3RvQ29sb3IgPSBTVkdDb2xvcjo6
Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcoYnlTdHJpbmcpOwotICAgICAgICAKLSAgICAgICAgaWYg
KCghbV9mcm9tQ29sb3IuaXNWYWxpZCgpICYmICFmcm9tSXNDdXJyZW50Q29sb3IpCi0gICAgICAg
ICAgICB8fCAoIW1fdG9Db2xvci5pc1ZhbGlkKCkgJiYgIWJ5SXNDdXJyZW50Q29sb3IpKQotICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9CiAgICAg
Y2FzZSBBbmltYXRlZEFuZ2xlOgorICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICBjYXNlIEFu
aW1hdGVkTGVuZ3RoOgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAgY2FzZSBBbmltYXRl
ZFBvaW50czoKQEAgLTM3MCwxNiArMzIwLDggQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6cmVz
ZXRUb0Jhc2VWYWx1ZQogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1lbnQgPSB0aGlzLT50YXJn
ZXRFbGVtZW50KCk7CiAgICAgQVNTRVJUKHRhcmdldEVsZW1lbnQpOwogICAgIG1fYW5pbWF0ZWRT
dHJpbmcgPSBiYXNlU3RyaW5nOwotICAgIEFuaW1hdGVkQXR0cmlidXRlVHlwZSBsYXN0VHlwZSA9
IG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlOwogICAgIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0g
ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpOwogICAgIHN3aXRj
aCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKLSAgICBjYXNlIEFuaW1hdGVkQ29sb3I6Ci0g
ICAgICAgIG1fYW5pbWF0ZWRDb2xvciA9IGJhc2VTdHJpbmcuaXNFbXB0eSgpID8gQ29sb3IoKSA6
IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyhiYXNlU3RyaW5nKTsKLSAgICAgICAg
aWYgKGlzQ29udHJpYnV0aW5nKGVsYXBzZWQoKSkpIHsKLSAgICAgICAgICAgIG1fYW5pbWF0ZWRB
dHRyaWJ1dGVUeXBlID0gbGFzdFR5cGU7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0K
LSAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZFBhdGg6IHsKICAgICAgICAgbV9hbmlt
YXRlZFBhdGguY2xlYXIoKTsKICAgICAgICAgU1ZHUGF0aFBhcnNlckZhY3RvcnkqIGZhY3Rvcnkg
PSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwpAQCAtMzg4LDYgKzMzMCw3IEBAIHZvaWQg
U1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUKICAgICAgICAgcmV0dXJuOwogICAg
IH0KICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CisgICAgY2FzZSBBbmltYXRlZENvbG9yOgogICAg
IGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKICAgICBjYXNl
IEFuaW1hdGVkUG9pbnRzOgpAQCAtNDA4LDkgKzM1MSw2IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1l
bnQ6OmFwcGx5UmVzdWx0c1RvVGEKIHsKICAgICBTdHJpbmcgdmFsdWVUb0FwcGx5OwogICAgIHN3
aXRjaCAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKLSAgICBjYXNlIEFuaW1hdGVkQ29sb3I6
Ci0gICAgICAgIHZhbHVlVG9BcHBseSA9IG1fYW5pbWF0ZWRDb2xvci5zZXJpYWxpemVkKCk7Ci0g
ICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0ZWRQYXRoOiB7CiAgICAgICAgIGlmICghbV9h
bmltYXRlZFBhdGhQb2ludGVyIHx8IG1fYW5pbWF0ZWRQYXRoUG9pbnRlci0+aXNFbXB0eSgpKQog
ICAgICAgICAgICAgdmFsdWVUb0FwcGx5ID0gbV9hbmltYXRlZFN0cmluZzsKQEAgLTQyNSw2ICsz
NjUsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhCiAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CisgICAgY2FzZSBBbmltYXRl
ZENvbG9yOgogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAgICAgY2FzZSBBbmltYXRlZE51bWJl
cjoKICAgICBjYXNlIEFuaW1hdGVkUG9pbnRzOgpAQCAtNDQ1LDIxICszODYsMTMgQEAgZmxvYXQg
U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZURpc3RhbgogICAgICAgICByZXR1cm4gLTE7CiAg
ICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5
cGUodGFyZ2V0RWxlbWVudCk7CiAgICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkg
ewotICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjogewotICAgICAgICBDb2xvciBmcm9tID0gU1ZHQ29s
b3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKGZyb21TdHJpbmcpOwotICAgICAgICBpZiAoIWZy
b20uaXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBDb2xvciB0byA9
IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyh0b1N0cmluZyk7Ci0gICAgICAgIGlm
ICghdG8uaXNWYWxpZCgpKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICByZXR1cm4g
Q29sb3JEaXN0YW5jZShmcm9tLCB0bykuZGlzdGFuY2UoKTsKLSAgICB9CiAgICAgY2FzZSBBbmlt
YXRlZEFuZ2xlOgorICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICBjYXNlIEFuaW1hdGVkTGVu
Z3RoOgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoK
ICAgICBjYXNlIEFuaW1hdGVkUmVjdDoKLSAgICAgICAgcmV0dXJuIGVuc3VyZUFuaW1hdG9yKCkt
PmNhbGN1bGF0ZURpc3RhbmNlKHRoaXMsIGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKKyAgICAgICAg
cmV0dXJuIGVuc3VyZUFuaW1hdG9yKCktPmNhbGN1bGF0ZURpc3RhbmNlKGZyb21TdHJpbmcsIHRv
U3RyaW5nKTsKICAgICBkZWZhdWx0OgogICAgICAgICBicmVhazsKICAgICB9CkBAIC00NjksNyAr
NDAyLDcgQEAgZmxvYXQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZURpc3RhbgogU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IqIFNWR0FuaW1hdGVFbGVtZW50OjplbnN1cmVBbmltYXRvcigpCiB7
CiAgICAgaWYgKCFtX2FuaW1hdG9yKQotICAgICAgICBtX2FuaW1hdG9yID0gU1ZHQW5pbWF0b3JG
YWN0b3J5OjpjcmVhdGUodGFyZ2V0RWxlbWVudCgpLCBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSwg
YXR0cmlidXRlTmFtZSgpKTsKKyAgICAgICAgbV9hbmltYXRvciA9IFNWR0FuaW1hdG9yRmFjdG9y
eTo6Y3JlYXRlKHRoaXMsIHRhcmdldEVsZW1lbnQoKSwgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUp
OwogICAgIHJldHVybiBtX2FuaW1hdG9yLmdldCgpOwogfQogCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkocmV2aXNpb24gODk1MzYpCisrKyBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMiw2ICsyLDcgQEAK
ICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1h
bm5Aa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSBSb2IgQnVpcyA8YnVpc0Br
ZGUub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjQsNyArMjUsNiBA
QAogCiAjaWYgRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCiAKLSNpbmNsdWRl
ICJDb2xvci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZS5oIgogI2luY2x1ZGUgIlNWR0Fu
aW1hdGVkVHlwZUFuaW1hdG9yLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0aW9uRWxlbWVudC5oIgpA
QCAtMzIsNiArMzIsMTQgQEAKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKKyAgICAKKy8vIElmIHdlIGhhdmUgJ2N1cnJlbnRDb2xvcicgb3IgJ2luaGVyaXQn
IGFzIGFuaW1hdGlvbiB2YWx1ZSwgd2UgbmVlZCB0byBncmFiIHRoZSB2YWx1ZSBkdXJpbmcgdGhl
IGFuaW1hdGlvbgorLy8gc2luY2UgdGhlIHZhbHVlIGNhbiBiZSBhbmltYXRlZCBpdHNlbGYuCitl
bnVtIEFuaW1hdGVkUHJvcGVydHlWYWx1ZVR5cGUgeworICAgIFJlZ3VsYXJQcm9wZXJ0eVZhbHVl
LAorICAgIEN1cnJlbnRDb2xvclZhbHVlLAorICAgIEluaGVyaXRWYWx1ZQorfTsKIAogY2xhc3Mg
U1ZHQW5pbWF0ZUVsZW1lbnQgOiBwdWJsaWMgU1ZHQW5pbWF0aW9uRWxlbWVudCB7CiBwdWJsaWM6
CkBAIC00Myw2ICs1MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGp1c3RGb3JJbmhlcml0YW5j
ZShTVkdFbGVtZW50KiB0YXJnZXRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiwgU3RyaW5n
JiB2YWx1ZSk7CiAgICAgCiAgICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGRldGVybWluZUFuaW1h
dGVkQXR0cmlidXRlVHlwZShTVkdFbGVtZW50KikgY29uc3Q7CisgICAgdm9pZCBkZXRlcm1pbmVQ
cm9wZXJ0eVZhbHVlVHlwZXMoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5nJik7CisgICAgCisg
ICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBmcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSB7IHJl
dHVybiBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZTsgfQorICAgIEFuaW1hdGVkUHJvcGVydHlWYWx1
ZVR5cGUgdG9Qcm9wZXJ0eVZhbHVlVHlwZSgpIHsgcmV0dXJuIG1fdG9Qcm9wZXJ0eVZhbHVlVHlw
ZTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgU1ZHQW5pbWF0ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Kik7CkBAIC01NiwyMyArNjgsMTIgQEAgcHJvdGVjdGVkOgogCiBwcml2
YXRlOgogICAgIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKiBlbnN1cmVBbmltYXRvcigpOwotCi0g
ICAgLy8gSWYgd2UgaGF2ZSAnY3VycmVudENvbG9yJyBvciAnaW5oZXJpdCcgYXMgYW5pbWF0aW9u
IHZhbHVlLCB3ZSBuZWVkIHRvIGdyYWIgdGhlIHZhbHVlIGR1cmluZyB0aGUgYW5pbWF0aW9uCi0g
ICAgLy8gc2luY2UgdGhlIHZhbHVlIGNhbiBiZSBhbmltYXRlZCBpdHNlbGYuCi0gICAgZW51bSBB
bmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIHsKLSAgICAgICAgUmVndWxhclByb3BlcnR5VmFsdWUs
Ci0gICAgICAgIEN1cnJlbnRDb2xvclZhbHVlLAotICAgICAgICBJbmhlcml0VmFsdWUKLSAgICB9
OwogICAgIAogICAgIHZpcnR1YWwgYm9vbCBoYXNWYWxpZEF0dHJpYnV0ZVR5cGUoKSBjb25zdDsK
ICAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgbV9hbmltYXRlZEF0dHJpYnV0ZVR5cGU7CiAKICAg
ICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlOwogICAg
IEFuaW1hdGVkUHJvcGVydHlWYWx1ZVR5cGUgbV90b1Byb3BlcnR5VmFsdWVUeXBlOwotICAgIENv
bG9yIG1fZnJvbUNvbG9yOwotICAgIENvbG9yIG1fdG9Db2xvcjsKLSAgICBDb2xvciBtX2FuaW1h
dGVkQ29sb3I7CiAgICAgU3RyaW5nIG1fZnJvbVN0cmluZzsKICAgICBTdHJpbmcgbV90b1N0cmlu
ZzsKICAgICBTdHJpbmcgbV9hbmltYXRlZFN0cmluZzsKQEAgLTkyLDUgKzkzLDMgQEAgcHJpdmF0
ZToKIAogI2VuZGlmIC8vIEVOQUJMRShTVkcpCiAjZW5kaWYgLy8gU1ZHQW5pbWF0ZUVsZW1lbnRf
aAotCi0vLyB2aW06dHM9NDpub2V0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRBbmdsZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
QW5nbGUuY3BwCShyZXZpc2lvbiA4OTUzNSkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZEFuZ2xlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjQsOCArMjQsOCBAQAogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKLVNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6U1ZHQW5pbWF0ZWRBbmds
ZUFuaW1hdG9yKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1l
JikKLSAgICA6IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKEFuaW1hdGVkQW5nbGUsIGNvbnRleHRF
bGVtZW50KQorU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpTVkdBbmltYXRlZEFuZ2xlQW5pbWF0
b3IoU1ZHU01JTEVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRF
bGVtZW50KQorICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRBbmdsZSwgYW5p
bWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpCiB7CiB9CiAKQEAgLTQ5LDYgKzQ5LDExIEBA
IFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZEEKIAogdm9pZCBTVkdBbmlt
YXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJp
bmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CisgICAgQVNTRVJUKG1f
Y29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIFNW
R0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0
ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRl
dGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7CisKICAgICBm
cm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKICAgICB0byA9IGNvbnN0cnVj
dEZyb21TdHJpbmcodG9TdHJpbmcpOwogfQpAQCAtNTYsNiArNjEsOSBAQCB2b2lkIFNWR0FuaW1h
dGVkQW5nbGVBbmltYXRvcjo6Y2FsY3VsYXRlCiB2b2lkIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRv
cjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiBieVN0cmluZykKIHsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7
CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5p
bWF0aW9uRWxlbWVudCk7CisgICAgYW5pbWF0aW9uRWxlbWVudC0+ZGV0ZXJtaW5lUHJvcGVydHlW
YWx1ZVR5cGVzKGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsKICAgICAKICAgICBmcm9tID0gY29uc3Ry
dWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKICAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmco
YnlTdHJpbmcpOwpAQCAtNjUsMTMgKzczLDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yOjpjYWxjdWxhdGUKICAgICB0b0FuZ2xlLnNldFZhbHVlKHRvQW5nbGUudmFsdWUoKSArIGZy
b21BbmdsZS52YWx1ZSgpKTsKIH0KIAotdm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoU1ZHU01JTEVsZW1lbnQqIHNtaWxFbGVtZW50LCBmbG9hdCBw
ZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBm
cm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+
JiBhbmltYXRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJvb2wgZnJvbVByb3BlcnR5SW5oZXJpdHMsIGJvb2wgdG9Qcm9wZXJ0eUluaGVy
aXRzKQordm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFs
dWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCiB7Ci0gICAgQVNTRVJUKHNtaWxFbGVtZW50KTsKKyAgICBB
U1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7
Ci0gICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdBbmltYXRlRWxlbWVudCo+KHNtaWxFbGVtZW50KTsKKyAgICBTVkdBbmltYXRlRWxlbWVudCog
YW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmlt
YXRpb25FbGVtZW50KTsKICAgICAKICAgICBBbmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSBh
bmltYXRpb25FbGVtZW50LT5hbmltYXRpb25Nb2RlKCk7CiAgICAgLy8gVG8gYW5pbWF0aW9uIHVz
ZXMgY29udHJpYnV0aW9ucyBmcm9tIHRoZSBsb3dlciBwcmlvcml0eSBhbmltYXRpb25zIGFzIHRo
ZSBiYXNlIHZhbHVlLgpAQCAtODQsMTIgKzkxLDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFu
aW1hdG9yOjpjYWxjdWxhdGUKICAgICBmbG9hdCBmcm9tQW5nbGUgPSBmcm9tLT5hbmdsZSgpLnZh
bHVlKCk7CiAgICAgZmxvYXQgdG9BbmdsZSA9IHRvLT5hbmdsZSgpLnZhbHVlKCk7CiAgICAgCi0g
ICAgaWYgKGZyb21Qcm9wZXJ0eUluaGVyaXRzKSB7CisgICAgaWYgKGFuaW1hdGlvbkVsZW1lbnQt
PmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpID09IEluaGVyaXRWYWx1ZSkgewogICAgICAgICBTdHJp
bmcgZnJvbUFuZ2xlU3RyaW5nOwogICAgICAgICBhbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJ
bmhlcml0YW5jZShtX2NvbnRleHRFbGVtZW50LCBhbmltYXRpb25FbGVtZW50LT5hdHRyaWJ1dGVO
YW1lKCksIGZyb21BbmdsZVN0cmluZyk7CiAgICAgICAgIGZyb21BbmdsZSA9IHNoYXJlZFNWR0Fu
Z2xlKGZyb21BbmdsZVN0cmluZykudmFsdWUoKTsKICAgICB9Ci0gICAgaWYgKHRvUHJvcGVydHlJ
bmhlcml0cykgeworICAgIGlmIChhbmltYXRpb25FbGVtZW50LT50b1Byb3BlcnR5VmFsdWVUeXBl
KCkgPT0gSW5oZXJpdFZhbHVlKSB7CiAgICAgICAgIFN0cmluZyB0b0FuZ2xlU3RyaW5nOwogICAg
ICAgICBhbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJbmhlcml0YW5jZShtX2NvbnRleHRFbGVt
ZW50LCBhbmltYXRpb25FbGVtZW50LT5hdHRyaWJ1dGVOYW1lKCksIHRvQW5nbGVTdHJpbmcpOwog
ICAgICAgICB0b0FuZ2xlID0gc2hhcmVkU1ZHQW5nbGUodG9BbmdsZVN0cmluZykudmFsdWUoKTsg
CkBAIC0xMTIsNyArMTE5LDcgQEAgdm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1
bGF0ZQogICAgICAgICBhbmltYXRlZFNWR0FuZ2xlLnNldFZhbHVlKG51bWJlcik7CiB9CiAKLWZs
b2F0IFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoU1ZHU01JTEVs
ZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
CitmbG9hdCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsKICAgICBFeGNl
cHRpb25Db2RlIGVjID0gMDsKICAgICBTVkdBbmdsZSBmcm9tID0gU1ZHQW5nbGUoKTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuaAkocmV2aXNpb24gODk1MzUpCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC00
MCwxNyArNDAsMTYgQEAgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9NQQog
Y2xhc3MgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yIHsKICAgICAKIHB1YmxpYzoKLSAgICBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IoU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICBTVkdB
bmltYXRlZEFuZ2xlQW5pbWF0b3IoU1ZHU01JTEVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNW
R0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KTsKICAgICB2aXJ0dWFsIH5TVkdBbmltYXRlZEFuZ2xl
QW5pbWF0b3IoKSB7IH0KICAgICAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIHZpcnR1
YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmlu
ZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lk
IGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZh
bHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3Vs
YXRlQW5pbWF0ZWRWYWx1ZShTVkdTTUlMRWxlbWVudCosIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2ln
bmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyb21Qcm9wZXJ0eUlu
aGVyaXRzLCBib29sIHRvUHJvcGVydHlJbmhlcml0cyk7Ci0gICAgdmlydHVhbCBmbG9hdCBjYWxj
dWxhdGVEaXN0YW5jZShTVkdTTUlMRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0
ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmlu
Zyk7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkQ29sb3IuY3BwCShyZXZpc2lvbiAwKQorKysgU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkQ29sb3IuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDEyNSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgUmVzZWFyY2ggSW4gTW90aW9uIExpbWl0ZWQgMjAxMS4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1z
IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNo
ZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIg
b2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisg
KgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2ls
bCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0
aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQ
dWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSBy
ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UK
KyAqIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJ
ZiBub3QsIHdyaXRlIHRvCisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1
MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAx
LCBVU0EuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19BTklNQVRJT04pCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRDb2xvci5oIgorCisj
aW5jbHVkZSAiQ29sb3JEaXN0YW5jZS5oIgorI2luY2x1ZGUgIlNWR0NvbG9yLmgiCisKK25hbWVz
cGFjZSBXZWJDb3JlIHsKKworU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpTVkdBbmltYXRlZENv
bG9yQW5pbWF0b3IoU1ZHU01JTEVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50KQorICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRD
b2xvciwgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpCit7Cit9CisKK1Bhc3NPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNvbnN0cnVjdEZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUNvbG9yKG5ldyBDb2xv
cik7CisgICAgYW5pbXRlZFR5cGUtPmNvbG9yKCkgPSBzdHJpbmcuaXNFbXB0eSgpID8gQ29sb3Io
KSA6IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyhzdHJpbmcpOworICAgIHJldHVy
biBhbmltdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisKK3ZvaWQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1h
dG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZy
b20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQoreworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50
KTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBTVkdBbmltYXRlRWxlbWVu
dCogYW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9h
bmltYXRpb25FbGVtZW50KTsKKyAgICBhbmltYXRpb25FbGVtZW50LT5kZXRlcm1pbmVQcm9wZXJ0
eVZhbHVlVHlwZXMoZnJvbVN0cmluZywgdG9TdHJpbmcpOworCisgICAgZnJvbSA9IGNvbnN0cnVj
dEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CisgICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRv
U3RyaW5nKTsKK30KKwordm9pZCBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUZy
b21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
YnlTdHJpbmcpCit7CisgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVCht
X2FuaW1hdGlvbkVsZW1lbnQpOworICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQp
OworICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9t
U3RyaW5nLCBieVN0cmluZyk7CisKKyAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9t
U3RyaW5nKTsKKyAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpOworfQorCit2
b2lkIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9h
dCBwZXJjZW50YWdlLCB1bnNpZ25lZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRl
ZCkKK3sKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBBU1NFUlQobV9jb250
ZXh0RWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAg
CisgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5p
bWF0aW9uTW9kZSgpOworICAgIENvbG9yJiBmcm9tQ29sb3IgPSBmcm9tLT5jb2xvcigpOworICAg
IENvbG9yJiB0b0NvbG9yID0gdG8tPmNvbG9yKCk7CisgICAgQ29sb3ImIGFuaW1hdGVkQ29sb3Ig
PSBhbmltYXRlZC0+Y29sb3IoKTsKKyAgICAvLyBUbyBhbmltYXRpb24gdXNlcyBjb250cmlidXRp
b25zIGZyb20gdGhlIGxvd2VyIHByaW9yaXR5IGFuaW1hdGlvbnMgYXMgdGhlIGJhc2UgdmFsdWUu
CisgICAgaWYgKGFuaW1hdGlvbk1vZGUgPT0gVG9BbmltYXRpb24pCisgICAgICAgIGZyb21Db2xv
ciA9IGFuaW1hdGVkQ29sb3I7CisgICAgCisgICAgLy8gUmVwbGFjZSAnY3VycmVudENvbG9yJyAv
ICdpbmhlcml0JyBieSB0aGVpciBjb21wdXRlZCBwcm9wZXJ0eSB2YWx1ZXMuCisgICAgQW5pbWF0
ZWRQcm9wZXJ0eVZhbHVlVHlwZSBmcm9tUHJvcGVydHlWYWx1ZVR5cGUgPSBhbmltYXRpb25FbGVt
ZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKTsKKyAgICBpZiAoZnJvbVByb3BlcnR5VmFsdWVU
eXBlID09IEN1cnJlbnRDb2xvclZhbHVlKQorICAgICAgICBhbmltYXRpb25FbGVtZW50LT5hZGp1
c3RGb3JDdXJyZW50Q29sb3IobV9jb250ZXh0RWxlbWVudCwgZnJvbUNvbG9yKTsKKyAgICBlbHNl
IGlmIChmcm9tUHJvcGVydHlWYWx1ZVR5cGUgPT0gSW5oZXJpdFZhbHVlKSB7CisgICAgICAgIFN0
cmluZyBmcm9tQ29sb3JTdHJpbmc7CisgICAgICAgIGFuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZv
ckluaGVyaXRhbmNlKG1fY29udGV4dEVsZW1lbnQsIGFuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0
ZU5hbWUoKSwgZnJvbUNvbG9yU3RyaW5nKTsKKyAgICAgICAgZnJvbUNvbG9yID0gU1ZHQ29sb3I6
OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKGZyb21Db2xvclN0cmluZyk7CisgICAgfQorICAgIEFu
aW1hdGVkUHJvcGVydHlWYWx1ZVR5cGUgdG9Qcm9wZXJ0eVZhbHVlVHlwZSA9IGFuaW1hdGlvbkVs
ZW1lbnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUoKTsKKyAgICBpZiAodG9Qcm9wZXJ0eVZhbHVlVHlw
ZSA9PSBDdXJyZW50Q29sb3JWYWx1ZSkKKyAgICAgICAgYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0
Rm9yQ3VycmVudENvbG9yKG1fY29udGV4dEVsZW1lbnQsIHRvQ29sb3IpOworICAgIGVsc2UgaWYg
KHRvUHJvcGVydHlWYWx1ZVR5cGUgPT0gSW5oZXJpdFZhbHVlKSB7CisgICAgICAgIFN0cmluZyB0
b0NvbG9yU3RyaW5nOworICAgICAgICBhbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JJbmhlcml0
YW5jZShtX2NvbnRleHRFbGVtZW50LCBhbmltYXRpb25FbGVtZW50LT5hdHRyaWJ1dGVOYW1lKCks
IHRvQ29sb3JTdHJpbmcpOworICAgICAgICB0b0NvbG9yID0gU1ZHQ29sb3I6OmNvbG9yRnJvbVJH
QkNvbG9yU3RyaW5nKHRvQ29sb3JTdHJpbmcpOworICAgIH0KKyAgICAKKyAgICBDb2xvciBjb2xv
cjsKKyAgICBpZiAoYW5pbWF0aW9uRWxlbWVudC0+Y2FsY01vZGUoKSA9PSBDYWxjTW9kZURpc2Ny
ZXRlKQorICAgICAgICBjb2xvciA9IHBlcmNlbnRhZ2UgPCAwLjUgPyBmcm9tQ29sb3IgOiB0b0Nv
bG9yOworICAgIGVsc2UKKyAgICAgICAgY29sb3IgPSBDb2xvckRpc3RhbmNlKGZyb21Db2xvciwg
dG9Db2xvcikuc2NhbGVkRGlzdGFuY2UocGVyY2VudGFnZSkuYWRkVG9Db2xvckFuZENsYW1wKGZy
b21Db2xvcik7CisgICAgCisgICAgLy8gRklYTUU6IEFjY3VtdWxhdGUgY29sb3JzLgorICAgIGlm
IChhbmltYXRpb25FbGVtZW50LT5pc0FkZGl0aXZlKCkgJiYgYW5pbWF0aW9uTW9kZSAhPSBUb0Fu
aW1hdGlvbikKKyAgICAgICAgYW5pbWF0ZWRDb2xvciA9IENvbG9yRGlzdGFuY2U6OmFkZENvbG9y
c0FuZENsYW1wKGFuaW1hdGVkQ29sb3IsIGNvbG9yKTsKKyAgICBlbHNlCisgICAgICAgIGFuaW1h
dGVkQ29sb3IgPSBjb2xvcjsKKyAgICByZXR1cm47Cit9CisKK2Zsb2F0IFNWR0FuaW1hdGVkQ29s
b3JBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHRvU3RyaW5nKQoreworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsK
KyAgICBDb2xvciBmcm9tID0gU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKGZyb21T
dHJpbmcpOworICAgIGlmICghZnJvbS5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAg
ICBDb2xvciB0byA9IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyh0b1N0cmluZyk7
CisgICAgaWYgKCF0by5pc1ZhbGlkKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4g
Q29sb3JEaXN0YW5jZShmcm9tLCB0bykuZGlzdGFuY2UoKTsKK30KKworfQorCisjZW5kaWYgLy8g
RU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZENvbG9yLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQW5pbWF0ZWRDb2xvci5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDQ2IEBACisvKgorICog
Q29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2Fu
IHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi
eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0
aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisg
KiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJl
IHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp
bXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICog
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZy
YW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVT
QS4KKyAqLworCisjaWZuZGVmIFNWR0FuaW1hdGVkQ29sb3JfaAorI2RlZmluZSBTVkdBbmltYXRl
ZENvbG9yX2gKKworI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQorI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yIHsKKyAgICAKK3B1YmxpYzoKKyAgICBTVkdBbmltYXRlZENvbG9yQW5pbWF0b3IoU1ZHU01J
TEVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CisgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRDb2xvckFu
aW1hdG9yKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAgICAKKyAgICB2aXJ0dWFs
IHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBm
cm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworICAgIHZpcnR1YWwgdm9pZCBj
YWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1
ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0
cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0
ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFsIGZsb2F0IGNh
bGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZyk7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8gRU5BQkxF
KFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCisKKyNlbmRpZgpJbmRleDogU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCShyZXZpc2lvbiA4OTUzNSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI0
LDkgKzI0LDkgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdBbmltYXRlZExlbmd0aEFu
aW1hdG9yOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKQotICAgIDogU1ZHQW5pbWF0
ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRMZW5ndGgsIGNvbnRleHRFbGVtZW50KQotICAgICwgbV9s
ZW5ndGhNb2RlKFNWR0xlbmd0aDo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
KGF0dHJpYnV0ZU5hbWUpKQorU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6U1ZHQW5pbWF0ZWRM
ZW5ndGhBbmltYXRvcihTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQpCisgICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRl
ZExlbmd0aCwgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpCisgICAgLCBtX2xlbmd0
aE1vZGUoU1ZHTGVuZ3RoOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYW5p
bWF0aW9uRWxlbWVudC0+YXR0cmlidXRlTmFtZSgpKSkKIHsKIH0KIApAQCAtNDYsNiArNDYsMTEg
QEAgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVkTAogCiB2b2lkIFNWR0Fu
aW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CisgICAgQVNTRVJU
KG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworICAg
IFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5p
bWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIGFuaW1hdGlvbkVsZW1lbnQt
PmRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCB0b1N0cmluZyk7CisgICAg
CiAgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CiAgICAgdG8gPSBj
b25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKIH0KQEAgLTUzLDYgKzU4LDkgQEAgdm9pZCBT
VkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdAogdm9pZCBTVkdBbmltYXRlZExlbmd0
aEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKQogewogICAgIEFTU0VSVChtX2NvbnRleHRF
bGVtZW50KTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBTVkdBbmltYXRl
RWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50
Kj4obV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBhbmltYXRpb25FbGVtZW50LT5kZXRlcm1pbmVQ
cm9wZXJ0eVZhbHVlVHlwZXMoZnJvbVN0cmluZywgYnlTdHJpbmcpOwogICAgIAogICAgIGZyb20g
PSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOwogICAgIHRvID0gY29uc3RydWN0RnJv
bVN0cmluZyhieVN0cmluZyk7CkBAIC02NCwxMyArNzIsMTIgQEAgdm9pZCBTVkdBbmltYXRlZExl
bmd0aEFuaW1hdG9yOjpjYWxjdWxhdAogICAgIEFTU0VSVCghZWMpOwogfQogCi12b2lkIFNWR0Fu
aW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoU1ZHU01JTEVsZW1l
bnQqIHNtaWxFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRv
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcm9tUHJvcGVydHlJbmhl
cml0cywgYm9vbCB0b1Byb3BlcnR5SW5oZXJpdHMpCit2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5p
bWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkKQogewotICAg
IEFTU0VSVChzbWlsRWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAg
ICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmlt
YXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihzbWlsRWxlbWVu
dCk7CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2Fz
dDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgCiAgICAgQW5p
bWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9k
ZSgpOwogICAgIC8vIFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlvbnMgZnJvbSB0aGUgbG93
ZXIgcHJpb3JpdHkgYW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4KQEAgLTgzLDEyICs5MCwx
MiBAQCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1bGF0CiAgICAgZmxvYXQg
ZnJvbUxlbmd0aCA9IGZyb20tPmxlbmd0aCgpLnZhbHVlKG1fY29udGV4dEVsZW1lbnQpOwogICAg
IGZsb2F0IHRvTGVuZ3RoID0gdG8tPmxlbmd0aCgpLnZhbHVlKG1fY29udGV4dEVsZW1lbnQpOwog
ICAgIAotICAgIGlmIChmcm9tUHJvcGVydHlJbmhlcml0cykgeworICAgIGlmIChhbmltYXRpb25F
bGVtZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSA9PSBJbmhlcml0VmFsdWUpIHsKICAgICAg
ICAgU3RyaW5nIGZyb21MZW5ndGhTdHJpbmc7CiAgICAgICAgIGFuaW1hdGlvbkVsZW1lbnQtPmFk
anVzdEZvckluaGVyaXRhbmNlKG1fY29udGV4dEVsZW1lbnQsIGFuaW1hdGlvbkVsZW1lbnQtPmF0
dHJpYnV0ZU5hbWUoKSwgZnJvbUxlbmd0aFN0cmluZyk7CiAgICAgICAgIGZyb21MZW5ndGggPSBz
aGFyZWRTVkdMZW5ndGgobV9sZW5ndGhNb2RlLCBmcm9tTGVuZ3RoU3RyaW5nKS52YWx1ZShtX2Nv
bnRleHRFbGVtZW50KTsKICAgICB9Ci0gICAgaWYgKHRvUHJvcGVydHlJbmhlcml0cykgeworICAg
IGlmIChhbmltYXRpb25FbGVtZW50LT50b1Byb3BlcnR5VmFsdWVUeXBlKCkgPT0gSW5oZXJpdFZh
bHVlKSB7CiAgICAgICAgIFN0cmluZyB0b0xlbmd0aFN0cmluZzsKICAgICAgICAgYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2UobV9jb250ZXh0RWxlbWVudCwgYW5pbWF0aW9u
RWxlbWVudC0+YXR0cmlidXRlTmFtZSgpLCB0b0xlbmd0aFN0cmluZyk7CiAgICAgICAgIHRvTGVu
Z3RoID0gc2hhcmVkU1ZHTGVuZ3RoKG1fbGVuZ3RoTW9kZSwgdG9MZW5ndGhTdHJpbmcpLnZhbHVl
KG1fY29udGV4dEVsZW1lbnQpOyAKQEAgLTExMywxMSArMTIwLDExIEBAIHZvaWQgU1ZHQW5pbWF0
ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXQKICAgICBBU1NFUlQoIWVjKTsKIH0KIAotZmxvYXQg
U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoU1ZHU01JTEVsZW1l
bnQqIHNtaWxFbGVtZW50LCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpCitmbG9hdCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0
YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7
Ci0gICAgQVNTRVJUKHNtaWxFbGVtZW50KTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50
KTsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgU1ZHQW5pbWF0ZUVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KHNtaWxF
bGVtZW50KTsgICAgCisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7ICAgIAog
ICAgIFNWR0xlbmd0aE1vZGUgbGVuZ3RoTW9kZSA9IFNWR0xlbmd0aDo6bGVuZ3RoTW9kZUZvckFu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlKGFuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSk7
CiAgICAgU1ZHTGVuZ3RoIGZyb20gPSBTVkdMZW5ndGgobGVuZ3RoTW9kZSwgZnJvbVN0cmluZyk7
CiAgICAgU1ZHTGVuZ3RoIHRvID0gU1ZHTGVuZ3RoKGxlbmd0aE1vZGUsIHRvU3RyaW5nKTsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCShyZXZpc2lvbiA4OTUzNSkK
KysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MCwxNyArNDAsMTYgQEAgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwg
RE9NQQogY2xhc3MgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRl
ZFR5cGVBbmltYXRvciB7CiAgICAgCiBwdWJsaWM6Ci0gICAgU1ZHQW5pbWF0ZWRMZW5ndGhBbmlt
YXRvcihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYpOwor
ICAgIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoU1ZHU01JTEVsZW1lbnQqLCBTVkdFbGVtZW50
KiBjb250ZXh0RWxlbWVudCk7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRv
cigpIHsgfQogCiAgICAgdmlydHVhbCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3Ry
dWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxh
dGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21B
bmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJ5U3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZShTVkdTTUlMRWxlbWVudCosIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyb21Qcm9wZXJ0eUluaGVyaXRzLCBib29sIHRv
UHJvcGVydHlJbmhlcml0cyk7Ci0gICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShT
VkdTTUlMRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQg
cGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBh
bmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAKIHByaXZhdGU6
CiAgICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1vZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZE51bWJlci5jcHAJKHJldmlzaW9uIDg5NTM1KQorKysgU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsOCArMjgs
OCBAQCB1c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0Fu
aW1hdGVkTnVtYmVyQW5pbWF0b3I6OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoU1ZHRWxlbWVu
dCogY29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmKQotICAgIDogU1ZHQW5pbWF0
ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWROdW1iZXIsIGNvbnRleHRFbGVtZW50KQorU1ZHQW5pbWF0
ZWROdW1iZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcihTVkdTTUlMRWxlbWVu
dCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgOiBT
VkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZE51bWJlciwgYW5pbWF0aW9uRWxlbWVudCwg
Y29udGV4dEVsZW1lbnQpCiB7CiB9CiAKQEAgLTQ0LDYgKzQ0LDExIEBAIFBhc3NPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZE4KIAogdm9pZCBTVkdBbmltYXRlZE51bWJlckFuaW1h
dG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZy
b20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQogeworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50
KTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBTVkdBbmltYXRlRWxlbWVu
dCogYW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9h
bmltYXRpb25FbGVtZW50KTsKKyAgICBhbmltYXRpb25FbGVtZW50LT5kZXRlcm1pbmVQcm9wZXJ0
eVZhbHVlVHlwZXMoZnJvbVN0cmluZywgdG9TdHJpbmcpOworICAgIAogICAgIGZyb20gPSBjb25z
dHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJpbmcpOwogICAgIHRvID0gY29uc3RydWN0RnJvbVN0cmlu
Zyh0b1N0cmluZyk7CiB9CkBAIC01MSw2ICs1Niw5IEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJB
bmltYXRvcjo6Y2FsY3VsYXQKIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3Vs
YXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiBieVN0cmluZykKIHsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgQVNT
RVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlv
bkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxl
bWVudCk7CisgICAgYW5pbWF0aW9uRWxlbWVudC0+ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVz
KGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsKICAgICAKICAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0
cmluZyhmcm9tU3RyaW5nKTsKICAgICB0byA9IGNvbnN0cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcp
OwpAQCAtNTgsMTMgKzY2LDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2Fs
Y3VsYXQKICAgICB0by0+bnVtYmVyKCkgKz0gZnJvbS0+bnVtYmVyKCk7CiB9CiAKLXZvaWQgU1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShTVkdTTUlMRWxl
bWVudCogc21pbEVsZW1lbnQsIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
dG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyb21Qcm9wZXJ0eUlu
aGVyaXRzLCBib29sIHRvUHJvcGVydHlJbmhlcml0cykKK3ZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJB
bmltYXRvcjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25l
ZCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIHRvLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQpCiB7Ci0g
ICAgQVNTRVJUKHNtaWxFbGVtZW50KTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVtZW50KTsK
ICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7Ci0gICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFu
aW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KHNtaWxFbGVt
ZW50KTsKKyAgICBTVkdBbmltYXRlRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19j
YXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50KTsKICAgICAKICAgICBB
bmltYXRpb25Nb2RlIGFuaW1hdGlvbk1vZGUgPSBhbmltYXRpb25FbGVtZW50LT5hbmltYXRpb25N
b2RlKCk7CiAgICAgLy8gVG8gYW5pbWF0aW9uIHVzZXMgY29udHJpYnV0aW9ucyBmcm9tIHRoZSBs
b3dlciBwcmlvcml0eSBhbmltYXRpb25zIGFzIHRoZSBiYXNlIHZhbHVlLgpAQCAtNzUsMTIgKzgy
LDEyIEBAIHZvaWQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXQKICAgICAvLyBS
ZXBsYWNlICdpbmhlcml0JyBieSB0aGVpciBjb21wdXRlZCBwcm9wZXJ0eSB2YWx1ZXMuCiAgICAg
ZmxvYXQmIGZyb21OdW1iZXIgPSBmcm9tLT5udW1iZXIoKTsKICAgICBmbG9hdCYgdG9OdW1iZXIg
PSB0by0+bnVtYmVyKCk7Ci0gICAgaWYgKGZyb21Qcm9wZXJ0eUluaGVyaXRzKSB7CisgICAgaWYg
KGFuaW1hdGlvbkVsZW1lbnQtPmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSgpID09IEluaGVyaXRWYWx1
ZSkgewogICAgICAgICBTdHJpbmcgZnJvbU51bWJlclN0cmluZzsKICAgICAgICAgYW5pbWF0aW9u
RWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2UobV9jb250ZXh0RWxlbWVudCwgYW5pbWF0aW9u
RWxlbWVudC0+YXR0cmlidXRlTmFtZSgpLCBmcm9tTnVtYmVyU3RyaW5nKTsKICAgICAgICAgcGFy
c2VOdW1iZXJGcm9tU3RyaW5nKGZyb21OdW1iZXJTdHJpbmcsIGZyb21OdW1iZXIpOyAKICAgICB9
Ci0gICAgaWYgKHRvUHJvcGVydHlJbmhlcml0cykgeworICAgIGlmIChhbmltYXRpb25FbGVtZW50
LT50b1Byb3BlcnR5VmFsdWVUeXBlKCkgPT0gSW5oZXJpdFZhbHVlKSB7CiAgICAgICAgIFN0cmlu
ZyB0b051bWJlclN0cmluZzsKICAgICAgICAgYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5o
ZXJpdGFuY2UobV9jb250ZXh0RWxlbWVudCwgYW5pbWF0aW9uRWxlbWVudC0+YXR0cmlidXRlTmFt
ZSgpLCB0b051bWJlclN0cmluZyk7CiAgICAgICAgIHBhcnNlTnVtYmVyRnJvbVN0cmluZyh0b051
bWJlclN0cmluZywgdG9OdW1iZXIpOyAKQEAgLTEwMyw3ICsxMTAsNyBAQCB2b2lkIFNWR0FuaW1h
dGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0CiAgICAgICAgIGFuaW1hdGVkTnVtYmVyID0gbnVt
YmVyOwogfQogCi1mbG9hdCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0
YW5jZShTVkdTTUlMRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZykKK2Zsb2F0IFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0
ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmlu
ZykKIHsKICAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CiAgICAgZmxvYXQgZnJvbSA9IDA7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAkocmV2aXNpb24gODk1
MzUpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuaAkod29ya2luZyBj
b3B5KQpAQCAtNDMsMTcgKzQzLDE2IEBAIERFRklORV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5
cGUsIERPTUEKIGNsYXNzIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IgOiBwdWJsaWMgU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IgewogICAgIAogcHVibGljOgotICAgIFNWR0FuaW1hdGVkTnVtYmVy
QW5pbWF0b3IoU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICBTVkdBbmlt
YXRlZE51bWJlckFuaW1hdG9yKFNWR1NNSUxFbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdF
bGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcigpIHsgfQog
ICAgIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0cnVjdEZy
b21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0
ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBj
b25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFu
ZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0
cmluZyYgYnlTdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KFNWR1NNSUxFbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1h
dGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93
blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJvbVByb3BlcnR5SW5oZXJpdHMsIGJvb2wgdG9Q
cm9wZXJ0eUluaGVyaXRzKTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKFNW
R1NNSUxFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRv
U3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBw
ZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFu
aW1hdGVkVmFsdWUpOworICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKIH07CiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBv
aW50TGlzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVk
UG9pbnRMaXN0LmNwcAkocmV2aXNpb24gODk1MzYpCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZWRQb2ludExpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNyw4ICsyNyw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6U1ZH
QW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYpCi0gICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRl
ZFBvaW50cywgY29udGV4dEVsZW1lbnQpCitTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpT
VkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKFNWR1NNSUxFbGVtZW50KiBhbmltYXRpb25FbGVt
ZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKKyAgICA6IFNWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yKEFuaW1hdGVkUG9pbnRzLCBhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkK
IHsKIH0KIApAQCAtNjEsMTEgKzYxLDEwIEBAIHZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmlt
YXRvcjo6Y2FsY3UKICAgICB9CiB9CiAKLXZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRv
cjo6Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShTVkdTTUlMRWxlbWVudCogc21pbEVsZW1lbnQsIGZs
b2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmlt
YXRlZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBib29sLCBib29sKQordm9pZCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxT
VkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCkKIHsKLSAgICBBU1NFUlQoc21pbEVsZW1lbnQpOwor
ICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVt
ZW50KTsKICAgICAKICAgICBTVkdQb2ludExpc3QmIGFuaW1hdGVkUG9pbnRMaXN0ID0gYW5pbWF0
ZWQtPnBvaW50TGlzdCgpOwpAQCAtODEsNyArODAsNyBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRM
aXN0QW5pbWF0b3I6OmNhbGN1CiAgICAgICAgICAgICBTVkdQb2ludExpc3Q6OmNyZWF0ZUFuaW1h
dGVkKGZyb21Qb2ludExpc3QsIHRvUG9pbnRMaXN0LCBhbmltYXRlZFBvaW50TGlzdCwgcGVyY2Vu
dGFnZSk7CiAgICAgICAgICAgICAKICAgICAgICAgLy8gRmFsbCBiYWNrIHRvIGRpc2NyZXRlIGFu
aW1hdGlvbiBpZiB0aGUgcG9pbnRzIGFyZSBub3QgY29tcGF0aWJsZQotICAgICAgICBBbmltYXRp
b25Nb2RlIGFuaW1hdGlvbk1vZGUgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KHNt
aWxFbGVtZW50KS0+YW5pbWF0aW9uTW9kZSgpOworICAgICAgICBBbmltYXRpb25Nb2RlIGFuaW1h
dGlvbk1vZGUgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxl
bWVudCktPmFuaW1hdGlvbk1vZGUoKTsKICAgICAgICAgaWYgKGFuaW1hdGVkUG9pbnRMaXN0Lmlz
RW1wdHkoKSkKICAgICAgICAgICAgIGFuaW1hdGVkUG9pbnRMaXN0ID0gKChhbmltYXRpb25Nb2Rl
ID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJjZW50YWdlID4gMC41KSB8fCBhbmltYXRpb25Nb2Rl
ID09IFRvQW5pbWF0aW9uIHx8IHBlcmNlbnRhZ2UgPT0gMSkgCiAgICAgICAgICAgICA/IHRvUG9p
bnRMaXN0IDogZnJvbVBvaW50TGlzdDsKQEAgLTg5LDcgKzg4LDcgQEAgdm9pZCBTVkdBbmltYXRl
ZFBvaW50TGlzdEFuaW1hdG9yOjpjYWxjdQogICAgIHJldHVybjsKIH0KIAotZmxvYXQgU1ZHQW5p
bWF0ZWRQb2ludExpc3RBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoU1ZHU01JTEVsZW1lbnQq
LCBjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQorZmxvYXQgU1ZHQW5pbWF0ZWRQb2ludExp
c3RBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiwgY29uc3QgU3RyaW5n
JikKIHsKICAgICAvLyBGSVhNRTogRGlzdGFuY2UgY2FsY3VsYXRpb24gaXMgbm90IHBvc3NpYmxl
IGZvciBTVkdQb2ludExpc3QgcmlnaHQgbm93LiBXZSBuZWVkIHRoZSBkaXN0YW5jZSBvZiBmb3Ig
ZXZlcnkgc2luZ2xlIHZhbHVlLgogICAgIHJldHVybiAtMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oCShyZXZpc2lvbiA4OTUzNikKKysrIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwx
NyArMjgsMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgU1ZHQW5pbWF0ZWRQb2ludExp
c3RBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRlZFR5cGVBbmltYXRvciB7CiAgICAgCiBwdWJs
aWM6Ci0gICAgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcihTVkdFbGVtZW50KiwgY29uc3Qg
UXVhbGlmaWVkTmFtZSYpOworICAgIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IoU1ZHU01J
TEVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqKTsKICAgICB2aXJ0dWFsIH5T
VkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKCkgeyB9CiAgICAgCiAgICAgdmlydHVhbCBQYXNz
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcm
KTsKICAgICAKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0
b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcp
OwogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUs
IGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7Ci0gICAg
dmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoU1ZHU01JTEVsZW1lbnQqLCBmbG9h
dCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGFuaW1hdGVkVmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbCBmcm9tUHJvcGVydHlJbmhlcml0cywgYm9vbCB0b1Byb3BlcnR5SW5oZXJpdHMpOwotICAg
IHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2UoU1ZHU01JTEVsZW1lbnQqLCBjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworICAgIHZpcnR1YWwg
dm9pZCBjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJl
cGVhdENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0
b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSk7CisgICAgdmly
dHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNv
bnN0IFN0cmluZyYgdG9TdHJpbmcpOwogfTsKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIApJbmRl
eDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHAJKHJldmlzaW9uIDg5NTM1KQor
KysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTI2LDggKzI2LDggQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1TVkdBbmltYXRlZFJl
Y3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IoU1ZHRWxlbWVudCogY29udGV4dEVs
ZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmKQotICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0
b3IoQW5pbWF0ZWRSZWN0LCBjb250ZXh0RWxlbWVudCkKK1NWR0FuaW1hdGVkUmVjdEFuaW1hdG9y
OjpTVkdBbmltYXRlZFJlY3RBbmltYXRvcihTVkdTTUlMRWxlbWVudCogYW5pbWF0aW9uRWxlbWVu
dCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgOiBTVkdBbmltYXRlZFR5cGVBbmlt
YXRvcihBbmltYXRlZFJlY3QsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQogewog
fQogCkBAIC01NCwxNCArNTQsMTMgQEAgdm9pZCBTVkdBbmltYXRlZFJlY3RBbmltYXRvcjo6Y2Fs
Y3VsYXRlRgogICAgIHRvLT5yZWN0KCkgKz0gZnJvbS0+cmVjdCgpOwogfQogCi12b2lkIFNWR0Fu
aW1hdGVkUmVjdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKFNWR1NNSUxFbGVtZW50
KiBzbWlsRWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wsIGJvb2wpCit2b2lkIFNWR0Fu
aW1hdGVkUmVjdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRh
Z2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmlt
YXRlZCkKIHsKLSAgICBBU1NFUlQoc21pbEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlv
bkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKIAotICAgIFNWR0FuaW1h
dGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1l
bnQqPihzbWlsRWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1l
bnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7
CiAgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5p
bWF0aW9uTW9kZSgpOwogICAgIC8vIFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlvbnMgZnJv
bSB0aGUgbG93ZXIgcHJpb3JpdHkgYW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4KICAgICBG
bG9hdFJlY3QmIGFuaW1hdGVkUmVjdCA9IGFuaW1hdGVkLT5yZWN0KCk7CkBAIC05Myw3ICs5Miw3
IEBAIHZvaWQgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1bGF0ZUEKICAgICAgICAgYW5p
bWF0ZWRSZWN0ID0gbmV3UmVjdDsKIH0KIAotZmxvYXQgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6
OmNhbGN1bGF0ZURpc3RhbmNlKFNWR1NNSUxFbGVtZW50KiwgY29uc3QgU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJikKK2Zsb2F0IFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5j
ZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8vIEZJWE1FOiBEaXN0YW5j
ZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNWR1JlY3QgcmlnaHQgbm93LiBXZSBu
ZWVkIHRoZSBkaXN0YW5jZSBvZiBmb3IgZXZlcnkgc2luZ2xlIHZhbHVlLgogICAgIHJldHVybiAt
MTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJlY3QuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgJKHJldmlzaW9uIDg5NTM1
KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5oCSh3b3JraW5nIGNvcHkp
CkBAIC00MSwxNyArNDEsMTYgQEAgREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwg
RE9NQQogY2xhc3MgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRU
eXBlQW5pbWF0b3IgewogICAgIAogcHVibGljOgotICAgIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9y
KFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAg
U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IoU1ZHU01JTEVsZW1lbnQqLCBTVkdFbGVtZW50KiBjb250
ZXh0RWxlbWVudCk7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IoKSB7IH0K
ICAgICAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RG
cm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxh
dGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21B
bmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBT
dHJpbmcmIGJ5U3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1
ZShTVkdTTUlMRWxlbWVudCosIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyb21Qcm9wZXJ0eUluaGVyaXRzLCBib29sIHRv
UHJvcGVydHlJbmhlcml0cyk7Ci0gICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShT
VkdTTUlMRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0
b1N0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQg
cGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBh
bmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgCiAgICAg
c3RhdGljIGJvb2wgcGFyc2VTVkdSZWN0KGNvbnN0IFN0cmluZyYsIEZsb2F0UmVjdCYpOwogfTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCShyZXZpc2lvbiA4OTUz
NikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNsdWRl
ICJTVkdBbmdsZS5oIgorI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHTGVuZ3Ro
LmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnRM
aXN0LmgiCkBAIC00MSw2ICs0Miw5IEBAIFNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVkVHlw
ZSgpCiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgICAgICBkZWxldGUgbV9kYXRhLmFuZ2xl
OwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CisgICAgICAgIGRlbGV0
ZSBtX2RhdGEuY29sb3I7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6
CiAgICAgICAgIGRlbGV0ZSBtX2RhdGEubGVuZ3RoOwogICAgICAgICBicmVhazsKQEAgLTY3LDYg
KzcxLDE0IEBAIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFQKICAgICBy
ZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKIH0KIAorUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQ29sb3IoQ29sb3IqIGNvbG9yKQoreworICAg
IEFTU0VSVChjb2xvcik7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRUeXBl
ID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZENvbG9yKSk7CisgICAgYW5p
bWF0ZWRUeXBlLT5tX2RhdGEuY29sb3IgPSBjb2xvcjsKKyAgICByZXR1cm4gYW5pbWF0ZWRUeXBl
LnJlbGVhc2UoKTsKK30KKwogUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1hdGVk
VHlwZTo6Y3JlYXRlTGVuZ3RoKFNWR0xlbmd0aCogbGVuZ3RoKQogewogICAgIEFTU0VSVChsZW5n
dGgpOwpAQCAtMTA1LDYgKzExNywxMiBAQCBTVkdBbmdsZSYgU1ZHQW5pbWF0ZWRUeXBlOjphbmds
ZSgpCiAgICAgcmV0dXJuICptX2RhdGEuYW5nbGU7CiB9CiAKK0NvbG9yJiBTVkdBbmltYXRlZFR5
cGU6OmNvbG9yKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQ29sb3IpOworICAg
IHJldHVybiAqbV9kYXRhLmNvbG9yOworfQorCiBTVkdMZW5ndGgmIFNWR0FuaW1hdGVkVHlwZTo6
bGVuZ3RoKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTGVuZ3RoKTsKQEAgLTEz
NSw2ICsxNTMsOSBAQCBTdHJpbmcgU1ZHQW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKCkKICAg
ICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgICAgIEFTU0VSVChtX2RhdGEuYW5nbGUpOwogICAg
ICAgICByZXR1cm4gbV9kYXRhLmFuZ2xlLT52YWx1ZUFzU3RyaW5nKCk7CisgICAgY2FzZSBBbmlt
YXRlZENvbG9yOgorICAgICAgICBBU1NFUlQobV9kYXRhLmNvbG9yKTsKKyAgICAgICAgcmV0dXJu
IG1fZGF0YS5jb2xvci0+c2VyaWFsaXplZCgpOwogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAg
ICAgICAgIEFTU0VSVChtX2RhdGEubGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIG1fZGF0YS5sZW5n
dGgtPnZhbHVlQXNTdHJpbmcoKTsKQEAgLTE2Myw2ICsxODQsMTAgQEAgYm9vbCBTVkdBbmltYXRl
ZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoYwogICAgICAgICBBU1NFUlQobV9kYXRhLmFuZ2xlKTsK
ICAgICAgICAgbV9kYXRhLmFuZ2xlLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBlYyk7CiAgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKKyAgICAgICAgQVNTRVJUKG1fZGF0
YS5jb2xvcik7CisgICAgICAgICptX2RhdGEuY29sb3IgPSB2YWx1ZS5pc0VtcHR5KCkgPyBDb2xv
cigpIDogU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHZhbHVlKTsKKyAgICAgICAg
YnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICAgICAgQVNTRVJUKG1fZGF0YS5s
ZW5ndGgpOwogICAgICAgICBtX2RhdGEubGVuZ3RoLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBT
VkdMZW5ndGg6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSks
IGVjKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHJldmlzaW9uIDg5
NTM2KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgQ29s
b3I7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBTVkdBbmdsZTsKIGNsYXNzIFNWR0xlbmd0aDsK
QEAgLTM2LDYgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkVHlwZSgp
OwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVBbmdsZShT
VkdBbmdsZSopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3JlYXRl
Q29sb3IoQ29sb3IqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNy
ZWF0ZUxlbmd0aChTVkdMZW5ndGgqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IGNyZWF0ZU51bWJlcihmbG9hdCopOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4gY3JlYXRlUG9pbnRMaXN0KFNWR1BvaW50TGlzdCopOwpAQCAtNDQsNiArNDYs
NyBAQCBwdWJsaWM6CiAgICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIHR5cGUoKSBjb25zdCB7IHJl
dHVybiBtX3R5cGU7IH0KIAogICAgIFNWR0FuZ2xlJiBhbmdsZSgpOworICAgIENvbG9yJiBjb2xv
cigpOwogICAgIFNWR0xlbmd0aCYgbGVuZ3RoKCk7CiAgICAgZmxvYXQmIG51bWJlcigpOwogICAg
IFNWR1BvaW50TGlzdCYgcG9pbnRMaXN0KCk7CkBAIC02NSw2ICs2OCw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIAogICAgICAgICAvLyBGSVhNRTogTW9yZSBTVkcgcHJpbWl0aXZlIHR5cGVzIG5lZWQg
dG8gYmUgYWRkZWQgc3RlcCBieSBzdGVwLgogICAgICAgICBTVkdBbmdsZSogYW5nbGU7CisgICAg
ICAgIENvbG9yKiBjb2xvcjsKICAgICAgICAgU1ZHTGVuZ3RoKiBsZW5ndGg7CiAgICAgICAgIGZs
b2F0KiBudW1iZXI7CiAgICAgICAgIFNWR1BvaW50TGlzdCogcG9pbnRMaXN0OwpJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHJldmlzaW9uIDg5
NTM1KQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHdv
cmtpbmcgY29weSkKQEAgLTM1LDIxICszNSwyMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVh
bCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYg
ZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5n
JiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJv
bVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoU1ZHU01JTEVsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdl
LCB1bnNpZ25lZCByZXBlYXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5p
bWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFs
dWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcm9tUHJv
cGVydHlJbmhlcml0cywgYm9vbCB0b1Byb3BlcnR5SW5oZXJpdHMpID0gMDsKLSAgICB2aXJ0dWFs
IGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKFNWR1NNSUxFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFs
dWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKSA9IDA7CisgICAgdmly
dHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNv
bnN0IFN0cmluZyYgdG9TdHJpbmcpID0gMDsKIAogICAgIHZvaWQgc2V0Q29udGV4dEVsZW1lbnQo
U1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpIHsgbV9jb250ZXh0RWxlbWVudCA9IGNvbnRleHRF
bGVtZW50OyB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Io
QW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIHR5cGUsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQor
ICAgIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlLCBT
VkdTTUlMRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1l
bnQpCiAgICAgICAgIDogbV90eXBlKHR5cGUpCisgICAgICAgICwgbV9hbmltYXRpb25FbGVtZW50
KGFuaW1hdGlvbkVsZW1lbnQpCiAgICAgICAgICwgbV9jb250ZXh0RWxlbWVudChjb250ZXh0RWxl
bWVudCkKICAgICB7CiAgICAgfQogCiAgICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIG1fdHlwZTsK
KyAgICBTVkdTTUlMRWxlbWVudCogbV9hbmltYXRpb25FbGVtZW50OwogICAgIFNWR0VsZW1lbnQq
IG1fY29udGV4dEVsZW1lbnQ7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0b3JGYWN0b3J5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dG9yRmFjdG9yeS5oCShyZXZpc2lvbiA4OTUzNikKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRvckZhY3RvcnkuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsMzIgKzIyLDQwIEBACiAKICNp
ZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKICNpbmNsdWRlICJTVkdBbmlt
YXRlZEFuZ2xlLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRDb2xvci5oIgogI2luY2x1ZGUgIlNW
R0FuaW1hdGVkTGVuZ3RoLmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKICNpbmNs
dWRlICJTVkdBbmltYXRlZFBvaW50TGlzdC5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUmVjdC5o
IgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIFNWR1NNSUxFbGVtZW50OwogICAgIAog
Y2xhc3MgU1ZHQW5pbWF0b3JGYWN0b3J5IHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc093blB0
cjxTVkdBbmltYXRlZFR5cGVBbmltYXRvcj4gY3JlYXRlKFNWR0VsZW1lbnQqIGNvbnRleHRFbGVt
ZW50LCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgYXR0cmlidXRlVHlwZSwgY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0cmlidXRlTmFtZSkKKyAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5
cGVBbmltYXRvcj4gY3JlYXRlKFNWR1NNSUxFbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdF
bGVtZW50KiBjb250ZXh0RWxlbWVudCwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGF0dHJpYnV0ZVR5
cGUpCiAgICAgeworICAgICAgICBBU1NFUlQoYW5pbWF0aW9uRWxlbWVudCk7CisgICAgICAgIEFT
U0VSVChjb250ZXh0RWxlbWVudCk7CisKICAgICAgICAgLy8gRklYTUU6IEFkZCBhbmltYXRpb24g
c3VwcG9ydCBmb3IgYWxsIFNWRyB1bml0cy4KICAgICAgICAgc3dpdGNoIChhdHRyaWJ1dGVUeXBl
KSB7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKLSAgICAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yKGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1
dGVOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkQW5n
bGVBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOworICAgICAgICBj
YXNlIEFuaW1hdGVkQ29sb3I6CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0Fu
aW1hdGVkQ29sb3JBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOwog
ICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRy
KG5ldyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVO
YW1lKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3Ro
QW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgY2Fz
ZSBBbmltYXRlZE51bWJlcjoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5p
bWF0ZWROdW1iZXJBbmltYXRvcihjb250ZXh0RWxlbWVudCwgYXR0cmlidXRlTmFtZSkpOworICAg
ICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yKGFu
aW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQ
b2ludHM6Ci0gICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkUG9pbnRM
aXN0QW5pbWF0b3IoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcihhbmltYXRp
b25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOwogICAgICAgICBjYXNlIEFuaW1hdGVkUmVjdDoK
LSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3Io
Y29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9w
dFB0cihuZXcgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4
dEVsZW1lbnQpKTsKICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZExlbmd0
aEFuaW1hdG9yKGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7CisgICAgICAgICAgICBy
ZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoYW5pbWF0aW9uRWxl
bWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgfQogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>98362</attachid>
            <date>2011-06-23 10:03:15 -0700</date>
            <delta_ts>2011-06-23 10:33:05 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-63246-20110623190310.patch</filename>
            <type>text/plain</type>
            <size>75311</size>
            <attacher name="Dirk Schulze">krit</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsOTggQEAKKzIwMTEtMDYtMjMgIERpcmsgU2No
dWx6ZSAgPGtyaXRAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDb252ZXJ0IFNWR0NvbG9yIHRvIFNWR0FuaW1hdG9yRmFjdG9yeSBj
b25jZXB0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02
MzI0NgorCisgICAgICAgIEZvbGxvdyB1cCBvZiAiU1ZHQW5pbWF0aW9uIHNob3VsZCB1c2UgZGly
ZWN0IHVuaXQgYW5pbWF0aW9uIGZvciBTVkdMZW5ndGgiOiBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NjEzNjgKKyAgICAgICAgVGhpcyBwYXRjaCBjb250aW51ZXMgdGhl
IGNvbnZlcnNpb24gdG8gdGhlIG5ldyBjb25jZXB0IG9mIFNWR0FuaW1hdG9yRmFjdG9yeSB3aXRo
IFNWR0NvbG9yLgorCisgICAgICAgIENoYW5nZWQgY29uc3RydWN0b3JzIG9mIGFuaW1hdG9ycyB0
byB0YWtlIHRoZSBhbmltYXRpb24gZWxlbWVudCBTVkdBbmltYXRpb25zRWxlbWVudCBhcyBuZXcg
YXJndW1lbnQuIFJlbW92ZWQgYXR0cmlidXRlIG5hbWUgYXJndW1lbnQgaW5zdGVhZC4KKyAgICAg
ICAgVGhpcyBpbmZvcm1hdGlvbiBpcyBhbHJlYWR5IGV4cG9zZWQgYnkgdGhlIGFuaW1hdGlvbiBl
bGVtZW50LiBUaGUgYW5pbWF0b3JzIHN0b3JlIHRoZSBwb2ludGVyIG9mIHRoZSBhbmltYXRpb24g
ZWxlbWVudCwgc28gdGhhdCBpdCBpcyBub3QKKyAgICAgICAgbmVjZXNzYXJ5IHRvIHBhc3MgaXQg
YXMgYXJndW1lbnQgdG8gdGhlIGZ1bmN0aW9ucyBjYWxjdWxhdGVEaXN0YW5jZSwgY2FsY3VsYXRl
QW5pbWF0ZWRWYWx1ZS4KKyAgICAgICAgCisgICAgICAgIFJlcGxhY2UgYWxsIFNWR1NNSUxFbGVt
ZW50IHJlZmVyZW5jZXMgYnkgU1ZHQW5pbWF0aW9uc0VsZW1lbnQgLSB0aGUgZGlyZWN0IGJhc2Ug
Y2xhc3Mgb2YgYWxsIGFuaW1hdGlvbiBlbGVtZW50cy4KKworICAgICAgICBBZGRlZCBhIG5ldyBt
ZXRob2QgaW4gU1ZHQW5pbWF0ZUVsZW1lbnQgdG8gZGV0ZXJtaW5lIHRoZSBwcm9wZXJ0eSB2YWx1
ZSB0eXBlIG9mIENTUyBwcm9wZXJ0aWVzIChyZWd1bGFyIHZhbHVlIHR5cGUsIGluaGVyaXQgb3Ig
Y3VycmVudENvbG9yKS4KKyAgICAgICAgVGhlIG90aGVyIHR3byBuZXcgbWV0aG9kcyBmcm9tUHJv
cGVydHlWYWx1ZVR5cGUoKSBhbmQgdG9Qcm9wZXJ0eVZhbHVlVHlwZSgpIGF2b2lkIHBhc3Npbmcg
Ym9vbGVhbiBhcmd1bWVudHMgaW4gY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZSgpLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cyBhZGRlZC4gQ3VycmVudCB0ZXN0cyBjb3ZlciB0aGUgY2hhbmdlcy4KKwor
ICAgICAgICAqIENNYWtlTGlzdHMudHh0OiBBZGRlZCBuZXcgZmlsZXMgdG8gYnVpbGQgc3lzdGVt
LgorICAgICAgICAqIEdOVW1ha2VmaWxlLmxpc3QuYW06IERpdHRvLgorICAgICAgICAqIFdlYkNv
cmUuZ3lwaTogRGl0dG8uCisgICAgICAgICogV2ViQ29yZS5wcm86IERpdHRvLgorICAgICAgICAq
IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qOiBEaXR0by4KKyAgICAgICAgKiBXZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6IERpdHRvLgorICAgICAgICAqIHN2Zy9TVkdBbGxJ
bk9uZS5jcHA6ICBEaXR0by4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuY3BwOiBV
c2UgQW5pbWF0b3IgZm9yIFNWR0NvbG9yLiAKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVF
bGVtZW50OjpTVkdBbmltYXRlRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
RWxlbWVudDo6ZGV0ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50OjpkZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRU
b1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVudDo6Y2FsY3VsYXRl
RnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50Ojpy
ZXNldFRvQmFzZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVFbGVtZW50Ojph
cHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlRWxlbWVu
dDo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZUVsZW1l
bnQ6OmVuc3VyZUFuaW1hdG9yKTogUGFzcyB0aGUgYW5pbWF0aW9uIGVsZW1lbnQgYXMgcG9pbnRl
ciB0byBhbmltYXRvci4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZUVsZW1lbnQuaDogUmVtb3Zl
ZCB1bm5lY2Vzc2FyeSBpbmNsdWRlcy4gU29tZSBjbGVhbnVwLgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQW5pbWF0ZUVsZW1lbnQ6OmZyb21Qcm9wZXJ0eVZhbHVlVHlwZSk6IEdldCBwcm9wZXJ0eSB2
YWx1ZSB0eXBlIG9mICdmcm9tJyBwcm9wZXJ0eS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1h
dGVFbGVtZW50Ojp0b1Byb3BlcnR5VmFsdWVUeXBlKTogR2V0IHByb3BlcnR5IHZhbHVlIHR5cGUg
b2YgJ3RvJyBwcm9wZXJ0eS4KKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OlNWR0FuaW1hdGVkQW5n
bGVBbmltYXRvcik6IEFkZGVkIFNWR1NNSUxFbGVtZW50IGFzIG5ldyBhcmd1bWVudCwgcmVtb3Zl
ZCBhdHRyaWJ1dGVOYW1lLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMpOiBEZXRlcm1pbmUgcHJvcGVydHkgdmFsdWUg
dHlwZS4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3Vs
YXRlRnJvbUFuZEJ5VmFsdWVzKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRl
ZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOiBVc2UgbmV3IGZ1bmN0aW9u
cyBvZiBTVkdBbmltYXRlRWxlbWVudCBmb3IgaGFuZGxpbmcgb2YgJ2luaGVyaXQnLgorICAgICAg
ICAgICAgQW5kIHJlbW92ZWQgdW5uZWNlc3NhcnkgYXJndW1lbnRzLgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZSk6IFJlbW92ZWQg
YW5pbWF0aW9uIGVsZW1lbnQgYXJndW1lbnQuCisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQW5n
bGUuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRDb2xvci5jcHA6IEFkZGVkLgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpTVkdBbmltYXRlZENvbG9yQW5p
bWF0b3IpOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkQ29sb3JBbmltYXRv
cjo6Y29uc3RydWN0RnJvbVN0cmluZyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZENv
bG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1h
dGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpj
YWxjdWxhdGVEaXN0YW5jZSk6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkQ29sb3IuaDogQWRk
ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZENvbG9yQW5pbWF0b3I6On5TVkdBbmlt
YXRlZENvbG9yQW5pbWF0b3IpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpTVkdBbmltYXRl
ZExlbmd0aEFuaW1hdG9yKTogRGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZExl
bmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1bGF0ZUFu
aW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRv
cjo6Y2FsY3VsYXRlRGlzdGFuY2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZExlbmd0aC5o
OgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yKTog
RGl0dG8uCisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxj
dWxhdGVGcm9tQW5kVG9WYWx1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1i
ZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFu
Y2UpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZE51bWJlci5oOgorICAgICAgICAqIHN2Zy9T
VkdBbmltYXRlZFBvaW50TGlzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBv
aW50TGlzdEFuaW1hdG9yOjpTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKTogRGl0dG8uCisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkUG9pbnRMaXN0QW5p
bWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRQb2lu
dExpc3QuaDoKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRSZWN0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjpTVkdBbmltYXRlZFJlY3RBbmltYXRvcik6
IERpdHRvLgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1
bGF0ZUFuaW1hdGVkVmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRSZWN0QW5p
bWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZWRSZWN0
Lmg6CisgICAgICAgICogc3ZnL1NWR0FuaW1hdGVkVHlwZS5jcHA6IEFkZGVkIGhhbmRsaW5nIG9m
IENvbG9yIHZhbHVlcy4KKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6flNWR0Fu
aW1hdGVkVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlZFR5cGU6OmNyZWF0ZUNv
bG9yKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6Y29sb3IpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0FuaW1hdGVkVHlwZTo6c2V0VmFsdWVBc1N0cmluZyk6CisgICAgICAgICogc3Zn
L1NWR0FuaW1hdGVkVHlwZS5oOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlZFR5cGVBbmltYXRv
ci5oOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I6OlNWR0FuaW1h
dGVkVHlwZUFuaW1hdG9yKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0b3JGYWN0b3J5Lmg6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSk6CisKIDIwMTEtMDYt
MjMgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgWXVyeSBTZW1pa2hhdHNreS4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiA4OTU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNv
cHkpCkBAIC0xNjU1LDYgKzE2NTUsNyBAQCBJRiAoRU5BQkxFX1NWRykKICAgICAgICAgc3ZnL1NW
R0FuZ2xlLmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAKICAgICAg
ICAgc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCisgICAgICAgIHN2Zy9TVkdBbmltYXRlZENvbG9y
LmNwcAogICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCiAgICAgICAgIHN2Zy9TVkdB
bmltYXRlZE51bWJlci5jcHAKICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNwcApJ
bmRleDogU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCShyZXZpc2lvbiA4OTU4MCkKKysrIFNv
dXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0JKHdvcmtpbmcgY29weSkKQEAgLTM0MDQs
NiArMzQwNCw4IEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkQW5nbGUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmds
ZS5oIFwKIAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmggXAorCVNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmNwcCBcCisJU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGVkQ29sb3IuaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkRW51
bWVyYXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkSW50ZWdlci5oIFwK
IAlTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwIFwKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkJKHJldmlzaW9uIDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBp
CSh3b3JraW5nIGNvcHkpCkBAIC0xMDQ1LDYgKzEwNDUsNyBAQAogICAgICAgICAgICAgJ3N2Zy9T
VkdBbmdsZS5oJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRBbmdsZS5oJywKICAgICAg
ICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmgnLAorICAgICAgICAgICAgJ3N2Zy9TVkdB
bmltYXRlZENvbG9yLmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEVudW1lcmF0aW9u
LmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRlZEludGVnZXIuaCcsCiAgICAgICAgICAg
ICAnc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmgnLApAQCAtNTcwOCw2ICs1NzA5LDcgQEAKICAgICAg
ICAgICAgICdzdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAnLAogICAgICAgICAgICAgJ3N2
Zy9TVkdBbmltYXRlQ29sb3JFbGVtZW50LmgnLAogICAgICAgICAgICAgJ3N2Zy9TVkdBbmltYXRl
ZEFuZ2xlLmNwcCcsCisgICAgICAgICAgICAnc3ZnL1NWR0FuaW1hdGVkQ29sb3IuY3BwJywKICAg
ICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwJywKICAgICAgICAgICAgICdzdmcv
U1ZHQW5pbWF0ZWROdW1iZXIuY3BwJywKICAgICAgICAgICAgICdzdmcvU1ZHQW5pbWF0ZWRQb2lu
dExpc3QuY3BwJywKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCShyZXZpc2lvbiA4OTU4MCkKKysrIFNvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUucHJvCSh3b3JraW5nIGNvcHkpCkBAIC0yMzMwLDYgKzIzMzAsNyBA
QCBIRUFERVJTICs9IFwKICAgICBzdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5oIFwKICAgICBz
dmcvU1ZHQW5pbWF0ZWRBbmdsZS5oIFwKICAgICBzdmcvU1ZHQW5pbWF0ZWRCb29sZWFuLmggXAor
ICAgIHN2Zy9TVkdBbmltYXRlZENvbG9yLmggXAogICAgIHN2Zy9TVkdBbmltYXRlZEVudW1lcmF0
aW9uLmggXAogICAgIHN2Zy9TVkdBbmltYXRlZEludGVnZXIuaCBcCiAgICAgc3ZnL1NWR0FuaW1h
dGVkTGVuZ3RoLmggXApAQCAtMzMyMiw2ICszMzIzLDcgQEAgY29udGFpbnMoREVGSU5FUywgRU5B
QkxFX1NWRz0xKSB7CiAgICAgICAgICAgICAgIHN2Zy9TVkdBbmdsZS5jcHAgXAogICAgICAgICAg
ICAgICBzdmcvU1ZHQW5pbWF0ZUNvbG9yRWxlbWVudC5jcHAgXAogICAgICAgICAgICAgICBzdmcv
U1ZHQW5pbWF0ZWRBbmdsZS5jcHAgXAorICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRDb2xv
ci5jcHAgXAogICAgICAgICAgICAgICBzdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwIFwKICAgICAg
ICAgICAgICAgc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcCBcCiAgICAgICAgICAgICAgIHN2Zy9T
VkdBbmltYXRlZFBvaW50TGlzdC5jcHAgXApJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS52
Y3Byb2ovV2ViQ29yZS52Y3Byb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHJldmlzaW9uIDg5NTgwKQorKysgU291cmNlL1dlYkNv
cmUvV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3Byb2oJKHdvcmtpbmcgY29weSkKQEAgLTY1MzYy
LDYgKzY1MzYyLDEwIEBACiAJCQkJPgogCQkJPC9GaWxlPgogCQkJPEZpbGUKKwkJCQlSZWxhdGl2
ZVBhdGg9Ii4uXHN2Z1xTVkdBbmltYXRlZENvbG9yLmgiCisJCQkJPgorCQkJPC9GaWxlPgorCQkJ
PEZpbGUKIAkJCQlSZWxhdGl2ZVBhdGg9Ii4uXHN2Z1xTVkdBbmltYXRlZEVudW1lcmF0aW9uLmgi
CiAJCQkJPgogCQkJPC9GaWxlPgpJbmRleDogU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gODk1ODApCisrKyBTb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAg
LTk5NSw2ICs5OTUsOCBAQAogCQk0MzlEMzM0NTEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0
b3JGYWN0b3J5LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA0MzlEMzM0MjEzQTY5MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggKi87IH07
CiAJCTQzQTBGMEIxMTNBQzdENkQwMEE1RjBBNyAvKiBTVkdBbmltYXRlZE51bWJlci5jcHAgaW4g
U291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA0M0EwRjBCMDEzQUM3
RDZEMDBBNUYwQTcgLyogU1ZHQW5pbWF0ZWROdW1iZXIuY3BwICovOyB9OwogCQk0M0EwRjBCNjEz
QUNDQ0ZGMDBBNUYwQTcgLyogU1ZHQW5pbWF0ZWRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQTBGMEI1MTNBQ0NDRkYwMEE1RjBBNyAvKiBT
VkdBbmltYXRlZFR5cGUuY3BwICovOyB9OworCQk0M0E2MjVGODEzQjMzMDQwMDBBQzk0QjggLyog
U1ZHQW5pbWF0ZWRDb2xvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gNDNBNjI1RjYxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuaCAq
LzsgfTsKKwkJNDNBNjI1RjkxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNBNjI1Rjcx
M0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwICovOyB9OwogCQk0M0I5MzM2
OTEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDQzQjkzMzY3MTNCMjYxQjEwMDQ1ODRC
RiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oICovOyB9OwogCQk0M0I5MzM2QTEzQjI2MUIxMDA0
NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNDNCOTMzNjgxM0IyNjFCMTAwNDU4NEJGIC8qIFNWR0Fu
aW1hdGVkUG9pbnRMaXN0LmNwcCAqLzsgfTsKIAkJNDNDMDkyQkMxMkQ5RTRFRTAwQTk4OUMzIC8q
IFJlbmRlclNWR0ZvcmVpZ25PYmplY3QuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDQzQzA5MkJBMTJEOUU0RUUwMEE5ODlDMyAvKiBSZW5kZXJTVkdGb3Jl
aWduT2JqZWN0LmggKi87IH07CkBAIC03NDgwLDYgKzc0ODIsOCBAQAogCQk0MzlEMzM0MjEzQTY5
MTFDMDBDMjBGNEYgLyogU1ZHQW5pbWF0b3JGYWN0b3J5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFNWR0FuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0M0EwRjBCMDEzQUM3RDZEMDBBNUYwQTcgLyogU1ZHQW5pbWF0ZWROdW1iZXIuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWROdW1iZXIu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0EwRjBCNTEzQUNDQ0ZGMDBBNUYw
QTcgLyogU1ZHQW5pbWF0ZWRUeXBlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFNWR0FuaW1hdGVkVHlwZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTQzQTYyNUY2MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmggKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNWR0FuaW1hdGVkQ29sb3IuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJNDNBNjI1RjcxM0IzMzA0MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVk
Q29sb3IuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0
ZWRDb2xvci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQzQjkzMzY3MTNCMjYx
QjEwMDQ1ODRCRiAvKiBTVkdBbmltYXRlZFBvaW50TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdBbmltYXRlZFBvaW50TGlzdC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0M0I5MzM2ODEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExp
c3QuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU1ZHQW5pbWF0ZWRQ
b2ludExpc3QuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0M0MwOTJCOTEyRDlF
NEVFMDBBOTg5QzMgLyogUmVuZGVyU1ZHRm9yZWlnbk9iamVjdC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZW5kZXJTVkdGb3JlaWduT2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE3MzkwLDYgKzE3Mzk0LDggQEAKIAkJCQlCMjIyNzdF
NjBEMDBCRjFGMDA3MUI3ODIgLyogU1ZHQW5pbWF0ZWRBbmdsZS5pZGwgKi8sCiAJCQkJMDg1Nzk3
MDgxMjc4Mzk0QzAwQThFQzVGIC8qIFNWR0FuaW1hdGVkQm9vbGVhbi5oICovLAogCQkJCUIyMjI3
N0U3MEQwMEJGMUYwMDcxQjc4MiAvKiBTVkdBbmltYXRlZEJvb2xlYW4uaWRsICovLAorCQkJCTQz
QTYyNUY3MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRlZENvbG9yLmNwcCAqLywKKwkJCQk0
M0E2MjVGNjEzQjMzMDQwMDBBQzk0QjggLyogU1ZHQW5pbWF0ZWRDb2xvci5oICovLAogCQkJCTA4
RDQ2Q0UyMTI3QUQ1RkMwMDg5Njk0QiAvKiBTVkdBbmltYXRlZEVudW1lcmF0aW9uLmggKi8sCiAJ
CQkJQjIyMjc3RTgwRDAwQkYxRjAwNzFCNzgyIC8qIFNWR0FuaW1hdGVkRW51bWVyYXRpb24uaWRs
ICovLAogCQkJCTA4MjNEMTU4MTI3QUQ2QUMwMDBFQkM5NSAvKiBTVkdBbmltYXRlZEludGVnZXIu
aCAqLywKQEAgLTIzMDU0LDYgKzIzMDYwLDcgQEAKIAkJCQlCMUFENEU3RDEzQTEyQTcyMDA4NDZC
MjcgLyogQ3VlUGFyc2VyUHJpdmF0ZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJOTdCMUYwMkYxM0Iw
MjVEMjAwRjUxMDNGIC8qIFNoYXJlZEJ1ZmZlckNodW5rUmVhZGVyLmggaW4gSGVhZGVycyAqLywK
IAkJCQk0M0I5MzM2OTEzQjI2MUIxMDA0NTg0QkYgLyogU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCBp
biBIZWFkZXJzICovLAorCQkJCTQzQTYyNUY4MTNCMzMwNDAwMEFDOTRCOCAvKiBTVkdBbmltYXRl
ZENvbG9yLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBv
c3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTI1ODE1LDYgKzI1ODIyLDcgQEAKIAkJCQk5N0Ix
RjAyRTEzQjAyNUNBMDBGNTEwM0YgLyogU2hhcmVkQnVmZmVyQ2h1bmtSZWFkZXIuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJNDMxNDJFN0ExM0IxRTk3NzAwRjFDODcxIC8qIFNWR0FuaW1hdGVkUmVj
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0M0I5MzM2QTEzQjI2MUIxMDA0NTg0QkYgLyogU1ZH
QW5pbWF0ZWRQb2ludExpc3QuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJNDNBNjI1RjkxM0IzMzA0
MDAwQUM5NEI4IC8qIFNWR0FuaW1hdGVkQ29sb3IuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkpOwog
CQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQWxsSW5PbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbGxJbk9uZS5jcHAJKHJldmlzaW9uIDg5NTgwKQorKysgU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FsbEluT25lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEsNiArMzEsNyBA
QAogI2luY2x1ZGUgIlNWR0FuZ2xlLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlQ29sb3JFbGVt
ZW50LmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZEFuZ2xlLmNwcCIKKyNpbmNsdWRlICJTVkdB
bmltYXRlZENvbG9yLmNwcCIKICNpbmNsdWRlICJTVkdBbmltYXRlZExlbmd0aC5jcHAiCiAjaW5j
bHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuY3BwIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUG9pbnRM
aXN0LmNwcCIKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlRWxlbWVudC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmNwcAko
cmV2aXNpb24gODk1ODApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZUVsZW1lbnQu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yOCwxMSArMjgsOSBAQAogI2luY2x1ZGUgIkNTU0NvbXB1
dGVkU3R5bGVEZWNsYXJhdGlvbi5oIgogI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKLSNpbmNsdWRlICJDb2xvckRpc3RhbmNlLmgiCiAjaW5jbHVk
ZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdG9yRmFjdG9yeS5oIgotI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAi
U1ZHTmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXRoUGFyc2VyRmFjdG9yeS5oIgogI2luY2x1ZGUg
IlNWR1N0eWxlZEVsZW1lbnQuaCIKQEAgLTQ0LDYgKzQyLDggQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogU1ZHQW5pbWF0ZUVsZW1lbnQ6OlNWR0FuaW1hdGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5h
bWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1bWVudCkKICAgICA6IFNWR0FuaW1hdGlvbkVsZW1l
bnQodGFnTmFtZSwgZG9jdW1lbnQpCiAgICAgLCBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZShBbmlt
YXRlZFN0cmluZykKKyAgICAsIG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlKFJlZ3VsYXJQcm9wZXJ0
eVZhbHVlKQorICAgICwgbV90b1Byb3BlcnR5VmFsdWVUeXBlKFJlZ3VsYXJQcm9wZXJ0eVZhbHVl
KQogICAgICwgbV9hbmltYXRlZFBhdGhQb2ludGVyKDApCiB7CiAgICAgQVNTRVJUKGhhc1RhZ05h
bWUoU1ZHTmFtZXM6OmFuaW1hdGVUYWcpIHx8IGhhc1RhZ05hbWUoU1ZHTmFtZXM6OnNldFRhZykg
fHwgaGFzVGFnTmFtZShTVkdOYW1lczo6YW5pbWF0ZUNvbG9yVGFnKSk7CkBAIC0xMTksNiArMTE5
LDggQEAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIFNWR0FuaW1hdGVFbGVtZW50OgogICAgIGNhc2Ug
QW5pbWF0ZWRQcmVzZXJ2ZUFzcGVjdFJhdGlvOgogICAgIGNhc2UgQW5pbWF0ZWRTdHJpbmc6CiAg
ICAgICAgIHJldHVybiBBbmltYXRlZFN0cmluZzsKKyAgICBjYXNlIEFuaW1hdGVkQ29sb3I6Cisg
ICAgICAgIHJldHVybiBBbmltYXRlZENvbG9yOwogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6CiAg
ICAgICAgIHJldHVybiBBbmltYXRlZExlbmd0aDsKICAgICBjYXNlIEFuaW1hdGVkSW50ZWdlcjoK
QEAgLTEzMCw4ICsxMzIsNiBAQCBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgU1ZHQW5pbWF0ZUVsZW1l
bnQ6CiAgICAgICAgIHJldHVybiBBbmltYXRlZFBvaW50czsKICAgICBjYXNlIEFuaW1hdGVkUmVj
dDoKICAgICAgICAgcmV0dXJuIEFuaW1hdGVkUmVjdDsKLSAgICBjYXNlIEFuaW1hdGVkQ29sb3I6
Ci0gICAgICAgIHJldHVybiBBbmltYXRlZENvbG9yOwogICAgIGNhc2UgQW5pbWF0ZWRUcmFuc2Zv
cm1MaXN0OgogICAgIGNhc2UgQW5pbWF0ZWRVbmtub3duOgogICAgICAgICAvLyBBbmltYXRpb25z
IG9mIHRyYW5zZm9ybSBsaXN0cyBhcmUgbm90IGFsbG93ZWQgZm9yIDxhbmltYXRlPiBvciA8c2V0
PgpAQCAtMTQ3LDcgKzE0Nyw2IEBAIHZvaWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUFu
aW1hdGUKIHsKICAgICBBU1NFUlQocGVyY2VudGFnZSA+PSAwICYmIHBlcmNlbnRhZ2UgPD0gMSk7
CiAgICAgQVNTRVJUKHJlc3VsdEVsZW1lbnQpOwotICAgIGJvb2wgaXNJbkZpcnN0SGFsZk9mQW5p
bWF0aW9uID0gcGVyY2VudGFnZSA8IDAuNWY7CiAgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlID0gdGhpcy0+YW5pbWF0aW9uTW9kZSgpOwogICAgIFNWR0VsZW1lbnQqIHRhcmdldEVsZW1l
bnQgPSB0aGlzLT50YXJnZXRFbGVtZW50KCk7CiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQpAQCAt
MTYzLDM5ICsxNjIsNiBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmltYXRl
CiAgICAgaWYgKHJlc3VsdHMtPm1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID09IEFuaW1hdGVkU3Ry
aW5nICYmIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlICE9IEFuaW1hdGVkU3RyaW5nKQogICAgICAg
ICByZXR1cm47CiAgICAgc3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgewotICAgIGNh
c2UgQW5pbWF0ZWRDb2xvcjogewotICAgICAgICBpZiAoYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1h
dGlvbikKLSAgICAgICAgICAgIG1fZnJvbUNvbG9yID0gcmVzdWx0cy0+bV9hbmltYXRlZENvbG9y
OwotCi0gICAgICAgIC8vIFJlcGxhY2UgJ2N1cnJlbnRDb2xvcicgLyAnaW5oZXJpdCcgYnkgdGhl
aXIgY29tcHV0ZWQgcHJvcGVydHkgdmFsdWVzLgotICAgICAgICBpZiAobV9mcm9tUHJvcGVydHlW
YWx1ZVR5cGUgPT0gQ3VycmVudENvbG9yVmFsdWUpCi0gICAgICAgICAgICBhZGp1c3RGb3JDdXJy
ZW50Q29sb3IodGFyZ2V0RWxlbWVudCwgbV9mcm9tQ29sb3IpOwotICAgICAgICBlbHNlIGlmICht
X2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZSA9PSBJbmhlcml0VmFsdWUpIHsKLSAgICAgICAgICAgIFN0
cmluZyBmcm9tQ29sb3JTdHJpbmc7Ci0gICAgICAgICAgICBhZGp1c3RGb3JJbmhlcml0YW5jZSh0
YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKCksIGZyb21Db2xvclN0cmluZyk7Ci0gICAgICAg
ICAgICBtX2Zyb21Db2xvciA9IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyhmcm9t
Q29sb3JTdHJpbmcpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChtX3RvUHJvcGVydHlWYWx1ZVR5
cGUgPT0gQ3VycmVudENvbG9yVmFsdWUpCi0gICAgICAgICAgICBhZGp1c3RGb3JDdXJyZW50Q29s
b3IodGFyZ2V0RWxlbWVudCwgbV90b0NvbG9yKTsKLSAgICAgICAgZWxzZSBpZiAobV90b1Byb3Bl
cnR5VmFsdWVUeXBlID09IEluaGVyaXRWYWx1ZSkgewotICAgICAgICAgICAgU3RyaW5nIHRvQ29s
b3JTdHJpbmc7Ci0gICAgICAgICAgICBhZGp1c3RGb3JJbmhlcml0YW5jZSh0YXJnZXRFbGVtZW50
LCBhdHRyaWJ1dGVOYW1lKCksIHRvQ29sb3JTdHJpbmcpOwotICAgICAgICAgICAgbV90b0NvbG9y
ID0gU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHRvQ29sb3JTdHJpbmcpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgQ29sb3IgY29sb3I7Ci0gICAgICAgIGlmIChjYWxjTW9kZSgpID09
IENhbGNNb2RlRGlzY3JldGUpCi0gICAgICAgICAgICBjb2xvciA9IGlzSW5GaXJzdEhhbGZPZkFu
aW1hdGlvbiA/IG1fZnJvbUNvbG9yIDogbV90b0NvbG9yOwotICAgICAgICBlbHNlCi0gICAgICAg
ICAgICBjb2xvciA9IENvbG9yRGlzdGFuY2UobV9mcm9tQ29sb3IsIG1fdG9Db2xvcikuc2NhbGVk
RGlzdGFuY2UocGVyY2VudGFnZSkuYWRkVG9Db2xvckFuZENsYW1wKG1fZnJvbUNvbG9yKTsKLQot
ICAgICAgICAvLyBGSVhNRTogQWNjdW11bGF0ZSBjb2xvcnMuCi0gICAgICAgIGlmIChpc0FkZGl0
aXZlKCkgJiYgYW5pbWF0aW9uTW9kZSAhPSBUb0FuaW1hdGlvbikKLSAgICAgICAgICAgIHJlc3Vs
dHMtPm1fYW5pbWF0ZWRDb2xvciA9IENvbG9yRGlzdGFuY2U6OmFkZENvbG9yc0FuZENsYW1wKHJl
c3VsdHMtPm1fYW5pbWF0ZWRDb2xvciwgY29sb3IpOwotICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZXN1bHRzLT5tX2FuaW1hdGVkQ29sb3IgPSBjb2xvcjsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KICAgICBjYXNlIEFuaW1hdGVkUGF0aDogewogICAgICAgICBpZiAoYW5pbWF0aW9uTW9kZSA9
PSBUb0FuaW1hdGlvbikgewogICAgICAgICAgICAgQVNTRVJUKHJlc3VsdHMtPm1fYW5pbWF0ZWRQ
YXRoUG9pbnRlcik7CkBAIC0yMzAsNiArMTk2LDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6
Y2FsY3VsYXRlQW5pbWF0ZQogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQW5pbWF0
ZWRBbmdsZToKKyAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0
aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CkBA
IC0yMzgsMTQgKzIwNSwxNCBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVBbmlt
YXRlCiAgICAgICAgIEFTU0VSVChyZXN1bHRzLT5tX2FuaW1hdGVkVHlwZSk7CiAgICAgICAgIC8v
IFRhcmdldCBlbGVtZW50IG1pZ2h0IGhhdmUgY2hhbmdlZC4KICAgICAgICAgbV9hbmltYXRvci0+
c2V0Q29udGV4dEVsZW1lbnQodGFyZ2V0RWxlbWVudCk7Ci0gICAgICAgIG1fYW5pbWF0b3ItPmNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUodGhpcywgcGVyY2VudGFnZSwgcmVwZWF0LCBtX2Zyb21UeXBl
LCBtX3RvVHlwZSwgcmVzdWx0cy0+bV9hbmltYXRlZFR5cGUsIG1fZnJvbVByb3BlcnR5VmFsdWVU
eXBlID09IEluaGVyaXRWYWx1ZSwgbV90b1Byb3BlcnR5VmFsdWVUeXBlID09IEluaGVyaXRWYWx1
ZSk7CisgICAgICAgIG1fYW5pbWF0b3ItPmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUocGVyY2VudGFn
ZSwgcmVwZWF0LCBtX2Zyb21UeXBlLCBtX3RvVHlwZSwgcmVzdWx0cy0+bV9hbmltYXRlZFR5cGUp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwog
ICAgIH0KICAgICBBU1NFUlQoYW5pbWF0aW9uTW9kZSA9PSBGcm9tVG9BbmltYXRpb24gfHwgYW5p
bWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbiB8fCBhbmltYXRpb25Nb2RlID09IFZhbHVlc0FuaW1h
dGlvbik7Ci0gICAgaWYgKChhbmltYXRpb25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiAmJiBwZXJj
ZW50YWdlID4gMC41ZikgfHwgYW5pbWF0aW9uTW9kZSA9PSBUb0FuaW1hdGlvbiB8fCBwZXJjZW50
YWdlID09IDEpCisgICAgaWYgKChhbmltYXRpb25Nb2RlID09IEZyb21Ub0FuaW1hdGlvbiAmJiBw
ZXJjZW50YWdlID4gMC41KSB8fCBhbmltYXRpb25Nb2RlID09IFRvQW5pbWF0aW9uIHx8IHBlcmNl
bnRhZ2UgPT0gMSkKICAgICAgICAgcmVzdWx0cy0+bV9hbmltYXRlZFN0cmluZyA9IG1fdG9TdHJp
bmc7CiAgICAgZWxzZQogICAgICAgICByZXN1bHRzLT5tX2FuaW1hdGVkU3RyaW5nID0gbV9mcm9t
U3RyaW5nOwpAQCAtMjY5LDM0ICsyMzYsMzQgQEAgc3RhdGljIGJvb2wgYXR0cmlidXRlVmFsdWVJ
c0N1cnJlbnRDb2xvcgogICAgIHJldHVybiB2YWx1ZSA9PSBjdXJyZW50Q29sb3I7CiB9CiAKK3Zv
aWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhjb25zdCBT
dHJpbmcmIGZyb20sIGNvbnN0IFN0cmluZyYgdG8pCit7CisgICAgU1ZHRWxlbWVudCogdGFyZ2V0
RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKKyAgICBBU1NFUlQodGFyZ2V0RWxlbWVu
dCk7CisKKyAgICBpZiAoaW5oZXJpdHNGcm9tUHJvcGVydHkodGFyZ2V0RWxlbWVudCwgYXR0cmli
dXRlTmFtZSgpLCBmcm9tKSkKKyAgICAgICAgbV9mcm9tUHJvcGVydHlWYWx1ZVR5cGUgPSBJbmhl
cml0VmFsdWU7CisgICAgaWYgKGluaGVyaXRzRnJvbVByb3BlcnR5KHRhcmdldEVsZW1lbnQsIGF0
dHJpYnV0ZU5hbWUoKSwgdG8pKQorICAgICAgICBtX3RvUHJvcGVydHlWYWx1ZVR5cGUgPSBJbmhl
cml0VmFsdWU7CisKKyAgICBpZiAobV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUgIT0gQW5pbWF0ZWRD
b2xvcikKKyAgICAgICAgcmV0dXJuOworICAgIAorICAgIGlmIChhdHRyaWJ1dGVWYWx1ZUlzQ3Vy
cmVudENvbG9yKGZyb20pKQorICAgICAgICBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZSA9IEN1cnJl
bnRDb2xvclZhbHVlOworICAgIGlmIChhdHRyaWJ1dGVWYWx1ZUlzQ3VycmVudENvbG9yKHRvKSkK
KyAgICAgICAgbV90b1Byb3BlcnR5VmFsdWVUeXBlID0gQ3VycmVudENvbG9yVmFsdWU7Cit9CisK
IGJvb2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhjb25zdCBT
dHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpCiB7CiAgICAgU1ZHRWxl
bWVudCogdGFyZ2V0RWxlbWVudCA9IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRh
cmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBtX2Zyb21Qcm9wZXJ0eVZh
bHVlVHlwZSA9IGluaGVyaXRzRnJvbVByb3BlcnR5KHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5h
bWUoKSwgZnJvbVN0cmluZykgPyBJbmhlcml0VmFsdWUgOiBSZWd1bGFyUHJvcGVydHlWYWx1ZTsK
LSAgICBtX3RvUHJvcGVydHlWYWx1ZVR5cGUgPSBpbmhlcml0c0Zyb21Qcm9wZXJ0eSh0YXJnZXRF
bGVtZW50LCBhdHRyaWJ1dGVOYW1lKCksIHRvU3RyaW5nKSA/IEluaGVyaXRWYWx1ZSA6IFJlZ3Vs
YXJQcm9wZXJ0eVZhbHVlOwogCiAgICAgLy8gRklYTUU6IE5lZWRzIG1vcmUgc29saWQgd2F5IGRl
dGVybWluZSB0YXJnZXQgYXR0cmlidXRlIHR5cGUuCiAgICAgbV9hbmltYXRlZEF0dHJpYnV0ZVR5
cGUgPSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUodGFyZ2V0RWxlbWVudCk7CiAgICAg
c3dpdGNoIChtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSkgewotICAgIGNhc2UgQW5pbWF0ZWRDb2xv
cjogewotICAgICAgICBib29sIGZyb21Jc0N1cnJlbnRDb2xvciA9IGF0dHJpYnV0ZVZhbHVlSXND
dXJyZW50Q29sb3IoZnJvbVN0cmluZyk7Ci0gICAgICAgIGJvb2wgdG9Jc0N1cnJlbnRDb2xvciA9
IGF0dHJpYnV0ZVZhbHVlSXNDdXJyZW50Q29sb3IodG9TdHJpbmcpOwotICAgICAgICBpZiAoZnJv
bUlzQ3VycmVudENvbG9yKQotICAgICAgICAgICAgbV9mcm9tUHJvcGVydHlWYWx1ZVR5cGUgPSBD
dXJyZW50Q29sb3JWYWx1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgbV9mcm9tQ29sb3Ig
PSBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJpbmcoZnJvbVN0cmluZyk7Ci0gICAgICAg
IGlmICh0b0lzQ3VycmVudENvbG9yKQotICAgICAgICAgICAgbV90b1Byb3BlcnR5VmFsdWVUeXBl
ID0gQ3VycmVudENvbG9yVmFsdWU7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIG1fdG9Db2xv
ciA9IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyh0b1N0cmluZyk7Ci0gICAgICAg
IGJvb2wgZnJvbUlzVmFsaWQgPSBtX2Zyb21Db2xvci5pc1ZhbGlkKCkgfHwgZnJvbUlzQ3VycmVu
dENvbG9yIHx8IG1fZnJvbVByb3BlcnR5VmFsdWVUeXBlID09IEluaGVyaXRWYWx1ZTsKLSAgICAg
ICAgYm9vbCB0b0lzVmFsaWQgPSBtX3RvQ29sb3IuaXNWYWxpZCgpIHx8IHRvSXNDdXJyZW50Q29s
b3IgfHwgbV90b1Byb3BlcnR5VmFsdWVUeXBlID09IEluaGVyaXRWYWx1ZTsKLSAgICAgICAgaWYg
KChmcm9tSXNWYWxpZCAmJiB0b0lzVmFsaWQpIHx8ICh0b0lzVmFsaWQgJiYgYW5pbWF0aW9uTW9k
ZSgpID09IFRvQW5pbWF0aW9uKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICBi
cmVhazsKLSAgICB9CiAgICAgY2FzZSBBbmltYXRlZFBhdGg6IHsKICAgICAgICAgU1ZHUGF0aFBh
cnNlckZhY3RvcnkqIGZhY3RvcnkgPSBTVkdQYXRoUGFyc2VyRmFjdG9yeTo6c2VsZigpOwogICAg
ICAgICBpZiAoZmFjdG9yeS0+YnVpbGRTVkdQYXRoQnl0ZVN0cmVhbUZyb21TdHJpbmcodG9TdHJp
bmcsIG1fdG9QYXRoLCBVbmFsdGVyZWRQYXJzaW5nKSkgewpAQCAtMzA5LDYgKzI3Niw3IEBAIGJv
b2wgU1ZHQW5pbWF0ZUVsZW1lbnQ6OmNhbGN1bGF0ZUZyb21BbmQKICAgICAgICAgYnJlYWs7CiAg
ICAgfQogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKKyAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CiAg
ICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgogICAgIGNh
c2UgQW5pbWF0ZWRQb2ludHM6CkBAIC0zMjksMzAgKzI5NywxMiBAQCBib29sIFNWR0FuaW1hdGVF
bGVtZW50OjpjYWxjdWxhdGVGcm9tQW5kCiAgICAgU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCA9
IHRoaXMtPnRhcmdldEVsZW1lbnQoKTsKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKLSAgICBtX2Zyb21Qcm9wZXJ0eVZhbHVlVHlwZSA9IGluaGVyaXRzRnJv
bVByb3BlcnR5KHRhcmdldEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUoKSwgZnJvbVN0cmluZykgPyBJ
bmhlcml0VmFsdWUgOiBSZWd1bGFyUHJvcGVydHlWYWx1ZTsKLSAgICBtX3RvUHJvcGVydHlWYWx1
ZVR5cGUgPSBpbmhlcml0c0Zyb21Qcm9wZXJ0eSh0YXJnZXRFbGVtZW50LCBhdHRyaWJ1dGVOYW1l
KCksIGJ5U3RyaW5nKSA/IEluaGVyaXRWYWx1ZSA6IFJlZ3VsYXJQcm9wZXJ0eVZhbHVlOwogCiAg
ICAgQVNTRVJUKCFoYXNUYWdOYW1lKFNWR05hbWVzOjpzZXRUYWcpKTsKICAgICBtX2FuaW1hdGVk
QXR0cmlidXRlVHlwZSA9IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0YXJnZXRFbGVt
ZW50KTsKICAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7Ci0gICAgY2FzZSBB
bmltYXRlZENvbG9yOiB7Ci0gICAgICAgIGJvb2wgZnJvbUlzQ3VycmVudENvbG9yID0gYXR0cmli
dXRlVmFsdWVJc0N1cnJlbnRDb2xvcihmcm9tU3RyaW5nKTsKLSAgICAgICAgYm9vbCBieUlzQ3Vy
cmVudENvbG9yID0gYXR0cmlidXRlVmFsdWVJc0N1cnJlbnRDb2xvcihieVN0cmluZyk7Ci0gICAg
ICAgIGlmIChmcm9tSXNDdXJyZW50Q29sb3IpCi0gICAgICAgICAgICBtX2Zyb21Qcm9wZXJ0eVZh
bHVlVHlwZSA9IEN1cnJlbnRDb2xvclZhbHVlOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBt
X2Zyb21Db2xvciA9IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyhmcm9tU3RyaW5n
KTsKLSAgICAgICAgaWYgKGJ5SXNDdXJyZW50Q29sb3IpCi0gICAgICAgICAgICBtX3RvUHJvcGVy
dHlWYWx1ZVR5cGUgPSBDdXJyZW50Q29sb3JWYWx1ZTsKLSAgICAgICAgZWxzZQotICAgICAgICAg
ICAgbV90b0NvbG9yID0gU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKGJ5U3RyaW5n
KTsKLSAgICAgICAgCi0gICAgICAgIGlmICgoIW1fZnJvbUNvbG9yLmlzVmFsaWQoKSAmJiAhZnJv
bUlzQ3VycmVudENvbG9yKQotICAgICAgICAgICAgfHwgKCFtX3RvQ29sb3IuaXNWYWxpZCgpICYm
ICFieUlzQ3VycmVudENvbG9yKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgfQogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKKyAgICBjYXNlIEFu
aW1hdGVkQ29sb3I6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVk
TnVtYmVyOgogICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CkBAIC0zNzAsMTYgKzMyMCw4IEBAIHZv
aWQgU1ZHQW5pbWF0ZUVsZW1lbnQ6OnJlc2V0VG9CYXNlVmFsdWUKICAgICBTVkdFbGVtZW50KiB0
YXJnZXRFbGVtZW50ID0gdGhpcy0+dGFyZ2V0RWxlbWVudCgpOwogICAgIEFTU0VSVCh0YXJnZXRF
bGVtZW50KTsKICAgICBtX2FuaW1hdGVkU3RyaW5nID0gYmFzZVN0cmluZzsKLSAgICBBbmltYXRl
ZEF0dHJpYnV0ZVR5cGUgbGFzdFR5cGUgPSBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZTsKICAgICBt
X2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGRldGVybWluZUFuaW1hdGVkQXR0cmlidXRlVHlwZSh0
YXJnZXRFbGVtZW50KTsKICAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7Ci0g
ICAgY2FzZSBBbmltYXRlZENvbG9yOgotICAgICAgICBtX2FuaW1hdGVkQ29sb3IgPSBiYXNlU3Ry
aW5nLmlzRW1wdHkoKSA/IENvbG9yKCkgOiBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJp
bmcoYmFzZVN0cmluZyk7Ci0gICAgICAgIGlmIChpc0NvbnRyaWJ1dGluZyhlbGFwc2VkKCkpKSB7
Ci0gICAgICAgICAgICBtX2FuaW1hdGVkQXR0cmlidXRlVHlwZSA9IGxhc3RUeXBlOwotICAgICAg
ICAgICAgcmV0dXJuOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0
ZWRQYXRoOiB7CiAgICAgICAgIG1fYW5pbWF0ZWRQYXRoLmNsZWFyKCk7CiAgICAgICAgIFNWR1Bh
dGhQYXJzZXJGYWN0b3J5KiBmYWN0b3J5ID0gU1ZHUGF0aFBhcnNlckZhY3Rvcnk6OnNlbGYoKTsK
QEAgLTM4OCw2ICszMzAsNyBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjpyZXNldFRvQmFzZVZh
bHVlCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgorICAg
IGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgogICAgIGNhc2Ug
QW5pbWF0ZWROdW1iZXI6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKQEAgLTQwOCw5ICszNTEs
NiBAQCB2b2lkIFNWR0FuaW1hdGVFbGVtZW50OjphcHBseVJlc3VsdHNUb1RhCiB7CiAgICAgU3Ry
aW5nIHZhbHVlVG9BcHBseTsKICAgICBzd2l0Y2ggKG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKSB7
Ci0gICAgY2FzZSBBbmltYXRlZENvbG9yOgotICAgICAgICB2YWx1ZVRvQXBwbHkgPSBtX2FuaW1h
dGVkQ29sb3Iuc2VyaWFsaXplZCgpOwotICAgICAgICBicmVhazsKICAgICBjYXNlIEFuaW1hdGVk
UGF0aDogewogICAgICAgICBpZiAoIW1fYW5pbWF0ZWRQYXRoUG9pbnRlciB8fCBtX2FuaW1hdGVk
UGF0aFBvaW50ZXItPmlzRW1wdHkoKSkKICAgICAgICAgICAgIHZhbHVlVG9BcHBseSA9IG1fYW5p
bWF0ZWRTdHJpbmc7CkBAIC00MjUsNiArMzY1LDcgQEAgdm9pZCBTVkdBbmltYXRlRWxlbWVudDo6
YXBwbHlSZXN1bHRzVG9UYQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBBbmltYXRl
ZEFuZ2xlOgorICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKICAgICBjYXNlIEFuaW1hdGVkTGVuZ3Ro
OgogICAgIGNhc2UgQW5pbWF0ZWROdW1iZXI6CiAgICAgY2FzZSBBbmltYXRlZFBvaW50czoKQEAg
LTQ0NSwyMSArMzg2LDEzIEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50OjpjYWxjdWxhdGVEaXN0
YW4KICAgICAgICAgcmV0dXJuIC0xOwogICAgIG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlID0gZGV0
ZXJtaW5lQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKHRhcmdldEVsZW1lbnQpOwogICAgIHN3aXRjaCAo
bV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUpIHsKLSAgICBjYXNlIEFuaW1hdGVkQ29sb3I6IHsKLSAg
ICAgICAgQ29sb3IgZnJvbSA9IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xvclN0cmluZyhmcm9t
U3RyaW5nKTsKLSAgICAgICAgaWYgKCFmcm9tLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJldHVy
biAtMTsKLSAgICAgICAgQ29sb3IgdG8gPSBTVkdDb2xvcjo6Y29sb3JGcm9tUkdCQ29sb3JTdHJp
bmcodG9TdHJpbmcpOwotICAgICAgICBpZiAoIXRvLmlzVmFsaWQoKSkKLSAgICAgICAgICAgIHJl
dHVybiAtMTsKLSAgICAgICAgcmV0dXJuIENvbG9yRGlzdGFuY2UoZnJvbSwgdG8pLmRpc3RhbmNl
KCk7Ci0gICAgfQogICAgIGNhc2UgQW5pbWF0ZWRBbmdsZToKKyAgICBjYXNlIEFuaW1hdGVkQ29s
b3I6CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICBjYXNlIEFuaW1hdGVkTnVtYmVyOgog
ICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6CiAgICAgY2FzZSBBbmltYXRlZFJlY3Q6Ci0gICAgICAg
IHJldHVybiBlbnN1cmVBbmltYXRvcigpLT5jYWxjdWxhdGVEaXN0YW5jZSh0aGlzLCBmcm9tU3Ry
aW5nLCB0b1N0cmluZyk7CisgICAgICAgIHJldHVybiBlbnN1cmVBbmltYXRvcigpLT5jYWxjdWxh
dGVEaXN0YW5jZShmcm9tU3RyaW5nLCB0b1N0cmluZyk7CiAgICAgZGVmYXVsdDoKICAgICAgICAg
YnJlYWs7CiAgICAgfQpAQCAtNDY5LDcgKzQwMiw3IEBAIGZsb2F0IFNWR0FuaW1hdGVFbGVtZW50
OjpjYWxjdWxhdGVEaXN0YW4KIFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKiBTVkdBbmltYXRlRWxl
bWVudDo6ZW5zdXJlQW5pbWF0b3IoKQogewogICAgIGlmICghbV9hbmltYXRvcikKLSAgICAgICAg
bV9hbmltYXRvciA9IFNWR0FuaW1hdG9yRmFjdG9yeTo6Y3JlYXRlKHRhcmdldEVsZW1lbnQoKSwg
bV9hbmltYXRlZEF0dHJpYnV0ZVR5cGUsIGF0dHJpYnV0ZU5hbWUoKSk7CisgICAgICAgIG1fYW5p
bWF0b3IgPSBTVkdBbmltYXRvckZhY3Rvcnk6OmNyZWF0ZSh0aGlzLCB0YXJnZXRFbGVtZW50KCks
IG1fYW5pbWF0ZWRBdHRyaWJ1dGVUeXBlKTsKICAgICByZXR1cm4gbV9hbmltYXRvci5nZXQoKTsK
IH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHJldmlzaW9u
IDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTIsNiArMiw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDUgTmlr
b2xhcyBaaW1tZXJtYW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIw
MDQsIDIwMDUgUm9iIEJ1aXMgPGJ1aXNAa2RlLm9yZz4KICAqIENvcHlyaWdodCAoQykgMjAwOCBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIFJlc2VhcmNo
IEluIE1vdGlvbiBMaW1pdGVkIDIwMTEuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogVGhp
cyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9v
cgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJh
bCBQdWJsaWMKQEAgLTI0LDcgKzI1LDYgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfQU5JTUFUSU9OKQogCi0jaW5jbHVkZSAiQ29sb3IuaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZFR5cGUuaCIKICNpbmNsdWRlICJTVkdBbmltYXRlZFR5cGVBbmltYXRvci5oIgogI2luY2x1ZGUg
IlNWR0FuaW1hdGlvbkVsZW1lbnQuaCIKQEAgLTMyLDYgKzMyLDE0IEBACiAjaW5jbHVkZSA8d3Rm
L093blB0ci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CisgICAgCisvLyBJZiB3ZSBoYXZlICdj
dXJyZW50Q29sb3InIG9yICdpbmhlcml0JyBhcyBhbmltYXRpb24gdmFsdWUsIHdlIG5lZWQgdG8g
Z3JhYiB0aGUgdmFsdWUgZHVyaW5nIHRoZSBhbmltYXRpb24KKy8vIHNpbmNlIHRoZSB2YWx1ZSBj
YW4gYmUgYW5pbWF0ZWQgaXRzZWxmLgorZW51bSBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIHsK
KyAgICBSZWd1bGFyUHJvcGVydHlWYWx1ZSwKKyAgICBDdXJyZW50Q29sb3JWYWx1ZSwKKyAgICBJ
bmhlcml0VmFsdWUKK307CiAKIGNsYXNzIFNWR0FuaW1hdGVFbGVtZW50IDogcHVibGljIFNWR0Fu
aW1hdGlvbkVsZW1lbnQgewogcHVibGljOgpAQCAtNDMsNiArNTEsMTAgQEAgcHVibGljOgogICAg
IHZvaWQgYWRqdXN0Rm9ySW5oZXJpdGFuY2UoU1ZHRWxlbWVudCogdGFyZ2V0RWxlbWVudCwgY29u
c3QgUXVhbGlmaWVkTmFtZSYsIFN0cmluZyYgdmFsdWUpOwogICAgIAogICAgIEFuaW1hdGVkQXR0
cmlidXRlVHlwZSBkZXRlcm1pbmVBbmltYXRlZEF0dHJpYnV0ZVR5cGUoU1ZHRWxlbWVudCopIGNv
bnN0OworICAgIHZvaWQgZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGNvbnN0IFN0cmluZyYs
IGNvbnN0IFN0cmluZyYpOworICAgIAorICAgIEFuaW1hdGVkUHJvcGVydHlWYWx1ZVR5cGUgZnJv
bVByb3BlcnR5VmFsdWVUeXBlKCkgeyByZXR1cm4gbV9mcm9tUHJvcGVydHlWYWx1ZVR5cGU7IH0K
KyAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIHRvUHJvcGVydHlWYWx1ZVR5cGUoKSB7IHJl
dHVybiBtX3RvUHJvcGVydHlWYWx1ZVR5cGU7IH0KIAogcHJvdGVjdGVkOgogICAgIFNWR0FuaW1h
dGVFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCopOwpAQCAtNTYsMjMgKzY4
LDEyIEBAIHByb3RlY3RlZDoKIAogcHJpdmF0ZToKICAgICBTVkdBbmltYXRlZFR5cGVBbmltYXRv
ciogZW5zdXJlQW5pbWF0b3IoKTsKLQotICAgIC8vIElmIHdlIGhhdmUgJ2N1cnJlbnRDb2xvcicg
b3IgJ2luaGVyaXQnIGFzIGFuaW1hdGlvbiB2YWx1ZSwgd2UgbmVlZCB0byBncmFiIHRoZSB2YWx1
ZSBkdXJpbmcgdGhlIGFuaW1hdGlvbgotICAgIC8vIHNpbmNlIHRoZSB2YWx1ZSBjYW4gYmUgYW5p
bWF0ZWQgaXRzZWxmLgotICAgIGVudW0gQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSB7Ci0gICAg
ICAgIFJlZ3VsYXJQcm9wZXJ0eVZhbHVlLAotICAgICAgICBDdXJyZW50Q29sb3JWYWx1ZSwKLSAg
ICAgICAgSW5oZXJpdFZhbHVlCi0gICAgfTsKICAgICAKICAgICB2aXJ0dWFsIGJvb2wgaGFzVmFs
aWRBdHRyaWJ1dGVUeXBlKCkgY29uc3Q7CiAgICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIG1fYW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlOwogCiAgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBtX2Zy
b21Qcm9wZXJ0eVZhbHVlVHlwZTsKICAgICBBbmltYXRlZFByb3BlcnR5VmFsdWVUeXBlIG1fdG9Q
cm9wZXJ0eVZhbHVlVHlwZTsKLSAgICBDb2xvciBtX2Zyb21Db2xvcjsKLSAgICBDb2xvciBtX3Rv
Q29sb3I7Ci0gICAgQ29sb3IgbV9hbmltYXRlZENvbG9yOwogICAgIFN0cmluZyBtX2Zyb21TdHJp
bmc7CiAgICAgU3RyaW5nIG1fdG9TdHJpbmc7CiAgICAgU3RyaW5nIG1fYW5pbWF0ZWRTdHJpbmc7
CkBAIC05Miw1ICs5MywzIEBAIHByaXZhdGU6CiAKICNlbmRpZiAvLyBFTkFCTEUoU1ZHKQogI2Vu
ZGlmIC8vIFNWR0FuaW1hdGVFbGVtZW50X2gKLQotLy8gdmltOnRzPTQ6bm9ldApJbmRleDogU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5nbGUuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xlLmNwcAkocmV2aXNpb24gODk1ODApCisrKyBT
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRBbmdsZS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIyLDEwICsyMiwxMiBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9O
KQogI2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKIAorI2luY2x1ZGUgIlNWR0FuaW1hdGVF
bGVtZW50LmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yOjpTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IoU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQs
IGNvbnN0IFF1YWxpZmllZE5hbWUmKQotICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5p
bWF0ZWRBbmdsZSwgY29udGV4dEVsZW1lbnQpCitTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OlNW
R0FuaW1hdGVkQW5nbGVBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVt
ZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCkKKyAgICA6IFNWR0FuaW1hdGVkVHlwZUFu
aW1hdG9yKEFuaW1hdGVkQW5nbGUsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQog
ewogfQogCkBAIC00OSw2ICs1MSwxMSBAQCBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZH
QW5pbWF0ZWRBCiAKIHZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVGcm9t
QW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRv
U3RyaW5nKQogeworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKKyAgICBBU1NFUlQobV9h
bmltYXRpb25FbGVtZW50KTsKKyAgICBTVkdBbmltYXRlRWxlbWVudCogYW5pbWF0aW9uRWxlbWVu
dCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50KTsK
KyAgICBhbmltYXRpb25FbGVtZW50LT5kZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMoZnJvbVN0
cmluZywgdG9TdHJpbmcpOworCiAgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0
cmluZyk7CiAgICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKIH0KQEAgLTU2
LDYgKzYzLDkgQEAgdm9pZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZQogdm9p
ZCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25Q
dHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBj
b25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCiB7CiAgICAg
QVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQp
OworICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHQW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIGFuaW1hdGlvbkVs
ZW1lbnQtPmRldGVybWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCBieVN0cmluZyk7
CiAgICAgCiAgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CiAgICAg
dG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGJ5U3RyaW5nKTsKQEAgLTY1LDEzICs3NSwxMiBAQCB2
b2lkIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3VsYXRlCiAgICAgdG9BbmdsZS5zZXRW
YWx1ZSh0b0FuZ2xlLnZhbHVlKCkgKyBmcm9tQW5nbGUudmFsdWUoKSk7CiB9CiAKLXZvaWQgU1ZH
QW5pbWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKFNWR1NNSUxFbGVt
ZW50KiBzbWlsRWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBP
d25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRv
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyb21Qcm9wZXJ0eUluaGVy
aXRzLCBib29sIHRvUHJvcGVydHlJbmhlcml0cykKK3ZvaWQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJl
cGVhdENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkKQogewotICAgIEFT
U0VSVChzbWlsRWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAg
QVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRp
b25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihzbWlsRWxlbWVudCk7
CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAgCiAgICAgQW5pbWF0
aW9uTW9kZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgp
OwogICAgIC8vIFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlvbnMgZnJvbSB0aGUgbG93ZXIg
cHJpb3JpdHkgYW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4KQEAgLTg0LDEyICs5MywxMiBA
QCB2b2lkIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcjo6Y2FsY3VsYXRlCiAgICAgZmxvYXQgZnJv
bUFuZ2xlID0gZnJvbS0+YW5nbGUoKS52YWx1ZSgpOwogICAgIGZsb2F0IHRvQW5nbGUgPSB0by0+
YW5nbGUoKS52YWx1ZSgpOwogICAgIAotICAgIGlmIChmcm9tUHJvcGVydHlJbmhlcml0cykgewor
ICAgIGlmIChhbmltYXRpb25FbGVtZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSA9PSBJbmhl
cml0VmFsdWUpIHsKICAgICAgICAgU3RyaW5nIGZyb21BbmdsZVN0cmluZzsKICAgICAgICAgYW5p
bWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9ySW5oZXJpdGFuY2UobV9jb250ZXh0RWxlbWVudCwgYW5p
bWF0aW9uRWxlbWVudC0+YXR0cmlidXRlTmFtZSgpLCBmcm9tQW5nbGVTdHJpbmcpOwogICAgICAg
ICBmcm9tQW5nbGUgPSBzaGFyZWRTVkdBbmdsZShmcm9tQW5nbGVTdHJpbmcpLnZhbHVlKCk7CiAg
ICAgfQotICAgIGlmICh0b1Byb3BlcnR5SW5oZXJpdHMpIHsKKyAgICBpZiAoYW5pbWF0aW9uRWxl
bWVudC0+dG9Qcm9wZXJ0eVZhbHVlVHlwZSgpID09IEluaGVyaXRWYWx1ZSkgewogICAgICAgICBT
dHJpbmcgdG9BbmdsZVN0cmluZzsKICAgICAgICAgYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9y
SW5oZXJpdGFuY2UobV9jb250ZXh0RWxlbWVudCwgYW5pbWF0aW9uRWxlbWVudC0+YXR0cmlidXRl
TmFtZSgpLCB0b0FuZ2xlU3RyaW5nKTsKICAgICAgICAgdG9BbmdsZSA9IHNoYXJlZFNWR0FuZ2xl
KHRvQW5nbGVTdHJpbmcpLnZhbHVlKCk7IApAQCAtMTEyLDcgKzEyMSw3IEBAIHZvaWQgU1ZHQW5p
bWF0ZWRBbmdsZUFuaW1hdG9yOjpjYWxjdWxhdGUKICAgICAgICAgYW5pbWF0ZWRTVkdBbmdsZS5z
ZXRWYWx1ZShudW1iZXIpOwogfQogCi1mbG9hdCBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3I6OmNh
bGN1bGF0ZURpc3RhbmNlKFNWR1NNSUxFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQorZmxvYXQgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1hdG9y
OjpjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgdG9TdHJpbmcpCiB7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgU1ZHQW5nbGUg
ZnJvbSA9IFNWR0FuZ2xlKCk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRB
bmdsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZEFuZ2xl
LmgJKHJldmlzaW9uIDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkQW5n
bGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsOCArMjIsOCBAQAogCiAjaWYgRU5BQkxFKFNWRykK
ICNpbmNsdWRlICJTVkdBbmdsZS5oIgotI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdBbmlt
YXRlZFR5cGVBbmltYXRvci5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTM3LDIwICsz
NywyMSBAQCBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkQW5nCiBERUZJTkVf
QU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIFNWR0RPTUF0dHJpYnV0
ZUlkZW50aWZpZXIsIFNWR0FuaW1hdGVkQW5nbGUsIFNWR0FuZ2xlLCBVcHBlclByb3BlcnR5LCBM
b3dlclByb3BlcnR5KQogCiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCitjbGFzcyBTVkdBbmlt
YXRpb25FbGVtZW50OworCiBjbGFzcyBTVkdBbmltYXRlZEFuZ2xlQW5pbWF0b3IgOiBwdWJsaWMg
U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogICAgIAogcHVibGljOgotICAgIFNWR0FuaW1hdGVk
QW5nbGVBbmltYXRvcihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgIFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50
KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcigp
IHsgfQogICAgIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IGNvbnN0
cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVl
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3Ry
aW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKICAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRl
RnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNv
bnN0IFN0cmluZyYgYnlTdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVBbmltYXRl
ZFZhbHVlKFNWR1NNSUxFbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0
Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFs
dWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJvbVByb3BlcnR5SW5oZXJpdHMsIGJv
b2wgdG9Qcm9wZXJ0eUluaGVyaXRzKTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3Rh
bmNlKFNWR1NNSUxFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShm
bG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVl
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIGFuaW1hdGVkVmFsdWUpOworICAgIHZpcnR1YWwgZmxvYXQgY2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKIH07CiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlZENvbG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRDb2xvci5jcHAJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0
ZWRDb2xvci5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogQ29weXJp
Z2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rpb24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlz
dHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdO
VSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUg
RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGlj
ZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlz
IGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1
bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVk
IHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNl
bnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEg
Y29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcg
d2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3Jp
dGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGlu
IFN0cmVldCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZH
X0FOSU1BVElPTikKKyNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9yLmgiCisKKyNpbmNsdWRlICJD
b2xvckRpc3RhbmNlLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZUVsZW1lbnQuaCIKKyNpbmNsdWRl
ICJTVkdDb2xvci5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1NWR0FuaW1hdGVkQ29sb3JB
bmltYXRvcjo6U1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFu
aW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgIDogU1ZHQW5p
bWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWRDb2xvciwgYW5pbWF0aW9uRWxlbWVudCwgY29udGV4
dEVsZW1lbnQpCit7Cit9CisKK1Bhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRl
ZENvbG9yQW5pbWF0b3I6OmNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcp
Cit7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbXRlZFR5cGUgPSBTVkdBbmltYXRl
ZFR5cGU6OmNyZWF0ZUNvbG9yKG5ldyBDb2xvcik7CisgICAgYW5pbXRlZFR5cGUtPmNvbG9yKCkg
PSBzdHJpbmcuaXNFbXB0eSgpID8gQ29sb3IoKSA6IFNWR0NvbG9yOjpjb2xvckZyb21SR0JDb2xv
clN0cmluZyhzdHJpbmcpOworICAgIHJldHVybiBhbmltdGVkVHlwZS5yZWxlYXNlKCk7Cit9CisK
K3ZvaWQgU1ZHQW5pbWF0ZWRDb2xvckFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMo
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0
bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQorewor
ICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKKyAgICBBU1NFUlQobV9hbmltYXRpb25FbGVt
ZW50KTsKKyAgICBTVkdBbmltYXRlRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19j
YXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBhbmltYXRp
b25FbGVtZW50LT5kZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMoZnJvbVN0cmluZywgdG9TdHJp
bmcpOworCisgICAgZnJvbSA9IGNvbnN0cnVjdEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CisgICAg
dG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKHRvU3RyaW5nKTsKK30KKwordm9pZCBTVkdBbmltYXRl
ZENvbG9yQW5pbWF0b3I6OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcm
IGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpCit7CisgICAgQVNTRVJUKG1fY29u
dGV4dEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIFNWR0Fu
aW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVs
ZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVy
bWluZVByb3BlcnR5VmFsdWVUeXBlcyhmcm9tU3RyaW5nLCBieVN0cmluZyk7CisKKyAgICBmcm9t
ID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKKyAgICB0byA9IGNvbnN0cnVjdEZy
b21TdHJpbmcoYnlTdHJpbmcpOworfQorCit2b2lkIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6
Y2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxT
VkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZCkKK3sKKyAgICBBU1NFUlQobV9hbmltYXRpb25F
bGVtZW50KTsKKyAgICBBU1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZUVs
ZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+
KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgCisgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25N
b2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpOworICAgIENvbG9yJiBmcm9t
Q29sb3IgPSBmcm9tLT5jb2xvcigpOworICAgIENvbG9yJiB0b0NvbG9yID0gdG8tPmNvbG9yKCk7
CisgICAgQ29sb3ImIGFuaW1hdGVkQ29sb3IgPSBhbmltYXRlZC0+Y29sb3IoKTsKKyAgICAvLyBU
byBhbmltYXRpb24gdXNlcyBjb250cmlidXRpb25zIGZyb20gdGhlIGxvd2VyIHByaW9yaXR5IGFu
aW1hdGlvbnMgYXMgdGhlIGJhc2UgdmFsdWUuCisgICAgaWYgKGFuaW1hdGlvbk1vZGUgPT0gVG9B
bmltYXRpb24pCisgICAgICAgIGZyb21Db2xvciA9IGFuaW1hdGVkQ29sb3I7CisgICAgCisgICAg
Ly8gUmVwbGFjZSAnY3VycmVudENvbG9yJyAvICdpbmhlcml0JyBieSB0aGVpciBjb21wdXRlZCBw
cm9wZXJ0eSB2YWx1ZXMuCisgICAgQW5pbWF0ZWRQcm9wZXJ0eVZhbHVlVHlwZSBmcm9tUHJvcGVy
dHlWYWx1ZVR5cGUgPSBhbmltYXRpb25FbGVtZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKTsK
KyAgICBpZiAoZnJvbVByb3BlcnR5VmFsdWVUeXBlID09IEN1cnJlbnRDb2xvclZhbHVlKQorICAg
ICAgICBhbmltYXRpb25FbGVtZW50LT5hZGp1c3RGb3JDdXJyZW50Q29sb3IobV9jb250ZXh0RWxl
bWVudCwgZnJvbUNvbG9yKTsKKyAgICBlbHNlIGlmIChmcm9tUHJvcGVydHlWYWx1ZVR5cGUgPT0g
SW5oZXJpdFZhbHVlKSB7CisgICAgICAgIFN0cmluZyBmcm9tQ29sb3JTdHJpbmc7CisgICAgICAg
IGFuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlKG1fY29udGV4dEVsZW1lbnQs
IGFuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSwgZnJvbUNvbG9yU3RyaW5nKTsKKyAg
ICAgICAgZnJvbUNvbG9yID0gU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKGZyb21D
b2xvclN0cmluZyk7CisgICAgfQorICAgIEFuaW1hdGVkUHJvcGVydHlWYWx1ZVR5cGUgdG9Qcm9w
ZXJ0eVZhbHVlVHlwZSA9IGFuaW1hdGlvbkVsZW1lbnQtPnRvUHJvcGVydHlWYWx1ZVR5cGUoKTsK
KyAgICBpZiAodG9Qcm9wZXJ0eVZhbHVlVHlwZSA9PSBDdXJyZW50Q29sb3JWYWx1ZSkKKyAgICAg
ICAgYW5pbWF0aW9uRWxlbWVudC0+YWRqdXN0Rm9yQ3VycmVudENvbG9yKG1fY29udGV4dEVsZW1l
bnQsIHRvQ29sb3IpOworICAgIGVsc2UgaWYgKHRvUHJvcGVydHlWYWx1ZVR5cGUgPT0gSW5oZXJp
dFZhbHVlKSB7CisgICAgICAgIFN0cmluZyB0b0NvbG9yU3RyaW5nOworICAgICAgICBhbmltYXRp
b25FbGVtZW50LT5hZGp1c3RGb3JJbmhlcml0YW5jZShtX2NvbnRleHRFbGVtZW50LCBhbmltYXRp
b25FbGVtZW50LT5hdHRyaWJ1dGVOYW1lKCksIHRvQ29sb3JTdHJpbmcpOworICAgICAgICB0b0Nv
bG9yID0gU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHRvQ29sb3JTdHJpbmcpOwor
ICAgIH0KKyAgICAKKyAgICBDb2xvciBjb2xvcjsKKyAgICBpZiAoYW5pbWF0aW9uRWxlbWVudC0+
Y2FsY01vZGUoKSA9PSBDYWxjTW9kZURpc2NyZXRlKQorICAgICAgICBjb2xvciA9IHBlcmNlbnRh
Z2UgPCAwLjUgPyBmcm9tQ29sb3IgOiB0b0NvbG9yOworICAgIGVsc2UKKyAgICAgICAgY29sb3Ig
PSBDb2xvckRpc3RhbmNlKGZyb21Db2xvciwgdG9Db2xvcikuc2NhbGVkRGlzdGFuY2UocGVyY2Vu
dGFnZSkuYWRkVG9Db2xvckFuZENsYW1wKGZyb21Db2xvcik7CisgICAgCisgICAgLy8gRklYTUU6
IEFjY3VtdWxhdGUgY29sb3JzLgorICAgIGlmIChhbmltYXRpb25FbGVtZW50LT5pc0FkZGl0aXZl
KCkgJiYgYW5pbWF0aW9uTW9kZSAhPSBUb0FuaW1hdGlvbikKKyAgICAgICAgYW5pbWF0ZWRDb2xv
ciA9IENvbG9yRGlzdGFuY2U6OmFkZENvbG9yc0FuZENsYW1wKGFuaW1hdGVkQ29sb3IsIGNvbG9y
KTsKKyAgICBlbHNlCisgICAgICAgIGFuaW1hdGVkQ29sb3IgPSBjb2xvcjsKKyAgICByZXR1cm47
Cit9CisKK2Zsb2F0IFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcjo6Y2FsY3VsYXRlRGlzdGFuY2Uo
Y29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQoreworICAg
IEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKKyAgICBDb2xvciBmcm9tID0gU1ZHQ29sb3I6OmNv
bG9yRnJvbVJHQkNvbG9yU3RyaW5nKGZyb21TdHJpbmcpOworICAgIGlmICghZnJvbS5pc1ZhbGlk
KCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBDb2xvciB0byA9IFNWR0NvbG9yOjpjb2xvckZy
b21SR0JDb2xvclN0cmluZyh0b1N0cmluZyk7CisgICAgaWYgKCF0by5pc1ZhbGlkKCkpCisgICAg
ICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gQ29sb3JEaXN0YW5jZShmcm9tLCB0bykuZGlzdGFu
Y2UoKTsKK30KKworfQorCisjZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklN
QVRJT04pCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZENvbG9yLmgJKHJldmlzaW9u
IDApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRDb2xvci5oCShyZXZpc2lvbiAw
KQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogQ29weXJpZ2h0IChDKSBSZXNlYXJjaCBJbiBNb3Rp
b24gTGltaXRlZCAyMDExLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgbGlicmFy
eSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1v
ZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGlj
CisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9u
OyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9u
KSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQg
aW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBX
QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFO
VEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdO
VQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisg
KgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0
aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KKyAqIHRoZSBGcmVlIFNvZnR3
YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisg
KiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIFNWR0FuaW1hdGVk
Q29sb3JfaAorI2RlZmluZSBTVkdBbmltYXRlZENvbG9yX2gKKworI2lmIEVOQUJMRShTVkcpICYm
IEVOQUJMRShTVkdfQU5JTUFUSU9OKQorI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9y
LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKyAgICAKK2NsYXNzIFNWR0FuaW1hdGlvbkVsZW1l
bnQ7CisKK2NsYXNzIFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvciA6IHB1YmxpYyBTVkdBbmltYXRl
ZFR5cGVBbmltYXRvciB7CisgICAgCitwdWJsaWM6CisgICAgU1ZHQW5pbWF0ZWRDb2xvckFuaW1h
dG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CisgICAgdmlydHVhbCB+U1ZH
QW5pbWF0ZWRDb2xvckFuaW1hdG9yKCkgeyB9CisgICAgCisgICAgdmlydHVhbCBQYXNzT3duUHRy
PFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsKKyAg
ICAKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVl
LCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYgdG9TdHJpbmcpOworICAg
IHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kQnlWYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZyk7CisgICAgdmlydHVh
bCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2
aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZyk7Cit9OworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYgLy8gRU5BQkxFKFNWRykgJiYgRU5BQkxFKFNWR19BTklNQVRJT04pCisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTGVuZ3RoLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguY3BwCShyZXZpc2lvbiA4
OTU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZExlbmd0aC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyLDExICsyMiwxMyBAQAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShT
VkdfQU5JTUFUSU9OKQogI2luY2x1ZGUgIlNWR0FuaW1hdGVkTGVuZ3RoLmgiCiAKKyNpbmNsdWRl
ICJTVkdBbmltYXRlRWxlbWVudC5oIgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0FuaW1h
dGVkTGVuZ3RoQW5pbWF0b3I6OlNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoU1ZHRWxlbWVudCog
Y29udGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCi0gICAg
OiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZExlbmd0aCwgY29udGV4dEVsZW1lbnQp
Ci0gICAgLCBtX2xlbmd0aE1vZGUoU1ZHTGVuZ3RoOjpsZW5ndGhNb2RlRm9yQW5pbWF0ZWRMZW5n
dGhBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSkpCitTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpT
VkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVs
ZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAgIDogU1ZHQW5pbWF0ZWRUeXBl
QW5pbWF0b3IoQW5pbWF0ZWRMZW5ndGgsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50
KQorICAgICwgbV9sZW5ndGhNb2RlKFNWR0xlbmd0aDo6bGVuZ3RoTW9kZUZvckFuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlKGFuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSkpCiB7CiB9CiAK
QEAgLTQ2LDYgKzQ4LDExIEBAIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRl
ZEwKIAogdm9pZCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVGcm9tQW5kVG9W
YWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiB0bywgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5n
KQogeworICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKKyAgICBBU1NFUlQobV9hbmltYXRp
b25FbGVtZW50KTsKKyAgICBTVkdBbmltYXRlRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCA9IHN0
YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50KTsKKyAgICBh
bmltYXRpb25FbGVtZW50LT5kZXRlcm1pbmVQcm9wZXJ0eVZhbHVlVHlwZXMoZnJvbVN0cmluZywg
dG9TdHJpbmcpOworICAgIAogICAgIGZyb20gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGZyb21TdHJp
bmcpOwogICAgIHRvID0gY29uc3RydWN0RnJvbVN0cmluZyh0b1N0cmluZyk7CiB9CkBAIC01Myw2
ICs2MCw5IEBAIHZvaWQgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXQKIHZvaWQg
U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiBieVN0cmluZykKIHsKICAgICBB
U1NFUlQobV9jb250ZXh0RWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7
CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxT
VkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgYW5pbWF0aW9uRWxl
bWVudC0+ZGV0ZXJtaW5lUHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIGJ5U3RyaW5nKTsK
ICAgICAKICAgICBmcm9tID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKICAgICB0
byA9IGNvbnN0cnVjdEZyb21TdHJpbmcoYnlTdHJpbmcpOwpAQCAtNjQsMTMgKzc0LDEyIEBAIHZv
aWQgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcjo6Y2FsY3VsYXQKICAgICBBU1NFUlQoIWVjKTsK
IH0KIAotdm9pZCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZh
bHVlKFNWR1NNSUxFbGVtZW50KiBzbWlsRWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWdu
ZWQgcmVwZWF0Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wg
ZnJvbVByb3BlcnR5SW5oZXJpdHMsIGJvb2wgdG9Qcm9wZXJ0eUluaGVyaXRzKQordm9pZCBTVkdB
bmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVlKGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBh
bmltYXRlZCkKIHsKLSAgICBBU1NFUlQoc21pbEVsZW1lbnQpOworICAgIEFTU0VSVChtX2FuaW1h
dGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsKLSAgICBTVkdBbmlt
YXRlRWxlbWVudCogYW5pbWF0aW9uRWxlbWVudCA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVt
ZW50Kj4oc21pbEVsZW1lbnQpOworICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVt
ZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlvbkVsZW1lbnQp
OwogICAgIAogICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSA9IGFuaW1hdGlvbkVsZW1l
bnQtPmFuaW1hdGlvbk1vZGUoKTsKICAgICAvLyBUbyBhbmltYXRpb24gdXNlcyBjb250cmlidXRp
b25zIGZyb20gdGhlIGxvd2VyIHByaW9yaXR5IGFuaW1hdGlvbnMgYXMgdGhlIGJhc2UgdmFsdWUu
CkBAIC04MywxMiArOTIsMTIgQEAgdm9pZCBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yOjpjYWxj
dWxhdAogICAgIGZsb2F0IGZyb21MZW5ndGggPSBmcm9tLT5sZW5ndGgoKS52YWx1ZShtX2NvbnRl
eHRFbGVtZW50KTsKICAgICBmbG9hdCB0b0xlbmd0aCA9IHRvLT5sZW5ndGgoKS52YWx1ZShtX2Nv
bnRleHRFbGVtZW50KTsKICAgICAKLSAgICBpZiAoZnJvbVByb3BlcnR5SW5oZXJpdHMpIHsKKyAg
ICBpZiAoYW5pbWF0aW9uRWxlbWVudC0+ZnJvbVByb3BlcnR5VmFsdWVUeXBlKCkgPT0gSW5oZXJp
dFZhbHVlKSB7CiAgICAgICAgIFN0cmluZyBmcm9tTGVuZ3RoU3RyaW5nOwogICAgICAgICBhbmlt
YXRpb25FbGVtZW50LT5hZGp1c3RGb3JJbmhlcml0YW5jZShtX2NvbnRleHRFbGVtZW50LCBhbmlt
YXRpb25FbGVtZW50LT5hdHRyaWJ1dGVOYW1lKCksIGZyb21MZW5ndGhTdHJpbmcpOwogICAgICAg
ICBmcm9tTGVuZ3RoID0gc2hhcmVkU1ZHTGVuZ3RoKG1fbGVuZ3RoTW9kZSwgZnJvbUxlbmd0aFN0
cmluZykudmFsdWUobV9jb250ZXh0RWxlbWVudCk7CiAgICAgfQotICAgIGlmICh0b1Byb3BlcnR5
SW5oZXJpdHMpIHsKKyAgICBpZiAoYW5pbWF0aW9uRWxlbWVudC0+dG9Qcm9wZXJ0eVZhbHVlVHlw
ZSgpID09IEluaGVyaXRWYWx1ZSkgewogICAgICAgICBTdHJpbmcgdG9MZW5ndGhTdHJpbmc7CiAg
ICAgICAgIGFuaW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlKG1fY29udGV4dEVs
ZW1lbnQsIGFuaW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSwgdG9MZW5ndGhTdHJpbmcp
OwogICAgICAgICB0b0xlbmd0aCA9IHNoYXJlZFNWR0xlbmd0aChtX2xlbmd0aE1vZGUsIHRvTGVu
Z3RoU3RyaW5nKS52YWx1ZShtX2NvbnRleHRFbGVtZW50KTsgCkBAIC0xMTMsMTEgKzEyMiwxMSBA
QCB2b2lkIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1bGF0CiAgICAgQVNTRVJUKCFl
Yyk7CiB9CiAKLWZsb2F0IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3I6OmNhbGN1bGF0ZURpc3Rh
bmNlKFNWR1NNSUxFbGVtZW50KiBzbWlsRWxlbWVudCwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKQorZmxvYXQgU1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRv
cjo6Y2FsY3VsYXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHRvU3RyaW5nKQogewotICAgIEFTU0VSVChzbWlsRWxlbWVudCk7CisgICAgQVNTRVJUKG1f
YW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAgIFNW
R0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0
ZUVsZW1lbnQqPihzbWlsRWxlbWVudCk7ICAgIAorICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmlt
YXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1hdGlv
bkVsZW1lbnQpOyAgICAKICAgICBTVkdMZW5ndGhNb2RlIGxlbmd0aE1vZGUgPSBTVkdMZW5ndGg6
Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhbmltYXRpb25FbGVtZW50LT5h
dHRyaWJ1dGVOYW1lKCkpOwogICAgIFNWR0xlbmd0aCBmcm9tID0gU1ZHTGVuZ3RoKGxlbmd0aE1v
ZGUsIGZyb21TdHJpbmcpOwogICAgIFNWR0xlbmd0aCB0byA9IFNWR0xlbmd0aChsZW5ndGhNb2Rl
LCB0b1N0cmluZyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGgu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGguaAko
cmV2aXNpb24gODk1ODApCisrKyBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRMZW5ndGgu
aAkod29ya2luZyBjb3B5KQpAQCAtMjEsOCArMjEsOCBAQAogI2RlZmluZSBTVkdBbmltYXRlZExl
bmd0aF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50Lmgi
CiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eVRlYXJPZmYuaCIKKyNpbmNsdWRlICJTVkdB
bmltYXRlZFR5cGVBbmltYXRvci5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CkBAIC0zNywyMCArMzcsMjEgQEAgREVDTEFSRV9BTklNQVRFRF9QUk9QRVJU
WShTVkdBbmltYXRlZExlbgogREVGSU5FX0FOSU1BVEVEX1BST1BFUlRZKE93bmVyVHlwZSwgRE9N
QXR0cmlidXRlLCBET01BdHRyaWJ1dGUubG9jYWxOYW1lKCksIFNWR0FuaW1hdGVkTGVuZ3RoLCBT
VkdMZW5ndGgsIFVwcGVyUHJvcGVydHksIExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZH
X0FOSU1BVElPTikKK2NsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CisKIGNsYXNzIFNWR0FuaW1h
dGVkTGVuZ3RoQW5pbWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogICAg
IAogcHVibGljOgotICAgIFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoU1ZHRWxlbWVudCogY29u
dGV4dEVsZW1lbnQsIGNvbnN0IFF1YWxpZmllZE5hbWUmKTsKKyAgICBTVkdBbmltYXRlZExlbmd0
aEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVh
bCB+U1ZHQW5pbWF0ZWRMZW5ndGhBbmltYXRvcigpIHsgfQogCiAgICAgdmlydHVhbCBQYXNzT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gY29uc3RydWN0RnJvbVN0cmluZyhjb25zdCBTdHJpbmcmKTsK
IAogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUs
IGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAg
dmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRU
eXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3Qg
U3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKLSAgICB2aXJ0dWFs
IHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShTVkdTTUlMRWxlbWVudCosIGZsb2F0IHBlcmNl
bnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxT
VkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0
ZWRWYWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZy
b21Qcm9wZXJ0eUluaGVyaXRzLCBib29sIHRvUHJvcGVydHlJbmhlcml0cyk7Ci0gICAgdmlydHVh
bCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShTVkdTTUlMRWxlbWVudCosIGNvbnN0IFN0cmluZyYg
ZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUs
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFsIGZs
b2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3Ry
aW5nJiB0b1N0cmluZyk7CiAKIHByaXZhdGU6CiAgICAgU1ZHTGVuZ3RoTW9kZSBtX2xlbmd0aE1v
ZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWROdW1iZXIuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZE51bWJlci5jcHAJKHJldmlz
aW9uIDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjIsMTQgKzIyLDE1IEBACiAjaWYgRU5BQkxFKFNWRykgJiYgRU5B
QkxFKFNWR19BTklNQVRJT04pCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWROdW1iZXIuaCIKIAorI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVz
LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZH
QW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6U1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcihTVkdFbGVt
ZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYpCi0gICAgOiBTVkdBbmlt
YXRlZFR5cGVBbmltYXRvcihBbmltYXRlZE51bWJlciwgY29udGV4dEVsZW1lbnQpCitTVkdBbmlt
YXRlZE51bWJlckFuaW1hdG9yOjpTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yKFNWR0FuaW1hdGlv
bkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQor
ICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0ZWROdW1iZXIsIGFuaW1hdGlvbkVs
ZW1lbnQsIGNvbnRleHRFbGVtZW50KQogewogfQogCkBAIC00NCw2ICs0NSwxMSBAQCBQYXNzT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4gU1ZHQW5pbWF0ZWROCiAKIHZvaWQgU1ZHQW5pbWF0ZWROdW1i
ZXJBbmltYXRvcjo6Y2FsY3VsYXRlRnJvbUFuZFRvVmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5
cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIGNvbnN0IFN0cmluZyYgZnJv
bVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZykKIHsKKyAgICBBU1NFUlQobV9jb250ZXh0
RWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgU1ZHQW5pbWF0
ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVu
dCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CisgICAgYW5pbWF0aW9uRWxlbWVudC0+ZGV0ZXJtaW5l
UHJvcGVydHlWYWx1ZVR5cGVzKGZyb21TdHJpbmcsIHRvU3RyaW5nKTsKKyAgICAKICAgICBmcm9t
ID0gY29uc3RydWN0RnJvbVN0cmluZyhmcm9tU3RyaW5nKTsKICAgICB0byA9IGNvbnN0cnVjdEZy
b21TdHJpbmcodG9TdHJpbmcpOwogfQpAQCAtNTEsNiArNTcsOSBAQCB2b2lkIFNWR0FuaW1hdGVk
TnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0CiB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6
OmNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNv
bnN0IFN0cmluZyYgYnlTdHJpbmcpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwor
ICAgIEFTU0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOworICAgIFNWR0FuaW1hdGVFbGVtZW50KiBh
bmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihtX2FuaW1h
dGlvbkVsZW1lbnQpOworICAgIGFuaW1hdGlvbkVsZW1lbnQtPmRldGVybWluZVByb3BlcnR5VmFs
dWVUeXBlcyhmcm9tU3RyaW5nLCBieVN0cmluZyk7CiAgICAgCiAgICAgZnJvbSA9IGNvbnN0cnVj
dEZyb21TdHJpbmcoZnJvbVN0cmluZyk7CiAgICAgdG8gPSBjb25zdHJ1Y3RGcm9tU3RyaW5nKGJ5
U3RyaW5nKTsKQEAgLTU4LDEzICs2NywxMiBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0
b3I6OmNhbGN1bGF0CiAgICAgdG8tPm51bWJlcigpICs9IGZyb20tPm51bWJlcigpOwogfQogCi12
b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoU1ZH
U01JTEVsZW1lbnQqIHNtaWxFbGVtZW50LCBmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBl
YXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbSwgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIHRvLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcm9tUHJv
cGVydHlJbmhlcml0cywgYm9vbCB0b1Byb3BlcnR5SW5oZXJpdHMpCit2b2lkIFNWR0FuaW1hdGVk
TnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwg
dW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0
cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVk
KQogewotICAgIEFTU0VSVChzbWlsRWxlbWVudCk7CisgICAgQVNTRVJUKG1fYW5pbWF0aW9uRWxl
bWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwotICAgIFNWR0FuaW1hdGVFbGVt
ZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8U1ZHQW5pbWF0ZUVsZW1lbnQqPihz
bWlsRWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQgPSBz
dGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5pbWF0aW9uRWxlbWVudCk7CiAgICAg
CiAgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0aW9uRWxlbWVudC0+YW5p
bWF0aW9uTW9kZSgpOwogICAgIC8vIFRvIGFuaW1hdGlvbiB1c2VzIGNvbnRyaWJ1dGlvbnMgZnJv
bSB0aGUgbG93ZXIgcHJpb3JpdHkgYW5pbWF0aW9ucyBhcyB0aGUgYmFzZSB2YWx1ZS4KQEAgLTc1
LDEyICs4MywxMiBAQCB2b2lkIFNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3I6OmNhbGN1bGF0CiAg
ICAgLy8gUmVwbGFjZSAnaW5oZXJpdCcgYnkgdGhlaXIgY29tcHV0ZWQgcHJvcGVydHkgdmFsdWVz
LgogICAgIGZsb2F0JiBmcm9tTnVtYmVyID0gZnJvbS0+bnVtYmVyKCk7CiAgICAgZmxvYXQmIHRv
TnVtYmVyID0gdG8tPm51bWJlcigpOwotICAgIGlmIChmcm9tUHJvcGVydHlJbmhlcml0cykgewor
ICAgIGlmIChhbmltYXRpb25FbGVtZW50LT5mcm9tUHJvcGVydHlWYWx1ZVR5cGUoKSA9PSBJbmhl
cml0VmFsdWUpIHsKICAgICAgICAgU3RyaW5nIGZyb21OdW1iZXJTdHJpbmc7CiAgICAgICAgIGFu
aW1hdGlvbkVsZW1lbnQtPmFkanVzdEZvckluaGVyaXRhbmNlKG1fY29udGV4dEVsZW1lbnQsIGFu
aW1hdGlvbkVsZW1lbnQtPmF0dHJpYnV0ZU5hbWUoKSwgZnJvbU51bWJlclN0cmluZyk7CiAgICAg
ICAgIHBhcnNlTnVtYmVyRnJvbVN0cmluZyhmcm9tTnVtYmVyU3RyaW5nLCBmcm9tTnVtYmVyKTsg
CiAgICAgfQotICAgIGlmICh0b1Byb3BlcnR5SW5oZXJpdHMpIHsKKyAgICBpZiAoYW5pbWF0aW9u
RWxlbWVudC0+dG9Qcm9wZXJ0eVZhbHVlVHlwZSgpID09IEluaGVyaXRWYWx1ZSkgewogICAgICAg
ICBTdHJpbmcgdG9OdW1iZXJTdHJpbmc7CiAgICAgICAgIGFuaW1hdGlvbkVsZW1lbnQtPmFkanVz
dEZvckluaGVyaXRhbmNlKG1fY29udGV4dEVsZW1lbnQsIGFuaW1hdGlvbkVsZW1lbnQtPmF0dHJp
YnV0ZU5hbWUoKSwgdG9OdW1iZXJTdHJpbmcpOwogICAgICAgICBwYXJzZU51bWJlckZyb21TdHJp
bmcodG9OdW1iZXJTdHJpbmcsIHRvTnVtYmVyKTsgCkBAIC0xMDMsNyArMTExLDcgQEAgdm9pZCBT
VkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpjYWxjdWxhdAogICAgICAgICBhbmltYXRlZE51bWJl
ciA9IG51bWJlcjsKIH0KIAotZmxvYXQgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcjo6Y2FsY3Vs
YXRlRGlzdGFuY2UoU1ZHU01JTEVsZW1lbnQqLCBjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNv
bnN0IFN0cmluZyYgdG9TdHJpbmcpCitmbG9hdCBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yOjpj
YWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0IFN0cmluZyYg
dG9TdHJpbmcpCiB7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogICAgIGZsb2F0IGZy
b20gPSAwOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmgJKHJldmlz
aW9uIDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkTnVtYmVyLmgJKHdv
cmtpbmcgY29weSkKQEAgLTIxLDkgKzIxLDkgQEAKICNkZWZpbmUgU1ZHQW5pbWF0ZWROdW1iZXJf
aAogCiAjaWYgRU5BQkxFKFNWRykKLSNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudC5oIgogI2lu
Y2x1ZGUgIlNWR0FuaW1hdGVkUHJvcGVydHlNYWNyb3MuaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZFN0YXRpY1Byb3BlcnR5VGVhck9mZi5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVkVHlwZUFuaW1h
dG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDAsMjAgKzQwLDIxIEBAIERFRklO
RV9BTklNQVRFRF9QUk9QRVJUWShPd25lclR5cGUsIERPTUEKIERFRklORV9BTklNQVRFRF9QUk9Q
RVJUWShPd25lclR5cGUsIERPTUF0dHJpYnV0ZSwgU1ZHRE9NQXR0cmlidXRlSWRlbnRpZmllciwg
U1ZHQW5pbWF0ZWROdW1iZXIsIGZsb2F0LCBVcHBlclByb3BlcnR5LCBMb3dlclByb3BlcnR5KQog
CiAjaWYgRU5BQkxFKFNWR19BTklNQVRJT04pCitjbGFzcyBTVkdBbmltYXRpb25FbGVtZW50Owor
CiBjbGFzcyBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9yIDogcHVibGljIFNWR0FuaW1hdGVkVHlw
ZUFuaW1hdG9yIHsKICAgICAKIHB1YmxpYzoKLSAgICBTVkdBbmltYXRlZE51bWJlckFuaW1hdG9y
KFNWR0VsZW1lbnQqLCBjb25zdCBRdWFsaWZpZWROYW1lJik7CisgICAgU1ZHQW5pbWF0ZWROdW1i
ZXJBbmltYXRvcihTVkdBbmltYXRpb25FbGVtZW50KiwgU1ZHRWxlbWVudCopOwogICAgIHZpcnR1
YWwgflNWR0FuaW1hdGVkTnVtYmVyQW5pbWF0b3IoKSB7IH0KICAgICAKICAgICB2aXJ0dWFsIFBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmlu
ZyYpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjYWxjdWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmlu
Zyk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZH
QW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1
ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIGJ5U3RyaW5nKTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRWYWx1ZShTVkdTTUlMRWxlbWVudCosIGZs
b2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9tVmFsdWUs
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgYW5pbWF0ZWRWYWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGZyb21Qcm9wZXJ0eUluaGVyaXRzLCBib29sIHRvUHJvcGVydHlJbmhlcml0cyk7Ci0g
ICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShTVkdTTUlMRWxlbWVudCosIGNvbnN0
IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CisgICAgdmlydHVh
bCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3du
UHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2
aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywg
Y29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiB9OwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRQb2ludExpc3QuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFBvaW50TGlzdC5jcHAJKHJldmlz
aW9uIDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUG9pbnRMaXN0LmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjIsMTMgKzIyLDE0IEBACiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19BTklNQVRJT04pCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRQb2ludExpc3QuaCIK
IAorI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSAiU1ZHUG9pbnRMaXN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWRQb2ludExpc3RB
bmltYXRvcihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVkTmFtZSYp
Ci0gICAgOiBTVkdBbmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZFBvaW50cywgY29udGV4dEVs
ZW1lbnQpCitTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQqIGFuaW1hdGlvbkVsZW1lbnQsIFNWR0VsZW1l
bnQqIGNvbnRleHRFbGVtZW50KQorICAgIDogU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5pbWF0
ZWRQb2ludHMsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50KQogewogfQogCkBAIC02
MSwxMSArNjIsMTAgQEAgdm9pZCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpjYWxjdQog
ICAgIH0KIH0KIAotdm9pZCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpjYWxjdWxhdGVB
bmltYXRlZFZhbHVlKFNWR1NNSUxFbGVtZW50KiBzbWlsRWxlbWVudCwgZmxvYXQgcGVyY2VudGFn
ZSwgdW5zaWduZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wsIGJv
b2wpCit2b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3I6OmNhbGN1bGF0ZUFuaW1hdGVk
VmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4m
IGZyb20sIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlw
ZT4mIGFuaW1hdGVkKQogewotICAgIEFTU0VSVChzbWlsRWxlbWVudCk7CisgICAgQVNTRVJUKG1f
YW5pbWF0aW9uRWxlbWVudCk7CiAgICAgQVNTRVJUKG1fY29udGV4dEVsZW1lbnQpOwogICAgIAog
ICAgIFNWR1BvaW50TGlzdCYgYW5pbWF0ZWRQb2ludExpc3QgPSBhbmltYXRlZC0+cG9pbnRMaXN0
KCk7CkBAIC04MSw3ICs4MSw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRQb2ludExpc3RBbmltYXRvcjo6
Y2FsY3UKICAgICAgICAgICAgIFNWR1BvaW50TGlzdDo6Y3JlYXRlQW5pbWF0ZWQoZnJvbVBvaW50
TGlzdCwgdG9Qb2ludExpc3QsIGFuaW1hdGVkUG9pbnRMaXN0LCBwZXJjZW50YWdlKTsKICAgICAg
ICAgICAgIAogICAgICAgICAvLyBGYWxsIGJhY2sgdG8gZGlzY3JldGUgYW5pbWF0aW9uIGlmIHRo
ZSBwb2ludHMgYXJlIG5vdCBjb21wYXRpYmxlCi0gICAgICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0
aW9uTW9kZSA9IHN0YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4oc21pbEVsZW1lbnQpLT5h
bmltYXRpb25Nb2RlKCk7CisgICAgICAgIEFuaW1hdGlvbk1vZGUgYW5pbWF0aW9uTW9kZSA9IHN0
YXRpY19jYXN0PFNWR0FuaW1hdGVFbGVtZW50Kj4obV9hbmltYXRpb25FbGVtZW50KS0+YW5pbWF0
aW9uTW9kZSgpOwogICAgICAgICBpZiAoYW5pbWF0ZWRQb2ludExpc3QuaXNFbXB0eSgpKQogICAg
ICAgICAgICAgYW5pbWF0ZWRQb2ludExpc3QgPSAoKGFuaW1hdGlvbk1vZGUgPT0gRnJvbVRvQW5p
bWF0aW9uICYmIHBlcmNlbnRhZ2UgPiAwLjUpIHx8IGFuaW1hdGlvbk1vZGUgPT0gVG9BbmltYXRp
b24gfHwgcGVyY2VudGFnZSA9PSAxKSAKICAgICAgICAgICAgID8gdG9Qb2ludExpc3QgOiBmcm9t
UG9pbnRMaXN0OwpAQCAtODksNyArODksNyBAQCB2b2lkIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5p
bWF0b3I6OmNhbGN1CiAgICAgcmV0dXJuOwogfQogCi1mbG9hdCBTVkdBbmltYXRlZFBvaW50TGlz
dEFuaW1hdG9yOjpjYWxjdWxhdGVEaXN0YW5jZShTVkdTTUlMRWxlbWVudCosIGNvbnN0IFN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYpCitmbG9hdCBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yOjpj
YWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8v
IEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNWR1BvaW50
TGlzdCByaWdodCBub3cuIFdlIG5lZWQgdGhlIGRpc3RhbmNlIG9mIGZvciBldmVyeSBzaW5nbGUg
dmFsdWUuCiAgICAgcmV0dXJuIC0xOwpJbmRleDogU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUG9pbnRMaXN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVkUG9pbnRMaXN0LmgJKHJldmlzaW9uIDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVkUG9pbnRMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTIxLDI0ICsyMSwyNCBAQAog
I2RlZmluZSBTVkdBbmltYXRlZFBvaW50TGlzdF9oCiAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFC
TEUoU1ZHX0FOSU1BVElPTikKLSNpbmNsdWRlICJTVkdBbmltYXRlRWxlbWVudC5oIgorI2luY2x1
ZGUgIlNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKK2Ns
YXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CiAKIGNsYXNzIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5p
bWF0b3IgOiBwdWJsaWMgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IgewogICAgIAogcHVibGljOgot
ICAgIFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IoU1ZHRWxlbWVudCosIGNvbnN0IFF1YWxp
ZmllZE5hbWUmKTsKKyAgICBTVkdBbmltYXRlZFBvaW50TGlzdEFuaW1hdG9yKFNWR0FuaW1hdGlv
bkVsZW1lbnQqLCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRQb2ludExp
c3RBbmltYXRvcigpIHsgfQogICAgIAogICAgIHZpcnR1YWwgUGFzc093blB0cjxTVkdBbmltYXRl
ZFR5cGU+IGNvbnN0cnVjdEZyb21TdHJpbmcoY29uc3QgU3RyaW5nJik7CiAgICAgCiAgICAgdmly
dHVhbCB2b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3Ry
aW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKICAgICB2aXJ0dWFsIHZv
aWQgY2FsY3VsYXRlRnJvbUFuZEJ5VmFsdWVzKE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBmcm9t
VmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVlLCBjb25zdCBTdHJpbmcmIGZy
b21TdHJpbmcsIGNvbnN0IFN0cmluZyYgYnlTdHJpbmcpOwotICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVBbmltYXRlZFZhbHVlKFNWR1NNSUxFbGVtZW50KiwgZmxvYXQgcGVyY2VudGFnZSwgdW5z
aWduZWQgcmVwZWF0Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVk
VHlwZT4mIHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZnJvbVByb3BlcnR5
SW5oZXJpdHMsIGJvb2wgdG9Qcm9wZXJ0eUluaGVyaXRzKTsKLSAgICB2aXJ0dWFsIGZsb2F0IGNh
bGN1bGF0ZURpc3RhbmNlKFNWR1NNSUxFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5n
LCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKTsKKyAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5p
bWF0ZWRWYWx1ZShmbG9hdCBwZXJjZW50YWdlLCB1bnNpZ25lZCByZXBlYXRDb3VudCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBl
PiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUpOworICAgIHZpcnR1YWwgZmxvYXQgY2FsY3Vs
YXRlRGlzdGFuY2UoY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3Ry
aW5nKTsKIH07CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRlZFJlY3QuY3BwCShyZXZpc2lvbiA4OTU4MCkKKysrIFNvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlZFJlY3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwxMiArMjIsMTMg
QEAKICNpZiBFTkFCTEUoU1ZHKSAmJiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKICNpbmNsdWRlICJT
VkdBbmltYXRlZFJlY3QuaCIKIAorI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCiAjaW5j
bHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZH
QW5pbWF0ZWRSZWN0QW5pbWF0b3I6OlNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yKFNWR0VsZW1lbnQq
IGNvbnRleHRFbGVtZW50LCBjb25zdCBRdWFsaWZpZWROYW1lJikKLSAgICA6IFNWR0FuaW1hdGVk
VHlwZUFuaW1hdG9yKEFuaW1hdGVkUmVjdCwgY29udGV4dEVsZW1lbnQpCitTVkdBbmltYXRlZFJl
Y3RBbmltYXRvcjo6U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IoU1ZHQW5pbWF0aW9uRWxlbWVudCog
YW5pbWF0aW9uRWxlbWVudCwgU1ZHRWxlbWVudCogY29udGV4dEVsZW1lbnQpCisgICAgOiBTVkdB
bmltYXRlZFR5cGVBbmltYXRvcihBbmltYXRlZFJlY3QsIGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRl
eHRFbGVtZW50KQogewogfQogCkBAIC01NCwxNCArNTUsMTMgQEAgdm9pZCBTVkdBbmltYXRlZFJl
Y3RBbmltYXRvcjo6Y2FsY3VsYXRlRgogICAgIHRvLT5yZWN0KCkgKz0gZnJvbS0+cmVjdCgpOwog
fQogCi12b2lkIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KFNWR1NNSUxFbGVtZW50KiBzbWlsRWxlbWVudCwgZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQg
cmVwZWF0Q291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb20sIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiB0bywgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wsIGJv
b2wpCit2b2lkIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjpjYWxjdWxhdGVBbmltYXRlZFZhbHVl
KGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENvdW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdBbmltYXRl
ZFR5cGU+JiBmcm9tLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG8sIE93blB0cjxTVkdBbmlt
YXRlZFR5cGU+JiBhbmltYXRlZCkKIHsKLSAgICBBU1NFUlQoc21pbEVsZW1lbnQpOworICAgIEFT
U0VSVChtX2FuaW1hdGlvbkVsZW1lbnQpOwogICAgIEFTU0VSVChtX2NvbnRleHRFbGVtZW50KTsK
IAotICAgIFNWR0FuaW1hdGVFbGVtZW50KiBhbmltYXRpb25FbGVtZW50ID0gc3RhdGljX2Nhc3Q8
U1ZHQW5pbWF0ZUVsZW1lbnQqPihzbWlsRWxlbWVudCk7CisgICAgU1ZHQW5pbWF0ZUVsZW1lbnQq
IGFuaW1hdGlvbkVsZW1lbnQgPSBzdGF0aWNfY2FzdDxTVkdBbmltYXRlRWxlbWVudCo+KG1fYW5p
bWF0aW9uRWxlbWVudCk7CiAgICAgQW5pbWF0aW9uTW9kZSBhbmltYXRpb25Nb2RlID0gYW5pbWF0
aW9uRWxlbWVudC0+YW5pbWF0aW9uTW9kZSgpOwogICAgIC8vIFRvIGFuaW1hdGlvbiB1c2VzIGNv
bnRyaWJ1dGlvbnMgZnJvbSB0aGUgbG93ZXIgcHJpb3JpdHkgYW5pbWF0aW9ucyBhcyB0aGUgYmFz
ZSB2YWx1ZS4KICAgICBGbG9hdFJlY3QmIGFuaW1hdGVkUmVjdCA9IGFuaW1hdGVkLT5yZWN0KCk7
CkBAIC05Myw3ICs5Myw3IEBAIHZvaWQgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3I6OmNhbGN1bGF0
ZUEKICAgICAgICAgYW5pbWF0ZWRSZWN0ID0gbmV3UmVjdDsKIH0KIAotZmxvYXQgU1ZHQW5pbWF0
ZWRSZWN0QW5pbWF0b3I6OmNhbGN1bGF0ZURpc3RhbmNlKFNWR1NNSUxFbGVtZW50KiwgY29uc3Qg
U3RyaW5nJiwgY29uc3QgU3RyaW5nJikKK2Zsb2F0IFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yOjpj
YWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmLCBjb25zdCBTdHJpbmcmKQogewogICAgIC8v
IEZJWE1FOiBEaXN0YW5jZSBjYWxjdWxhdGlvbiBpcyBub3QgcG9zc2libGUgZm9yIFNWR1JlY3Qg
cmlnaHQgbm93LiBXZSBuZWVkIHRoZSBkaXN0YW5jZSBvZiBmb3IgZXZlcnkgc2luZ2xlIHZhbHVl
LgogICAgIHJldHVybiAtMTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFJl
Y3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRSZWN0LmgJ
KHJldmlzaW9uIDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkUmVjdC5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yMSw5ICsyMSw5IEBACiAjZGVmaW5lIFNWR0FuaW1hdGVkUmVj
dF9oCiAKICNpZiBFTkFCTEUoU1ZHKQotI2luY2x1ZGUgIlNWR0FuaW1hdGVFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU1ZHQW5pbWF0ZWRQcm9wZXJ0eU1hY3Jvcy5oIgogI2luY2x1ZGUgIlNWR0FuaW1h
dGVkUHJvcGVydHlUZWFyT2ZmLmgiCisjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3Iu
aCIKICNpbmNsdWRlICJTVkdSZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTM4LDIw
ICszOCwyMSBAQCBERUNMQVJFX0FOSU1BVEVEX1BST1BFUlRZKFNWR0FuaW1hdGVkUmVjCiBERUZJ
TkVfQU5JTUFURURfUFJPUEVSVFkoT3duZXJUeXBlLCBET01BdHRyaWJ1dGUsIERPTUF0dHJpYnV0
ZS5sb2NhbE5hbWUoKSwgU1ZHQW5pbWF0ZWRSZWN0LCBGbG9hdFJlY3QsIFVwcGVyUHJvcGVydHks
IExvd2VyUHJvcGVydHkpCiAKICNpZiBFTkFCTEUoU1ZHX0FOSU1BVElPTikKK2NsYXNzIFNWR0Fu
aW1hdGlvbkVsZW1lbnQ7CisKIGNsYXNzIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yIDogcHVibGlj
IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKICAgICAKIHB1YmxpYzoKLSAgICBTVkdBbmltYXRl
ZFJlY3RBbmltYXRvcihTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgY29uc3QgUXVhbGlmaWVk
TmFtZSYpOworICAgIFNWR0FuaW1hdGVkUmVjdEFuaW1hdG9yKFNWR0FuaW1hdGlvbkVsZW1lbnQq
LCBTVkdFbGVtZW50Kik7CiAgICAgdmlydHVhbCB+U1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IoKSB7
IH0KICAgICAKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjb25zdHJ1
Y3RGcm9tU3RyaW5nKGNvbnN0IFN0cmluZyYpOwogICAgIAogICAgIHZpcnR1YWwgdm9pZCBjYWxj
dWxhdGVGcm9tQW5kVG9WYWx1ZXMoT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIGNvbnN0IFN0cmluZyYgZnJvbVN0cmlu
ZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUZy
b21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8
U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9tU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGJ5U3RyaW5nKTsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsY3VsYXRlQW5pbWF0ZWRW
YWx1ZShTVkdTTUlMRWxlbWVudCosIGZsb2F0IHBlcmNlbnRhZ2UsIHVuc2lnbmVkIHJlcGVhdENv
dW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE93blB0cjxTVkdB
bmltYXRlZFR5cGU+JiBmcm9tVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiB0b1ZhbHVl
LCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgYW5pbWF0ZWRWYWx1ZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGZyb21Qcm9wZXJ0eUluaGVyaXRzLCBib29s
IHRvUHJvcGVydHlJbmhlcml0cyk7Ci0gICAgdmlydHVhbCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5j
ZShTVkdTTUlMRWxlbWVudCosIGNvbnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5n
JiB0b1N0cmluZyk7CisgICAgdmlydHVhbCB2b2lkIGNhbGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxv
YXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291bnQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwg
T3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUsIE93blB0cjxTVkdBbmltYXRlZFR5cGU+
JiBhbmltYXRlZFZhbHVlKTsKKyAgICB2aXJ0dWFsIGZsb2F0IGNhbGN1bGF0ZURpc3RhbmNlKGNv
bnN0IFN0cmluZyYgZnJvbVN0cmluZywgY29uc3QgU3RyaW5nJiB0b1N0cmluZyk7CiAgICAgCiAg
ICAgc3RhdGljIGJvb2wgcGFyc2VTVkdSZWN0KGNvbnN0IFN0cmluZyYsIEZsb2F0UmVjdCYpOwog
fTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCShyZXZpc2lvbiA4
OTU4MCkKKysrIFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yNCw2ICsyNCw3IEBACiAKICNpbmNsdWRlICJGbG9hdFJlY3QuaCIKICNpbmNs
dWRlICJTVkdBbmdsZS5oIgorI2luY2x1ZGUgIlNWR0NvbG9yLmgiCiAjaW5jbHVkZSAiU1ZHTGVu
Z3RoLmgiCiAjaW5jbHVkZSAiU1ZHUGFyc2VyVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSAiU1ZHUG9p
bnRMaXN0LmgiCkBAIC00MSw2ICs0Miw5IEBAIFNWR0FuaW1hdGVkVHlwZTo6flNWR0FuaW1hdGVk
VHlwZSgpCiAgICAgY2FzZSBBbmltYXRlZEFuZ2xlOgogICAgICAgICBkZWxldGUgbV9kYXRhLmFu
Z2xlOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CisgICAgICAgIGRl
bGV0ZSBtX2RhdGEuY29sb3I7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQW5pbWF0ZWRMZW5n
dGg6CiAgICAgICAgIGRlbGV0ZSBtX2RhdGEubGVuZ3RoOwogICAgICAgICBicmVhazsKQEAgLTY3
LDYgKzcxLDE0IEBAIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBTVkdBbmltYXRlZFQKICAg
ICByZXR1cm4gYW5pbWF0ZWRUeXBlLnJlbGVhc2UoKTsKIH0KIAorUGFzc093blB0cjxTVkdBbmlt
YXRlZFR5cGU+IFNWR0FuaW1hdGVkVHlwZTo6Y3JlYXRlQ29sb3IoQ29sb3IqIGNvbG9yKQorewor
ICAgIEFTU0VSVChjb2xvcik7CisgICAgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gYW5pbWF0ZWRU
eXBlID0gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkVHlwZShBbmltYXRlZENvbG9yKSk7CisgICAg
YW5pbWF0ZWRUeXBlLT5tX2RhdGEuY29sb3IgPSBjb2xvcjsKKyAgICByZXR1cm4gYW5pbWF0ZWRU
eXBlLnJlbGVhc2UoKTsKK30KKwogUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+IFNWR0FuaW1h
dGVkVHlwZTo6Y3JlYXRlTGVuZ3RoKFNWR0xlbmd0aCogbGVuZ3RoKQogewogICAgIEFTU0VSVChs
ZW5ndGgpOwpAQCAtMTA1LDYgKzExNywxMiBAQCBTVkdBbmdsZSYgU1ZHQW5pbWF0ZWRUeXBlOjph
bmdsZSgpCiAgICAgcmV0dXJuICptX2RhdGEuYW5nbGU7CiB9CiAKK0NvbG9yJiBTVkdBbmltYXRl
ZFR5cGU6OmNvbG9yKCkKK3sKKyAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkQ29sb3IpOwor
ICAgIHJldHVybiAqbV9kYXRhLmNvbG9yOworfQorCiBTVkdMZW5ndGgmIFNWR0FuaW1hdGVkVHlw
ZTo6bGVuZ3RoKCkKIHsKICAgICBBU1NFUlQobV90eXBlID09IEFuaW1hdGVkTGVuZ3RoKTsKQEAg
LTEzNSw2ICsxNTMsOSBAQCBTdHJpbmcgU1ZHQW5pbWF0ZWRUeXBlOjp2YWx1ZUFzU3RyaW5nKCkK
ICAgICBjYXNlIEFuaW1hdGVkQW5nbGU6CiAgICAgICAgIEFTU0VSVChtX2RhdGEuYW5nbGUpOwog
ICAgICAgICByZXR1cm4gbV9kYXRhLmFuZ2xlLT52YWx1ZUFzU3RyaW5nKCk7CisgICAgY2FzZSBB
bmltYXRlZENvbG9yOgorICAgICAgICBBU1NFUlQobV9kYXRhLmNvbG9yKTsKKyAgICAgICAgcmV0
dXJuIG1fZGF0YS5jb2xvci0+c2VyaWFsaXplZCgpOwogICAgIGNhc2UgQW5pbWF0ZWRMZW5ndGg6
CiAgICAgICAgIEFTU0VSVChtX2RhdGEubGVuZ3RoKTsKICAgICAgICAgcmV0dXJuIG1fZGF0YS5s
ZW5ndGgtPnZhbHVlQXNTdHJpbmcoKTsKQEAgLTE2Myw2ICsxODQsMTAgQEAgYm9vbCBTVkdBbmlt
YXRlZFR5cGU6OnNldFZhbHVlQXNTdHJpbmcoYwogICAgICAgICBBU1NFUlQobV9kYXRhLmFuZ2xl
KTsKICAgICAgICAgbV9kYXRhLmFuZ2xlLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVlLCBlYyk7CiAg
ICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5pbWF0ZWRDb2xvcjoKKyAgICAgICAgQVNTRVJUKG1f
ZGF0YS5jb2xvcik7CisgICAgICAgICptX2RhdGEuY29sb3IgPSB2YWx1ZS5pc0VtcHR5KCkgPyBD
b2xvcigpIDogU1ZHQ29sb3I6OmNvbG9yRnJvbVJHQkNvbG9yU3RyaW5nKHZhbHVlKTsKKyAgICAg
ICAgYnJlYWs7CiAgICAgY2FzZSBBbmltYXRlZExlbmd0aDoKICAgICAgICAgQVNTRVJUKG1fZGF0
YS5sZW5ndGgpOwogICAgICAgICBtX2RhdGEubGVuZ3RoLT5zZXRWYWx1ZUFzU3RyaW5nKHZhbHVl
LCBTVkdMZW5ndGg6Omxlbmd0aE1vZGVGb3JBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFt
ZSksIGVjKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlZFR5cGUuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZWRUeXBlLmgJKHJldmlzaW9u
IDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yNSw2ICsyNSw3IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3Mg
Q29sb3I7CiBjbGFzcyBGbG9hdFJlY3Q7CiBjbGFzcyBTVkdBbmdsZTsKIGNsYXNzIFNWR0xlbmd0
aDsKQEAgLTM2LDYgKzM3LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgflNWR0FuaW1hdGVkVHlw
ZSgpOwogCiAgICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiBjcmVhdGVBbmds
ZShTVkdBbmdsZSopOworICAgIHN0YXRpYyBQYXNzT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4gY3Jl
YXRlQ29sb3IoQ29sb3IqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmltYXRlZFR5cGU+
IGNyZWF0ZUxlbmd0aChTVkdMZW5ndGgqKTsKICAgICBzdGF0aWMgUGFzc093blB0cjxTVkdBbmlt
YXRlZFR5cGU+IGNyZWF0ZU51bWJlcihmbG9hdCopOwogICAgIHN0YXRpYyBQYXNzT3duUHRyPFNW
R0FuaW1hdGVkVHlwZT4gY3JlYXRlUG9pbnRMaXN0KFNWR1BvaW50TGlzdCopOwpAQCAtNDQsNiAr
NDYsNyBAQCBwdWJsaWM6CiAgICAgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIHR5cGUoKSBjb25zdCB7
IHJldHVybiBtX3R5cGU7IH0KIAogICAgIFNWR0FuZ2xlJiBhbmdsZSgpOworICAgIENvbG9yJiBj
b2xvcigpOwogICAgIFNWR0xlbmd0aCYgbGVuZ3RoKCk7CiAgICAgZmxvYXQmIG51bWJlcigpOwog
ICAgIFNWR1BvaW50TGlzdCYgcG9pbnRMaXN0KCk7CkBAIC02NSw2ICs2OCw3IEBAIHByaXZhdGU6
CiAgICAgICAgIAogICAgICAgICAvLyBGSVhNRTogTW9yZSBTVkcgcHJpbWl0aXZlIHR5cGVzIG5l
ZWQgdG8gYmUgYWRkZWQgc3RlcCBieSBzdGVwLgogICAgICAgICBTVkdBbmdsZSogYW5nbGU7Cisg
ICAgICAgIENvbG9yKiBjb2xvcjsKICAgICAgICAgU1ZHTGVuZ3RoKiBsZW5ndGg7CiAgICAgICAg
IGZsb2F0KiBudW1iZXI7CiAgICAgICAgIFNWR1BvaW50TGlzdCogcG9pbnRMaXN0OwpJbmRleDog
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJKHJldmlzaW9u
IDg5NTgwKQorKysgU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVkVHlwZUFuaW1hdG9yLmgJ
KHdvcmtpbmcgY29weSkKQEAgLTIyLDExICsyMiwxMiBAQAogCiAjaWYgRU5BQkxFKFNWRykgJiYg
RU5BQkxFKFNWR19BTklNQVRJT04pCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRUeXBlLmgiCi0jaW5j
bHVkZSAiU1ZHU01JTEVsZW1lbnQuaCIKICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNWR0FuaW1hdGlvbkVsZW1lbnQ7CisKIGNsYXNz
IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yIHsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
IHB1YmxpYzoKQEAgLTM1LDIxICszNiwyMiBAQCBwdWJsaWM6CiAgICAgCiAgICAgdmlydHVhbCB2
b2lkIGNhbGN1bGF0ZUZyb21BbmRUb1ZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJv
bVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBm
cm9tU3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IGNhbGN1bGF0ZUZyb21BbmRCeVZhbHVlcyhPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZh
bHVlLCBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgdG9WYWx1ZSwgY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoU1ZHU01JTEVsZW1lbnQqLCBmbG9hdCBwZXJjZW50YWdlLCB1
bnNpZ25lZCByZXBlYXRDb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlPiYgZnJvbVZhbHVlLCBPd25QdHI8U1ZHQW5pbWF0
ZWRUeXBlPiYgdG9WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIGFuaW1hdGVkVmFsdWUs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBmcm9tUHJvcGVy
dHlJbmhlcml0cywgYm9vbCB0b1Byb3BlcnR5SW5oZXJpdHMpID0gMDsKLSAgICB2aXJ0dWFsIGZs
b2F0IGNhbGN1bGF0ZURpc3RhbmNlKFNWR1NNSUxFbGVtZW50KiwgY29uc3QgU3RyaW5nJiBmcm9t
U3RyaW5nLCBjb25zdCBTdHJpbmcmIHRvU3RyaW5nKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNh
bGN1bGF0ZUFuaW1hdGVkVmFsdWUoZmxvYXQgcGVyY2VudGFnZSwgdW5zaWduZWQgcmVwZWF0Q291
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT3duUHRyPFNWR0Fu
aW1hdGVkVHlwZT4mIGZyb21WYWx1ZSwgT3duUHRyPFNWR0FuaW1hdGVkVHlwZT4mIHRvVmFsdWUs
IE93blB0cjxTVkdBbmltYXRlZFR5cGU+JiBhbmltYXRlZFZhbHVlKSA9IDA7CisgICAgdmlydHVh
bCBmbG9hdCBjYWxjdWxhdGVEaXN0YW5jZShjb25zdCBTdHJpbmcmIGZyb21TdHJpbmcsIGNvbnN0
IFN0cmluZyYgdG9TdHJpbmcpID0gMDsKIAogICAgIHZvaWQgc2V0Q29udGV4dEVsZW1lbnQoU1ZH
RWxlbWVudCogY29udGV4dEVsZW1lbnQpIHsgbV9jb250ZXh0RWxlbWVudCA9IGNvbnRleHRFbGVt
ZW50OyB9CiAgICAgCiBwcm90ZWN0ZWQ6Ci0gICAgU1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3IoQW5p
bWF0ZWRBdHRyaWJ1dGVUeXBlIHR5cGUsIFNWR0VsZW1lbnQqIGNvbnRleHRFbGVtZW50KQorICAg
IFNWR0FuaW1hdGVkVHlwZUFuaW1hdG9yKEFuaW1hdGVkQXR0cmlidXRlVHlwZSB0eXBlLCBTVkdB
bmltYXRpb25FbGVtZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxl
bWVudCkKICAgICAgICAgOiBtX3R5cGUodHlwZSkKKyAgICAgICAgLCBtX2FuaW1hdGlvbkVsZW1l
bnQoYW5pbWF0aW9uRWxlbWVudCkKICAgICAgICAgLCBtX2NvbnRleHRFbGVtZW50KGNvbnRleHRF
bGVtZW50KQogICAgIHsKICAgICB9CiAKICAgICBBbmltYXRlZEF0dHJpYnV0ZVR5cGUgbV90eXBl
OworICAgIFNWR0FuaW1hdGlvbkVsZW1lbnQqIG1fYW5pbWF0aW9uRWxlbWVudDsKICAgICBTVkdF
bGVtZW50KiBtX2NvbnRleHRFbGVtZW50OwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0FuaW1hdGlvbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdBbmltYXRpb25FbGVtZW50LmNwcAkocmV2aXNpb24gODk1ODApCisrKyBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0aW9uRWxlbWVudC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM4LDYg
KzM4LDcgQEAKICNpbmNsdWRlICJGbG9hdENvbnZlcnNpb24uaCIKICNpbmNsdWRlICJIVE1MTmFt
ZXMuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorI2luY2x1ZGUgIlNWR0FuaW1hdGVF
bGVtZW50LmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudEluc3RhbmNlLmgiCiAjaW5jbHVkZSAiU1ZH
TmFtZXMuaCIKICNpbmNsdWRlICJTVkdQYXJzZXJVdGlsaXRpZXMuaCIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdBbmltYXRvckZhY3RvcnkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0b3JGYWN0b3J5LmgJKHJldmlzaW9uIDg5NTgwKQorKysgU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdG9yRmFjdG9yeS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiwz
MiArMjIsNDAgQEAKIAogI2lmIEVOQUJMRShTVkcpICYmIEVOQUJMRShTVkdfQU5JTUFUSU9OKQog
I2luY2x1ZGUgIlNWR0FuaW1hdGVkQW5nbGUuaCIKKyNpbmNsdWRlICJTVkdBbmltYXRlZENvbG9y
LmgiCiAjaW5jbHVkZSAiU1ZHQW5pbWF0ZWRMZW5ndGguaCIKICNpbmNsdWRlICJTVkdBbmltYXRl
ZE51bWJlci5oIgogI2luY2x1ZGUgIlNWR0FuaW1hdGVkUG9pbnRMaXN0LmgiCiAjaW5jbHVkZSAi
U1ZHQW5pbWF0ZWRSZWN0LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU1ZHQW5p
bWF0aW9uRWxlbWVudDsKICAgICAKIGNsYXNzIFNWR0FuaW1hdG9yRmFjdG9yeSB7CiBwdWJsaWM6
Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IGNyZWF0ZShT
VkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgQW5pbWF0ZWRBdHRyaWJ1dGVUeXBlIGF0dHJpYnV0
ZVR5cGUsIGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCisgICAgc3RhdGljIFBh
c3NPd25QdHI8U1ZHQW5pbWF0ZWRUeXBlQW5pbWF0b3I+IGNyZWF0ZShTVkdBbmltYXRpb25FbGVt
ZW50KiBhbmltYXRpb25FbGVtZW50LCBTVkdFbGVtZW50KiBjb250ZXh0RWxlbWVudCwgQW5pbWF0
ZWRBdHRyaWJ1dGVUeXBlIGF0dHJpYnV0ZVR5cGUpCiAgICAgeworICAgICAgICBBU1NFUlQoYW5p
bWF0aW9uRWxlbWVudCk7CisgICAgICAgIEFTU0VSVChjb250ZXh0RWxlbWVudCk7CisKICAgICAg
ICAgLy8gRklYTUU6IEFkZCBhbmltYXRpb24gc3VwcG9ydCBmb3IgYWxsIFNWRyB1bml0cy4KICAg
ICAgICAgc3dpdGNoIChhdHRyaWJ1dGVUeXBlKSB7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRBbmds
ZToKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRBbmdsZUFuaW1h
dG9yKGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkQW5nbGVBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBj
b250ZXh0RWxlbWVudCkpOworICAgICAgICBjYXNlIEFuaW1hdGVkQ29sb3I6CisgICAgICAgICAg
ICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVkQ29sb3JBbmltYXRvcihhbmltYXRpb25F
bGVtZW50LCBjb250ZXh0RWxlbWVudCkpOwogICAgICAgICBjYXNlIEFuaW1hdGVkTGVuZ3RoOgot
ICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9y
KGNvbnRleHRFbGVtZW50LCBhdHRyaWJ1dGVOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFNWR0FuaW1hdGVkTGVuZ3RoQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29u
dGV4dEVsZW1lbnQpKTsKICAgICAgICAgY2FzZSBBbmltYXRlZE51bWJlcjoKLSAgICAgICAgICAg
IHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWROdW1iZXJBbmltYXRvcihjb250ZXh0RWxl
bWVudCwgYXR0cmlidXRlTmFtZSkpOworICAgICAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBT
VkdBbmltYXRlZE51bWJlckFuaW1hdG9yKGFuaW1hdGlvbkVsZW1lbnQsIGNvbnRleHRFbGVtZW50
KSk7CiAgICAgICAgIGNhc2UgQW5pbWF0ZWRQb2ludHM6Ci0gICAgICAgICAgICByZXR1cm4gYWRv
cHRQdHIobmV3IFNWR0FuaW1hdGVkUG9pbnRMaXN0QW5pbWF0b3IoY29udGV4dEVsZW1lbnQsIGF0
dHJpYnV0ZU5hbWUpKTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0
ZWRQb2ludExpc3RBbmltYXRvcihhbmltYXRpb25FbGVtZW50LCBjb250ZXh0RWxlbWVudCkpOwog
ICAgICAgICBjYXNlIEFuaW1hdGVkUmVjdDoKLSAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihu
ZXcgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0b3IoY29udGV4dEVsZW1lbnQsIGF0dHJpYnV0ZU5hbWUp
KTsKKyAgICAgICAgICAgIHJldHVybiBhZG9wdFB0cihuZXcgU1ZHQW5pbWF0ZWRSZWN0QW5pbWF0
b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAgICAgZGVmYXVsdDoK
ICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICAgICAgcmV0dXJuIGFk
b3B0UHRyKG5ldyBTVkdBbmltYXRlZExlbmd0aEFuaW1hdG9yKGNvbnRleHRFbGVtZW50LCBhdHRy
aWJ1dGVOYW1lKSk7CisgICAgICAgICAgICByZXR1cm4gYWRvcHRQdHIobmV3IFNWR0FuaW1hdGVk
TGVuZ3RoQW5pbWF0b3IoYW5pbWF0aW9uRWxlbWVudCwgY29udGV4dEVsZW1lbnQpKTsKICAgICAg
ICAgfQogICAgIH0KIAo=
</data>
<flag name="review"
          id="92571"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>