<?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>238968</bug_id>
          
          <creation_ts>2022-04-07 16:12:56 -0700</creation_ts>
          <short_desc>[WebXR] Implement the WebXRFrame methods for getting joints&apos; poses and radii</short_desc>
          <delta_ts>2022-04-12 11:54:17 -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>New Bugs</component>
          <version>WebKit 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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ada Chan">adachan</reporter>
          <assigned_to name="Ada Chan">adachan</assigned_to>
          <cc>cdumez</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1859494</commentid>
    <comment_count>0</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2022-04-07 16:12:56 -0700</bug_when>
    <thetext>[WebXR] Implement the WebXR Hand Input module</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859536</commentid>
    <comment_count>1</comment_count>
      <attachid>456998</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2022-04-07 17:46:53 -0700</bug_when>
    <thetext>Created attachment 456998
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859888</commentid>
    <comment_count>2</comment_count>
      <attachid>457119</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2022-04-08 14:31:40 -0700</bug_when>
    <thetext>Created attachment 457119
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859959</commentid>
    <comment_count>3</comment_count>
      <attachid>457134</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2022-04-08 19:03:32 -0700</bug_when>
    <thetext>Created attachment 457134
Patch for landing 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1859965</commentid>
    <comment_count>4</comment_count>
      <attachid>457134</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-08 19:47:24 -0700</bug_when>
    <thetext>Comment on attachment 457134
Patch for landing 2

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

Nothing critical that would prevent committing as is but here is some feedback.

&gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:282
&gt; +ExceptionOr&lt;bool&gt; WebXRFrame::fillJointRadii(const Vector&lt;RefPtr&lt;WebXRJointSpace&gt;&gt; jointSpaces, Float32Array&amp; radii)

Why is the second array passed as non-const reference?

&gt; Source/WebCore/Modules/webxr/WebXRHand.cpp:52
&gt; +        m_joints.append(WebXRJointSpace::create(*document, *this, static_cast&lt;XRHandJoint&gt;(i)));

It seems the size of m_joint is static. Ideally, it would be a FixedVector instead of a Vector.

&gt; Source/WebCore/Modules/webxr/WebXRHand.cpp:95
&gt; +    const PlatformXR::Device::FrameData::HandJointsVector&amp; handJoints = *(inputSource.handJoints);

that&apos;s a long type, I would use auto&amp;

&gt; Source/WebCore/Modules/webxr/WebXRHand.h:50
&gt; +    unsigned size() { return m_joints.size(); }

should be const.

&gt; Source/WebCore/Modules/webxr/WebXRJointSpace.cpp:45
&gt; +WebXRJointSpace::WebXRJointSpace(Document&amp; document, WebXRHand&amp; hand, XRHandJoint jointName, const std::optional&lt;PlatformXR::Device::FrameData::InputSourceHandJoint&gt;&amp; joint)

std::optional&lt;PlatformXR::Device::FrameData::InputSourceHandJoint&gt;&amp;&amp;

&gt; Source/WebCore/Modules/webxr/WebXRJointSpace.cpp:50
&gt; +    updateFromJoint(joint);

m_joint(WTFMove(joint)) in the initializer list?

&gt; Source/WebCore/Modules/webxr/WebXRJointSpace.h:45
&gt;  class WebXRJointSpace : public RefCounted&lt;WebXRJointSpace&gt;, public WebXRSpace {

This class can probably be marked as final.

&gt; Source/WebCore/platform/xr/PlatformXR.h:326
&gt; +        typedef Vector&lt;std::optional&lt;InputSourceHandJoint&gt;&gt; HandJointsVector;

We prefer the modern:
using HandJointsVector = Vector&lt;std::optional&lt;InputSourceHandJoint&gt;&gt;;

&gt; Source/WebCore/platform/xr/PlatformXR.h:651
&gt; +    if (!decoder.decode(handJoint.pose))

This is the old style of decoding, modern code should use:
std::optional&lt;InputSourcePose&gt; pose;
decoder &gt;&gt; pose;
if (!pose)
    return std::nullopt;
std::optional&lt;float&gt; radius;
decoder &gt;&gt; radius;
if (!radius)
    return std::nullopt;
return { { WTFMove(*pose), *radius } };

&gt; Source/WebCore/testing/WebFakeXRInputController.h:91
&gt; +    std::optional&lt;PlatformXR::Device::FrameData::HandJointsVector&gt; m_handJoints;

So we will need to distinguish the vector not being initialized vs the vector being empty and that&apos;s why it is optional?
I might have missed it but the patch doesn&apos;t seem to rely on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860085</commentid>
    <comment_count>5</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2022-04-09 23:31:12 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #4)

Thanks Chris! I really appreciate your detailed review and feedback.

&gt; Comment on attachment 457134 [details]
&gt; Patch for landing 2
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457134&amp;action=review
&gt; 
&gt; Nothing critical that would prevent committing as is but here is some
&gt; feedback.
&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRFrame.cpp:282
&gt; &gt; +ExceptionOr&lt;bool&gt; WebXRFrame::fillJointRadii(const Vector&lt;RefPtr&lt;WebXRJointSpace&gt;&gt; jointSpaces, Float32Array&amp; radii)
&gt; 
&gt; Why is the second array passed as non-const reference?

In this method, we&apos;ll be filling in that radii array so it can&apos;t be a const reference.

&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRHand.cpp:52
&gt; &gt; +        m_joints.append(WebXRJointSpace::create(*document, *this, static_cast&lt;XRHandJoint&gt;(i)));
&gt; 
&gt; It seems the size of m_joint is static. Ideally, it would be a FixedVector
&gt; instead of a Vector.

Fixed!

&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRHand.cpp:95
&gt; &gt; +    const PlatformXR::Device::FrameData::HandJointsVector&amp; handJoints = *(inputSource.handJoints);
&gt; 
&gt; that&apos;s a long type, I would use auto&amp;

Fixed!

&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRHand.h:50
&gt; &gt; +    unsigned size() { return m_joints.size(); }
&gt; 
&gt; should be const.

Fixed!

&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRJointSpace.cpp:45
&gt; &gt; +WebXRJointSpace::WebXRJointSpace(Document&amp; document, WebXRHand&amp; hand, XRHandJoint jointName, const std::optional&lt;PlatformXR::Device::FrameData::InputSourceHandJoint&gt;&amp; joint)
&gt; 
&gt; std::optional&lt;PlatformXR::Device::FrameData::InputSourceHandJoint&gt;&amp;&amp;
&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRJointSpace.cpp:50
&gt; &gt; +    updateFromJoint(joint);
&gt; 
&gt; m_joint(WTFMove(joint)) in the initializer list?

Fixed!

&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRJointSpace.h:45
&gt; &gt;  class WebXRJointSpace : public RefCounted&lt;WebXRJointSpace&gt;, public WebXRSpace {
&gt; 
&gt; This class can probably be marked as final.

Fixed!

&gt; 
&gt; &gt; Source/WebCore/platform/xr/PlatformXR.h:326
&gt; &gt; +        typedef Vector&lt;std::optional&lt;InputSourceHandJoint&gt;&gt; HandJointsVector;
&gt; 
&gt; We prefer the modern:
&gt; using HandJointsVector = Vector&lt;std::optional&lt;InputSourceHandJoint&gt;&gt;;

Fixed!

&gt; 
&gt; &gt; Source/WebCore/platform/xr/PlatformXR.h:651
&gt; &gt; +    if (!decoder.decode(handJoint.pose))
&gt; 
&gt; This is the old style of decoding, modern code should use:
&gt; std::optional&lt;InputSourcePose&gt; pose;
&gt; decoder &gt;&gt; pose;
&gt; if (!pose)
&gt;     return std::nullopt;
&gt; std::optional&lt;float&gt; radius;
&gt; decoder &gt;&gt; radius;
&gt; if (!radius)
&gt;     return std::nullopt;
&gt; return { { WTFMove(*pose), *radius } };

Fixed!

&gt; 
&gt; &gt; Source/WebCore/testing/WebFakeXRInputController.h:91
&gt; &gt; +    std::optional&lt;PlatformXR::Device::FrameData::HandJointsVector&gt; m_handJoints;
&gt; 
&gt; So we will need to distinguish the vector not being initialized vs the
&gt; vector being empty and that&apos;s why it is optional?
&gt; I might have missed it but the patch doesn&apos;t seem to rely on that.

I made it optional to be consistent with how PlatformXR::Device::InputSource&apos;s handJoints is also optional. By making it optional, I feel it matches better the semantics that specifying joints is optional. If there&apos;s a compelling reason that omitting the optional is better, please let me know!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860086</commentid>
    <comment_count>6</comment_count>
      <attachid>457192</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2022-04-09 23:38:05 -0700</bug_when>
    <thetext>Created attachment 457192
Patch for landing 3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860472</commentid>
    <comment_count>7</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-11 16:41:30 -0700</bug_when>
    <thetext>ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860487</commentid>
    <comment_count>8</comment_count>
      <attachid>457301</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2022-04-11 17:13:47 -0700</bug_when>
    <thetext>Created attachment 457301
Patch for landing 4</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860715</commentid>
    <comment_count>9</comment_count>
      <attachid>457301</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2022-04-12 10:23:02 -0700</bug_when>
    <thetext>Comment on attachment 457301
Patch for landing 4

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

&gt; Source/WebCore/Modules/webxr/WebXRHand.cpp:55
&gt; +        joints.append(WebXRJointSpace::create(*document, *this, static_cast&lt;XRHandJoint&gt;(i)));

FYI, you can use uncheckedAppend() here since you called reserveInitialCapacity earlier.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860722</commentid>
    <comment_count>10</comment_count>
    <who name="Ada Chan">adachan</who>
    <bug_when>2022-04-12 10:46:34 -0700</bug_when>
    <thetext>(In reply to Chris Dumez from comment #9)
&gt; Comment on attachment 457301 [details]
&gt; Patch for landing 4
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=457301&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/Modules/webxr/WebXRHand.cpp:55
&gt; &gt; +        joints.append(WebXRJointSpace::create(*document, *this, static_cast&lt;XRHandJoint&gt;(i)));
&gt; 
&gt; FYI, you can use uncheckedAppend() here since you called
&gt; reserveInitialCapacity earlier.

OK, will fix!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860725</commentid>
    <comment_count>11</comment_count>
      <attachid>457345</attachid>
    <who name="Ada Chan">adachan</who>
    <bug_when>2022-04-12 10:50:57 -0700</bug_when>
    <thetext>Created attachment 457345
Patch for landing 5</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860753</commentid>
    <comment_count>12</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-04-12 11:53:41 -0700</bug_when>
    <thetext>Committed r292780 (249564@main): &lt;https://commits.webkit.org/249564@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 457345.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1860754</commentid>
    <comment_count>13</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-12 11:54:17 -0700</bug_when>
    <thetext>&lt;rdar://problem/91640876&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>456998</attachid>
            <date>2022-04-07 17:46:53 -0700</date>
            <delta_ts>2022-04-08 14:15:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-238968-20220407174652.patch</filename>
            <type>text/plain</type>
            <size>81631</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzExZTBmZTlmZTRkYTBi
MjNlZWE2M2U5NGIyNzc2Y2U0YWYwMjE5YS4uYjlhOGZmMzA3NmVjNTdhYTUxYzMyZWI0NzRmNTVm
NGZhZjBlODljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMi0wNC0wNyAgQWRh
IENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIEltcGxlbWVudCB0
aGUgV2ViWFIgSGFuZCBJbnB1dCBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2lu
dFJhZGlpLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpv
aW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dl
YnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bv
c2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2VieHIveHJIYW5kLmh0bWwKKworICAg
ICAgICAtIEltcGxlbWVudCB0aGUgbWV0aG9kcyBpbiBXZWJYUkZyYW1lIGZvciBnZXR0aW5nIGpv
aW50cycgcG9zZXMgYW5kIHJhZGlpLgorICAgICAgICAtIEFkZCBhIG5ldyBJbnB1dFNvdXJjZUhh
bmRKb2ludCBzdHJ1Y3QgdG8gcmVwcmVzZW50IGpvaW50IGRhdGEsIGFuZCBhZGQKKyAgICAgICAg
YSB2ZWN0b3Igb2YgSW5wdXRTb3VyY2VIYW5kSm9pbnQgaW4gUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlCisgICAgICAgIHRvIHJlcHJlc2VudCB0aGUgam9pbnRzIGRh
dGEuCisgICAgICAgIC0gSW1wbGVtZW50IGxvZ2ljIGZvciBtYW5hZ2luZyBhIHZlY3RvciBvZiBX
ZWJYUkpvaW50U3BhY2VzIGluIFdlYlhSSGFuZCBhbmQKKyAgICAgICAgdXBkYXRpbmcgaXQgd2l0
aCBuZXcgaGFuZCBqb2ludHMgZGF0YSBmcm9tIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUrSGFuZElucHV0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6cG9wdWxhdGVQb3NlKToKKyAgICAgICAg
VGhlcmUgYXJlIHZhbGlkIGNhc2VzIHdoZW4gdGhlIFdlYlhSU3BhY2UncyBlZmZlY3RpdmUgb3Jp
Z2luIGNhbiBiZSBudWxsLAorICAgICAgICBmb3IgZXhhbXBsZSwgYSBqb2ludCBwb3NlIGZyb20g
YSBoYW5kIHRoYXQgaGFzIG90aGVyIG1pc3Npbmcgam9pbnQgcG9zZXMuCisgICAgICAgIEp1c3Qg
cmV0dXJuIG51bGwgYW5kIG5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLiAKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmdldEpvaW50UG9zZSk6CisgICAgICAgIFBvcHVs
YXRlIHRoZSBqb2ludCdzIHBvc2UsIGFuZCBjcmVhdGUgYSBXZWJYUkpvaW50UG9zZSB3aXRoIHRo
ZSBwb3NlJ3MgCisgICAgICAgIHRyYW5zZm9ybSBhbmQgdGhlIGpvaW50J3MgcmFkaXVzLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6ZmlsbEpvaW50UmFkaWkpOgorICAgICAgICBWYWxp
ZGF0ZSB0aGUgaW5wdXRzIGFuZCBmaWxsIGluIHRoZSByYWRpaSBhcnJheS4gRmlsbCBpbiB3aXRo
IE5hTgorICAgICAgICBpZiB0aGUgaGFuZCBoYXMgbWlzc2luZyBqb2ludCBwb3Nlcy4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmZpbGxQb3Nlcyk6CisgICAgICAgIFZhbGlkYXRlIHRo
ZSBpbnB1dHMgYW5kIGZpbGwgaW4gdGhlIHRyYW5zZm9ybXMgYXJyYXkuIEZpbGwgaW4gd2l0aCBO
YU4KKyAgICAgICAgaWYgdGhlIGhhbmQgaGFzIG1pc3Npbmcgam9pbnQgcG9zZXMuCisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkhhbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5kOjpXZWJYUkhhbmQpOgor
ICAgICAgICBJbml0aWFsaXplIHRoZSBtX2pvaW50cyBhcnJheS4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSSGFuZDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSGFuZDo6SXRlcmF0b3I6
Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5kOjpzZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSSGFuZDo6dXBkYXRlRnJvbUlucHV0U291cmNlKToKKyAgICAgICAgVXBk
YXRlIG1fam9pbnRzIGFycmF5IGJhc2VkIG9uIHRoZSBsYXRlc3QgaGFuZHMgZGF0YSBmcm9tIElu
cHV0U291cmNlLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmg6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUkhhbmQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5k
OjpoYXNNaXNzaW5nUG9zZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp1cGRh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJKb2ludFBvc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50UG9zZTo6V2ViWFJKb2ludFBvc2UpOgorICAgICAgICBIYW5kbGUgam9pbnQgcmFk
aXVzLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSSm9pbnRTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkpvaW50U3Bh
Y2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkpvaW50U3BhY2U6OldlYlhSSm9p
bnRTcGFjZSk6CisgICAgICAgIEhhbmRsZSBqb2ludCBuYW1lIGFuZCB0aGUgYWN0dWFsIHBvc2Ug
ZGF0YS4gS2VlcCBhIHdlYWsgcHRyIHRvIHRoZSBXZWJYUkhhbmQuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUkpvaW50U3BhY2U6OnVwZGF0ZUZyb21Kb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50U3BhY2U6OmhhbmRIYXNNaXNzaW5nUG9zZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJKb2ludFNwYWNlOjpzZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSSm9pbnRTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgUmV0dXJuIG51
bGwgcG9zZSB0cmFuc2Zvcm1zIGlmIHRoZXJlIGFyZSBtaXNzaW5nIGpvaW50IHBvc2VzLgorICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUkpvaW50U3BhY2U6OmpvaW50TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50U3BhY2U6OnJhZGl1cyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkpvaW50U3BhY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6aXNIYW5kVHJhY2tpbmdFbmFi
bGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ6OmRlY29kZSk6
CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2U6OmRlY29kZSk6CisgICAgICAgICogdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUlu
aXQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGw6CisgICAg
ICAgIEFsbG93IHRlc3QgSW5wdXRTb3VyY2UgdG8gYmUgY3JlYXRlZCB3aXRoIGFuIGFycmF5IG9m
IGpvaW50cy4KKyAgICAgICAgKiB0ZXN0aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaWRsLgor
ICAgICAgICAqIHRlc3RpbmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbC4KKyAgICAgICAg
RGVmaW5lIGluaXQgZGljdGlvbmFyeSBmb3Igam9pbnQgZGF0YS4KKyAgICAgICAgKiB0ZXN0aW5n
L1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OldlYkZha2VYUklucHV0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnVwZGF0ZUhhbmRKb2ludHMpOgor
ICAgICAgICBVcGRhdGUgbV9oYW5kSm9pbnRzIGJhc2VkIG9uIGpvaW50IGluaXQgZGljdGlvbmFy
aWVzLgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmg6CisgICAg
ICAgICogdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIHRl
c3RpbmcvV2ViWFJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRmVhdHVyZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJUZXN0OjpzaW11bGF0ZURldmljZUNvbm5lY3Rpb24pOgor
ICAgICAgICBBbGxvdyB0ZXN0IGRldmljZSB0byBzcGVjaWZ5IGEgbGlzdCBvZiBlbmFibGVkIGZl
YXR1cmVzIHRoYXQgZG9uJ3QgbmVlZAorICAgICAgICBmdXJ0aGVyIGV4cGxpY2l0IGNvbnNlbnQu
CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYlhS
VGVzdC5pZGw6CisKIDIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBEcm9wIHVubmVjZXNzYXJ5IEV4Y2VwdGlvbk9yPD4gcmV0dXJuIHR5cGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDE5MjZiMTU1MzNkYTMwYmNmNDc3OTMwMzQ3NWFhY2E4ODQ4MzQ4NjcuLjI2YjJi
NTFhZTM5ZjRiMTlkM2Y2MDNiN2E1OGM0MDgxOTNmYTM0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjItMDQtMDcgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYlhSXSBJbXBsZW1lbnQgdGhlIFdlYlhSIEhhbmQgSW5wdXQgbW9kdWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5NjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9YUi9YUkRl
dmljZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6WFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgSW5pdGlhbGl6ZSBpbnB1dCBzb3VyY2Vz
IG9uIHNlc3Npb24gc3RhcnQuCisKIDIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpk
ZXNlcmlhbGl6ZSB0byBub3QgYWxsb2NhdGUgYSBuZXcgSlNDb250ZXh0IGV2ZXJ5IHNlY29uZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXgg
MDgzMTA1MTZhZjYyNTMyODg0ODJkMWY1MWMyZGQ3MzI5NzQ3MTFhYi4uMzk3YzZiYjA4YjE2ZDMx
ZmVmMWEyOGIyOTc1ZGEyNjE3ZDEzNGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNjIyLDYgKzE2MjIsNyBAQCAkKFBST0pFQ1Rf
RElSKS9zdmcveGxpbmthdHRycy5pbgogJChQUk9KRUNUX0RJUikvdGVzdGluZy9GYWtlWFJCb3Vu
ZHNQb2ludC5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvRmFrZVhSQnV0dG9uU3RhdGVJbml0
LmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsCisk
KFBST0pFQ1RfRElSKS90ZXN0aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbAogJChQUk9KRUNU
X0RJUikvdGVzdGluZy9GYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuaWRsCiAkKFBST0pFQ1RfRElS
KS90ZXN0aW5nL0Zha2VYUlZpZXdJbml0LmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9HQ09i
c2VydmF0aW9uLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCA4ODdjNzY1OWU3Zjg2NDM2Y2QwMmRkODQ5M2JkOTM5MTY1MmZjYmM2
Li5hM2Q2OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtODM1LDYgKzgz
NSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFr
ZVhSQnV0dG9uU3RhdGVJbml0LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJJbnB1dFNvdXJjZUluaXQuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zha2VYUklucHV0
U291cmNlSW5pdC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5p
dC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRmFrZVhSVmlld0luaXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA3MWE4Y2U3MDg2ZmE3OWRhYThiNzUxMzE1YmY0M2E0NDNhNjE5YWZiLi5kNjYz
YzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQyMTZlNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTE0NjIsNiArMTQ2Miw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAg
ICAgJChXZWJDb3JlKS90ZXN0aW5nL0Zha2VYUkJvdW5kc1BvaW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS90ZXN0aW5nL0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
dGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL3Rlc3Rp
bmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL0Zha2VY
UlZpZXdJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5p
ZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
K0hhbmRJbnB1dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUr
SGFuZElucHV0LmlkbAppbmRleCA0N2EzYmZiZTVhNmE4YTExZTUwZWJmMmU2ZjBlOTY0ZGI1OGE3
YWFhLi4wYjY4NDNjYjllMGM1ODViZDQwNWMzY2JkNDVkMTcxODFmMzkxOTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUrSGFuZElucHV0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUrSGFuZElucHV0Lmlk
bApAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAogICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViWFJFbmFibGVkJldlYlhSSGFuZElucHV0TW9kdWxlRW5hYmxlZCwK
IF0gcGFydGlhbCBpbnRlcmZhY2UgV2ViWFJGcmFtZSB7Ci0gICAgV2ViWFJKb2ludFBvc2U/IGdl
dEpvaW50UG9zZShXZWJYUkpvaW50U3BhY2Ugam9pbnQsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsK
KyAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBXZWJYUkpvaW50UG9zZT8gZ2V0Sm9pbnRQ
b3NlKFdlYlhSSm9pbnRTcGFjZSBqb2ludCwgV2ViWFJTcGFjZSBiYXNlU3BhY2UpOwogICAgIGJv
b2xlYW4gZmlsbEpvaW50UmFkaWkoc2VxdWVuY2U8V2ViWFJKb2ludFNwYWNlPiBqb2ludFNwYWNl
cywgRmxvYXQzMkFycmF5IHJhZGlpKTsKLSAgICBib29sZWFuIGZpbGxQb3NlcyhzZXF1ZW5jZTxX
ZWJYUlNwYWNlPiBzcGFjZXMsIFdlYlhSU3BhY2UgYmFzZVNwYWNlLCBGbG9hdDMyQXJyYXkgdHJh
bnNmb3Jtcyk7CisgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVudF0gYm9vbGVhbiBmaWxsUG9z
ZXMoc2VxdWVuY2U8V2ViWFJTcGFjZT4gc3BhY2VzLCBXZWJYUlNwYWNlIGJhc2VTcGFjZSwgRmxv
YXQzMkFycmF5IHRyYW5zZm9ybXMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSRnJhbWUuY3BwCmluZGV4IGYxYWZkNDMzZTI1Y2MyNTM1Njg3NzJkNzQ2YjdlNzc3Yzhi
YTFlNjAuLjMzMmMzNzZiN2QwMWY3NmZlZmYzZWI3YmRkYTkxMTZiYTNmZDhkYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMTM2LDggKzEzNiwx
MCBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+
PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoYwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxv
cHQgfTsKIAogICAgIGF1dG8gZWZmZWN0aXZlT3JpZ2luID0gc3BhY2UuZWZmZWN0aXZlT3JpZ2lu
KCk7CisgICAgLy8gQSBzcGFjZSdzIGVmZmVjdGl2ZU9yaWdpbiBjYW4gYmUgbnVsbCwgc3VjaCBh
cyBhIGpvaW50IHBvc2UgZnJvbSBhIGhhbmQgdGhhdCBoYXMKKyAgICAvLyBvdGhlciBtaXNzaW5n
IGpvaW50IHBvc2VzLgogICAgIGlmICghZWZmZWN0aXZlT3JpZ2luKQotICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpu
dWxsb3B0IH07CiAKICAgICBhdXRvIHRyYW5zZm9ybSA9ICAqYmFzZVRyYW5zZm9ybS52YWx1ZSgp
LmludmVyc2UoKSAqIGVmZmVjdGl2ZU9yaWdpbi52YWx1ZSgpOwogCkBAIC0yNjMsMjMgKzI2NSwx
MTUgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZUQKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCiAK
IC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItaGFuZC1pbnB1dC8jZG9t
LXhyZnJhbWUtZ2V0am9pbnRwb3NlCi1FeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJKb2ludFBvc2U+
PiBXZWJYUkZyYW1lOjpnZXRKb2ludFBvc2UoY29uc3QgV2ViWFJKb2ludFNwYWNlJiBqb2ludCwg
Y29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlKQorRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSSm9p
bnRQb3NlPj4gV2ViWFJGcmFtZTo6Z2V0Sm9pbnRQb3NlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgV2ViWFJKb2ludFNwYWNlJiBqb2ludFNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJiBi
YXNlU3BhY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGpvaW50KTsKLSAgICBVTlVTRURfUEFSQU0o
YmFzZVNwYWNlKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHBvcHVsYXRlUG9zZVJl
c3VsdCA9IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgam9pbnRTcGFjZSwgYmFzZVNwYWNlKTsKKyAg
ICBpZiAocG9wdWxhdGVQb3NlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
cG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gcG9wdWxh
dGVWYWx1ZSA9IHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBp
ZiAoIXBvcHVsYXRlVmFsdWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IFJlZlB0cjxXZWJYUkpvaW50UG9zZT4oV2ViWFJKb2ludFBvc2U6OmNyZWF0ZShXZWJYUlJpZ2lk
VHJhbnNmb3JtOjpjcmVhdGUocG9wdWxhdGVWYWx1ZS0+dHJhbnNmb3JtKSwgcG9wdWxhdGVWYWx1
ZS0+ZW11bGF0ZWRQb3NpdGlvbiwgam9pbnRTcGFjZS5yYWRpdXMoKSkpOwogfQogCiAvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWhhbmQtaW5wdXQvI2RvbS14cmZyYW1l
LWZpbGxqb2ludHJhZGlpCi1FeGNlcHRpb25Pcjxib29sPiBXZWJYUkZyYW1lOjpmaWxsSm9pbnRS
YWRpaShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+LCBjb25zdCBGbG9hdDMy
QXJyYXkmKQorRXhjZXB0aW9uT3I8Ym9vbD4gV2ViWFJGcmFtZTo6ZmlsbEpvaW50UmFkaWkoY29u
c3QgVmVjdG9yPFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+PiBqb2ludFNwYWNlcywgRmxvYXQzMkFy
cmF5JiByYWRpaSkKIHsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBJZiBmcmFtZeKAmXMgYWN0
aXZlIGJvb2xlYW4gaXMgZmFsc2UsIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9y
dCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fYWN0aXZlKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGcmFtZSBpcyBub3QgYWN0aXZlIl9zIH07CisKKyAg
ICAvLyBGb3IgZWFjaCBqb2ludCBpbiB0aGUgam9pbnRTcGFjZXM6CisgICAgLy8gSWYgam9pbnTi
gJlzIHNlc3Npb24gaXMgZGlmZmVyZW50IGZyb20gc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGZvciAoY29uc3QgYXV0byYgam9p
bnRTcGFjZSA6IGpvaW50U3BhY2VzKSB7CisgICAgICAgIGlmICgham9pbnRTcGFjZSB8fCBqb2lu
dFNwYWNlLT5zZXNzaW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSm9pbnQgc3BhY2UncyBzZXNzaW9uIGRv
ZXMgbm90IG1hdGNoIGZyYW1lJ3Mgc2Vzc2lvbiJfcyB9OworICAgIH0KKworICAgIC8vIElmIHRo
ZSBsZW5ndGggb2Ygam9pbnRTcGFjZXMgaXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVt
ZW50cyBpbiByYWRpaSwgdGhyb3cgYSBUeXBlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgor
ICAgIGlmIChqb2ludFNwYWNlcy5zaXplKCkgPiByYWRpaS5sZW5ndGgoKSkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuZXhwZWN0ZWQgbGVuZ3RoIG9mIHJhZGlpIGFy
cmF5Il9zIH07CisKKyAgICAvLyBMZXQgYWxsVmFsaWQgYmUgdHJ1ZS4KKyAgICBib29sIGFsbFZh
bGlkID0gdHJ1ZTsKKworICAgIC8vIEZvciBlYWNoIGpvaW50IGluIHRoZSBqb2ludFNwYWNlczoK
KyAgICAvLyAxLiBTZXQgdGhlIGZsb2F0IHZhbHVlIG9mIHJhZGlpIGF0IG9mZnNldCBhcyBmb2xs
b3dzOgorICAgIC8vIElmIHRoZSB1c2VyIGFnZW50IGNhbiBkZXRlcm1pbmUgdGhlIHBvc2VzIG9m
IGFsbCB0aGUgam9pbnRzIGJlbG9uZ2luZyB0byB0aGUgam9pbnTigJlzIGhhbmQ6CisgICAgLy8g
ICAgIFNldCB0aGUgZmxvYXQgdmFsdWUgb2YgcmFkaWkgYXQgb2Zmc2V0IHRvIHRoYXQgcmFkaXVz
LgorICAgIC8vIE90aGVyd2lzZQorICAgIC8vICAgICBTZXQgdGhlIGZsb2F0IHZhbHVlIG9mIHJh
ZGlpIGF0IG9mZnNldCB0byBOYU4uCisgICAgLy8gICAgIFNldCBhbGxWYWxpZCB0byBmYWxzZS4K
KyAgICAvLyAyLiBJbmNyZWFzZSBvZmZzZXQgYnkgMS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGpvaW50U3BhY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChqb2ludFNwYWNlc1tp
XS0+aGFuZEhhc01pc3NpbmdQb3NlcygpKSB7CisgICAgICAgICAgICByYWRpaS5zZXQoaSwgc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpKTsKKyAgICAgICAgICAgIGFsbFZh
bGlkID0gZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmFkaWkuc2V0KGksIGpv
aW50U3BhY2VzW2ldLT5yYWRpdXMoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGFsbFZhbGlkOwog
fQogCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWhhbmQtaW5wdXQv
I2RvbS14cmZyYW1lLWZpbGxwb3NlcwotRXhjZXB0aW9uT3I8Ym9vbD4gV2ViWFJGcmFtZTo6Zmls
bFBvc2VzKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJTcGFjZT4+LCBjb25zdCBXZWJYUlNwYWNl
JiwgY29uc3QgRmxvYXQzMkFycmF5JikKK0V4Y2VwdGlvbk9yPGJvb2w+IFdlYlhSRnJhbWU6OmZp
bGxQb3Nlcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2Vi
WFJTcGFjZT4+IHNwYWNlcywgY29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlLCBGbG9hdDMyQXJy
YXkmIHRyYW5zZm9ybXMpCiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gSWYgZnJhbWXigJlz
IGFjdGl2ZSBib29sZWFuIGlzIGZhbHNlLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQg
YWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCFtX2FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRnJhbWUgaXMgbm90IGFjdGl2ZSJfcyB9Owor
CisgICAgLy8gRm9yIGVhY2ggc3BhY2UgaW4gdGhlIHNwYWNlcyBzZXF1ZW5jZToKKyAgICAvLyBJ
ZiBzcGFjZeKAmXMgc2Vzc2lvbiBpcyBkaWZmZXJlbnQgZnJvbSBzZXNzaW9uLCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgZm9yIChjb25zdCBh
dXRvJiBzcGFjZSA6IHNwYWNlcykgeworICAgICAgICBpZiAoIXNwYWNlIHx8IHNwYWNlLT5zZXNz
aW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiU3BhY2UncyBzZXNzaW9uIGRvZXMgbm90IG1hdGNoIGZyYW1l
J3Mgc2Vzc2lvbiJfcyB9OworICAgIH0KKworICAgIC8vIElmIGJhc2VTcGFjZeKAmXMgc2Vzc2lv
biBpcyBkaWZmZXJlbnQgZnJvbSBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKGJhc2VTcGFjZS5zZXNzaW9uKCkgIT0gbV9z
ZXNzaW9uLnB0cigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYXNlIHNwYWNlJ3Mgc2Vzc2lvbiBkb2VzIG5vdCBtYXRjaCBmcmFtZSdzIHNlc3Npb24i
X3MgfTsKKworICAgIC8vIElmIHRoZSBsZW5ndGggb2Ygc3BhY2VzIG11bHRpcGxpZWQgYnkgMTYg
aXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0cmFuc2Zvcm1zLAorICAg
IC8vIHRocm93IGEgVHlwZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBjb25zdCBz
aXplX3QgbnVtYmVyT2ZGbG9hdHNQZXJUcmFuc2Zvcm0gPSAxNjsKKyAgICBpZiAoc3BhY2VzLnNp
emUoKSAqIG51bWJlck9mRmxvYXRzUGVyVHJhbnNmb3JtID4gdHJhbnNmb3Jtcy5sZW5ndGgoKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuZXhwZWN0ZWQgbGVuZ3Ro
IG9mIHRyYW5zZm9ybXMgYXJyYXkiX3MgfTsKKworICAgIC8vIENoZWNrIGlmIHBvc2VzIG1heSBi
ZSByZXBvcnRlZCBhbmQsIGlmIG5vdCwgdGhyb3cgYSBTZWN1cml0eUVycm9yIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fc2Vzc2lvbi0+cG9zZXNDYW5CZVJlcG9ydGVkKGRvY3Vt
ZW50KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJQb3NlcyBj
YW5ub3QgYmUgcmVwb3J0ZWQiX3MgfTsKKworICAgIC8vIExldCBhbGxWYWxpZCBiZSB0cnVlLgor
ICAgIGJvb2wgYWxsVmFsaWQgPSB0cnVlOworCisgICAgLy8gRm9yIGVhY2ggc3BhY2UgaW4gdGhl
IHNwYWNlcyBzZXF1ZW5jZToKKyAgICBmb3IgKHNpemVfdCBzcGFjZUluZGV4ID0gMDsgc3BhY2VJ
bmRleCA8IHNwYWNlcy5zaXplKCk7ICsrc3BhY2VJbmRleCkgeworICAgICAgICAvLyAxLiBQb3B1
bGF0ZSB0aGUgcG9zZSBvZiBzcGFjZSBpbiBiYXNlU3BhY2UgYXQgdGhlIHRpbWUgcmVwcmVzZW50
ZWQgYnkgZnJhbWUgaW50byBwb3NlLgorICAgICAgICBhdXRvIHBvcHVsYXRlUG9zZVJlc3VsdCA9
IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgKihzcGFjZXNbc3BhY2VJbmRleF0pLCBiYXNlU3BhY2Up
OworICAgICAgICBpZiAocG9wdWxhdGVQb3NlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAg
ICAgICAgLy8gMi4gSWYgcG9zZSBpcyBudWxsLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CisgICAgICAgIC8vIDMuIFNldCAxNiBjb25zZWN1dGl2ZSBlbGVtZW50cyBvZiB0aGUgdHJhbnNm
b3JtcyBhcnJheSBzdGFydGluZyBhdCBvZmZzZXQgdG8gTmFOLgorICAgICAgICAvLyA0LiBTZXQg
YWxsVmFsaWQgdG8gZmFsc2UuCisgICAgICAgIGF1dG8gcG9wdWxhdGVWYWx1ZSA9IHBvcHVsYXRl
UG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgaWYgKCFwb3B1bGF0ZVZh
bHVlKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB0cmFuc2Zvcm1JbmRleCA9IDA7IHRyYW5z
Zm9ybUluZGV4IDwgbnVtYmVyT2ZGbG9hdHNQZXJUcmFuc2Zvcm07ICsrdHJhbnNmb3JtSW5kZXgp
CisgICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy5zZXQoc3BhY2VJbmRleCAqIG51bWJlck9mRmxv
YXRzUGVyVHJhbnNmb3JtICsgdHJhbnNmb3JtSW5kZXgsIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjpxdWlldF9OYU4oKSk7CisgICAgICAgICAgICBhbGxWYWxpZCA9IGZhbHNlOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gNS4gSWYgcG9zZSBpcyBub3QgbnVsbCwgY29weSBh
bGwgZWxlbWVudHMgZnJvbSBwb3Nl4oCZcyBtYXRyaXggbWVtYmVyIHRvIHRoZSB0cmFuc2Zvcm1z
IGFycmF5IHN0YXJ0aW5nIGF0IG9mZnNldC4KKyAgICAgICAgICAgIC8vIDYuIEluY3JlYXNlIG9m
ZnNldCBieSAxNi4KKyAgICAgICAgICAgIGF1dG8gbWF0cml4ID0gcG9wdWxhdGVWYWx1ZS0+dHJh
bnNmb3JtLnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KCk7CisgICAgICAgICAgICBmb3IgKHNpemVf
dCB0cmFuc2Zvcm1JbmRleCA9IDA7IHRyYW5zZm9ybUluZGV4IDwgbnVtYmVyT2ZGbG9hdHNQZXJU
cmFuc2Zvcm07ICsrdHJhbnNmb3JtSW5kZXgpCisgICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy5z
ZXQoc3BhY2VJbmRleCAqIG51bWJlck9mRmxvYXRzUGVyVHJhbnNmb3JtICsgdHJhbnNmb3JtSW5k
ZXgsIG1hdHJpeFt0cmFuc2Zvcm1JbmRleF0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGFsbFZhbGlkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmgKaW5kZXggYmJhYTJjZGQ4ZTlmY2I4ZWYwNjRkNTQ3NDgxMjQ0ZDlkNDEyMzhm
Ni4uNTE0NzkyNGNhMTJmZjYyMGEwYmUwNzljYmMwODI2Mjg0YTI2YjAzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKQEAgLTYwLDkgKzYwLDkgQEAgcHVibGlj
OgogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBnZXRQb3NlKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAogI2lmIEVOQUJM
RShXRUJYUl9IQU5EUykKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJKb2ludFBvc2U+PiBn
ZXRKb2ludFBvc2UoY29uc3QgV2ViWFJKb2ludFNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpOwot
ICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGZpbGxKb2ludFJhZGlpKGNvbnN0IFZlY3RvcjxSZWZQdHI8
V2ViWFJKb2ludFNwYWNlPj4sIGNvbnN0IEZsb2F0MzJBcnJheSYpOwotICAgIEV4Y2VwdGlvbk9y
PGJvb2w+IGZpbGxQb3Nlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSU3BhY2U+PiwgY29uc3Qg
V2ViWFJTcGFjZSYsIGNvbnN0IEZsb2F0MzJBcnJheSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0
cjxXZWJYUkpvaW50UG9zZT4+IGdldEpvaW50UG9zZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFdl
YlhSSm9pbnRTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKKyAgICBFeGNlcHRpb25Pcjxib29s
PiBmaWxsSm9pbnRSYWRpaShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+LCBG
bG9hdDMyQXJyYXkmKTsKKyAgICBFeGNlcHRpb25Pcjxib29sPiBmaWxsUG9zZXMoY29uc3QgRG9j
dW1lbnQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSU3BhY2U+PiwgY29uc3QgV2ViWFJTcGFj
ZSYsIEZsb2F0MzJBcnJheSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJl
c1RpbWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJIYW5kLmNwcAppbmRleCBmNTNlNDFiZmQyZWY1YWQ1OTk3MmIzNGVkN2E2
ZjMzNTU5YzFjMzkxLi45NWJiZThiN2MxZTgzZmVkNGM3YWU1ZTdiYTUxNjA5MzRjZTRiNTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3BwCkBAIC00MywxNCAr
NDMsMjQgQEAgUmVmPFdlYlhSSGFuZD4gV2ViWFJIYW5kOjpjcmVhdGUoY29uc3QgV2ViWFJJbnB1
dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiBXZWJYUkhhbmQ6OldlYlhSSGFuZChjb25zdCBXZWJYUklu
cHV0U291cmNlJiBpbnB1dFNvdXJjZSkKICAgICA6IG1faW5wdXRTb3VyY2UoaW5wdXRTb3VyY2Up
CiB7CisgICAgYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKTsKKyAgICBhdXRvKiBkb2N1
bWVudCA9IHNlc3Npb24gPyBkb3duY2FzdDxEb2N1bWVudD4oc2Vzc2lvbi0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSA6IG51bGxwdHI7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KFhS
SGFuZEpvaW50OjpDb3VudCk7ICsraSkKKyAgICAgICAgbV9qb2ludHMuYXBwZW5kKFdlYlhSSm9p
bnRTcGFjZTo6Y3JlYXRlKCpkb2N1bWVudCwgKnRoaXMsIHN0YXRpY19jYXN0PFhSSGFuZEpvaW50
PihpKSkpOwogfQogCiBXZWJYUkhhbmQ6On5XZWJYUkhhbmQoKSA9IGRlZmF1bHQ7CiAKIFJlZlB0
cjxXZWJYUkpvaW50U3BhY2U+IFdlYlhSSGFuZDo6Z2V0KGNvbnN0IFhSSGFuZEpvaW50JiBrZXkp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgc2l6
ZV90IGpvaW50SW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGtleSk7CisgICAgaWYgKGpvaW50
SW5kZXggPj0gbV9qb2ludHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBtX2pvaW50c1tqb2ludEluZGV4XS5wdHIoKTsKIH0KIAogV2ViWFJIYW5kOjpJdGVy
YXRvcjo6SXRlcmF0b3IoV2ViWFJIYW5kJiBoYW5kKQpAQCAtNjAsMTkgKzcwLDQ0IEBAIFdlYlhS
SGFuZDo6SXRlcmF0b3I6Okl0ZXJhdG9yKFdlYlhSSGFuZCYgaGFuZCkKIAogc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+Pj4gV2Vi
WFJIYW5kOjpJdGVyYXRvcjo6bmV4dCgpCiB7Ci0gICAgaWYgKG1faW5kZXggPiBtX2hhbmQtPm1f
am9pbnRzLnNpemUoKSkKKyAgICBpZiAobV9pbmRleCA+PSBtX2hhbmQtPm1fam9pbnRzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgc2l6ZV90IGluZGV4ID0gbV9pbmRleCsrOworICAgIHJldHVybiBLZXlWYWx1ZVBh
aXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+PiB7IHN0YXRpY19jYXN0PFhS
SGFuZEpvaW50PihpbmRleCksIG1faGFuZC0+bV9qb2ludHNbaW5kZXhdLnB0cigpIH07CiB9CiAK
IFdlYlhSU2Vzc2lvbiogV2ViWFJIYW5kOjpzZXNzaW9uKCkKIHsKICAgICBpZiAoIW1faW5wdXRT
b3VyY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgcmV0dXJuIG1faW5wdXRTb3Vy
Y2UuZ2V0KCktPnNlc3Npb24oKTsKIH0KIAordm9pZCBXZWJYUkhhbmQ6OnVwZGF0ZUZyb21JbnB1
dFNvdXJjZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2Um
IGlucHV0U291cmNlKQoreworICAgIGlmICghaW5wdXRTb3VyY2UuaGFuZEpvaW50cykgeworICAg
ICAgICBtX2hhc01pc3NpbmdQb3NlcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SGFuZEpvaW50c1ZlY3Rv
ciYgaGFuZEpvaW50cyA9ICooaW5wdXRTb3VyY2UuaGFuZEpvaW50cyk7CisgICAgaWYgKGhhbmRK
b2ludHMuc2l6ZSgpICE9IG1fam9pbnRzLnNpemUoKSkgeworICAgICAgICBtX2hhc01pc3NpbmdQ
b3NlcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIGhhc01pc3Np
bmdQb3NlcyA9IGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGFuZEpvaW50cy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAoIWhhbmRKb2ludHNbaV0pCisgICAgICAgICAgICBo
YXNNaXNzaW5nUG9zZXMgPSB0cnVlOworCisgICAgICAgIG1fam9pbnRzW2ldLT51cGRhdGVGcm9t
Sm9pbnQoaGFuZEpvaW50c1tpXSk7CisgICAgfQorICAgIG1faGFzTWlzc2luZ1Bvc2VzID0gaGFz
TWlzc2luZ1Bvc2VzOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJIYW5kLmgKaW5kZXggZGJlMTE0MzI1M2Q1NzA3OTFhZmM3YmQ4Njg4Yzk5MmRjM2Zi
YmFmZS4uZWRiYWI1OTYwZDM1OTBjMjE0ZDBkMjU0MTEyNGYwZjVmZDFmZGFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oCkBAIC0zNiwxNyArMzYsMTggQEAKICNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBXZWJYUkhhbmQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUkhhbmQ+
IHsKK2NsYXNzIFdlYlhSSGFuZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSGFuZD4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXZWJYUkhhbmQ+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFdlYlhSSGFuZCk7CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFdlYlhSSGFuZD4gY3JlYXRl
KGNvbnN0IFdlYlhSSW5wdXRTb3VyY2UmKTsKICAgICB+V2ViWFJIYW5kKCk7CiAKLSAgICB1bnNp
Z25lZCBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIHsgcmV0
dXJuIG1fam9pbnRzLnNpemUoKTsgfQogCiAgICAgUmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4gZ2V0
KGNvbnN0IFhSSGFuZEpvaW50JiBrZXkpOwogCkBAIC02MSwxNiArNjIsMTcgQEAgcHVibGljOgog
ICAgIH07CiAgICAgSXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSB7IHJldHVybiBJdGVyYXRvcigq
dGhpcyk7IH0KIAotICAgIC8vIEZvciBHQyByZWFjaGFibGl0aXkuCisgICAgLy8gRm9yIEdDIHJl
YWNoYWJpbGl0eS4KICAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKTsKIAorICAgIGJvb2wgaGFz
TWlzc2luZ1Bvc2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNaXNzaW5nUG9zZXM7IH0KKyAgICB2
b2lkIHVwZGF0ZUZyb21JbnB1dFNvdXJjZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2UmKTsKKwogcHJpdmF0ZToKICAgICBXZWJYUkhhbmQoY29uc3QgV2Vi
WFJJbnB1dFNvdXJjZSYpOwogCi0gICAgdW5zaWduZWQgbV9zaXplIHsgMCB9OwotICAgIHVzaW5n
IEhhbmRKb2ludFRvU3BhY2VNYXAgPSBIYXNoTWFwPFhSSGFuZEpvaW50LCBSZWY8V2ViWFJKb2lu
dFNwYWNlPiwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj47Ci0gICAgSGFuZEpvaW50VG9TcGFjZU1hcCBtX2pvaW50czsK
LQorICAgIFZlY3RvcjxSZWY8V2ViWFJKb2ludFNwYWNlPj4gbV9qb2ludHM7CisgICAgYm9vbCBt
X2hhc01pc3NpbmdQb3NlcyB7IHRydWUgfTsKICAgICBXZWFrUHRyPFdlYlhSSW5wdXRTb3VyY2U+
IG1faW5wdXRTb3VyY2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUklucHV0U291cmNlLmNwcAppbmRleCA1ZjU2OTNlMzAxMDNkMmZlNzM1ODRlMTI4MWRl
MDc2OGJhYjg3ZjUwLi4wYWE4OWQxZWU3YzI0NTcwOGZkOTBlYzQyODIzMTAxYmY0OWMzNjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5j
cHAKQEAgLTg4LDE2ICs4OCwxOSBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnVwZGF0ZShkb3Vi
bGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgaWYgKHNvdXJjZS5zaW11bGF0ZUhhbmQpIHsK
LSAgICAgICAgLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IGNyZWF0ZXMgYW4gb2JqZWN0IGp1c3Qg
Zm9yIHVzZSBpbiB0ZXN0aW5nLgotICAgICAgICAvLyBUaGUgcmVhbCBpbXBsZW1lbnRhdGlvbiB3
aWxsIHVzZSBhY3R1YWwgZGF0YSBhbmQgb25seSBiZSB2aXNpYmxlCi0gICAgICAgIC8vIGlmIGhh
bmQtdHJhY2tpbmcgd2FzIHJlcXVlc3RlZCBhdCBzZXNzaW9uIHN0YXJ0LgotICAgICAgICBpZiAo
IW1faGFuZCkKKyAgICBpZiAoc291cmNlLmhhbmRKb2ludHMpIHsKKyAgICAgICAgLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSL3dlYnhyLWhhbmQtaW5wdXQtMS8jeHJpbnB1dHNvdXJjZS1pbnRlcmZh
Y2UKKyAgICAgICAgLy8gSWYgdGhlIFhSSW5wdXRTb3VyY2UgYmVsb25ncyB0byBhbiBYUlNlc3Np
b24gdGhhdCBoYXMgbm90IGJlZW4gcmVxdWVzdGVkCisgICAgICAgIC8vIHdpdGggdGhlICJoYW5k
LXRyYWNraW5nIiBmZWF0dXJlIGRlc2NyaXB0b3IsIGhhbmQgTVVTVCBiZSBudWxsLgorICAgICAg
ICBpZiAoIW1faGFuZCAmJiBzZXNzaW9uLT5pc0hhbmRUcmFja2luZ0VuYWJsZWQoKSkKICAgICAg
ICAgICAgIG1faGFuZCA9IFdlYlhSSGFuZDo6Y3JlYXRlKCp0aGlzKTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgbV9oYW5kID0gbnVsbHB0cjsKLSNlbmRpZgogCisgICAgICAgIGlmIChtX2hhbmQpCisg
ICAgICAgICAgICBtX2hhbmQtPnVwZGF0ZUZyb21JbnB1dFNvdXJjZShzb3VyY2UpOworCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBXZWJYUklucHV0U291cmNlOjpy
ZXF1aXJlc0lucHV0U291cmNlQ2hhbmdlKGNvbnN0IElucHV0U291cmNlJiBzb3VyY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCmluZGV4IDRi
NzgzYjBjNjZiY2RkNzU5NjkwOThhMTJlMWRhMjdiNzcxMjFhNjMuLmVkMDQ1YmI3NDZiNmUyZDc0
ZmUzOGU1ZTdkNTJhMWRhMzE4ZmYyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCkBAIC0zNCwxMyArMzQsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJKb2ludFBvc2UpOwog
Ci1SZWY8V2ViWFJKb2ludFBvc2U+IFdlYlhSSm9pbnRQb3NlOjpjcmVhdGUoUmVmPFdlYlhSUmln
aWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCitSZWY8V2Vi
WFJKb2ludFBvc2U+IFdlYlhSSm9pbnRQb3NlOjpjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24sIGZsb2F0IHJhZGl1cykKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkpvaW50UG9zZShXVEZNb3ZlKHRyYW5zZm9y
bSksIGVtdWxhdGVkUG9zaXRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkpv
aW50UG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24sIHJhZGl1cykpOwog
fQogCi1XZWJYUkpvaW50UG9zZTo6V2ViWFJKb2ludFBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCitXZWJYUkpvaW50UG9zZTo6
V2ViWFJKb2ludFBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29s
IGVtdWxhdGVkUG9zaXRpb24sIGZsb2F0IHJhZGl1cykKICAgICA6IFdlYlhSUG9zZShXVEZNb3Zl
KHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pCisgICAgLCBtX3JhZGl1cyhyYWRpdXMpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2lu
dFBvc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaApp
bmRleCAxZDdjNzQxYTNhYTY0YTVmOTg1OTg1ZWNhZDdlMjhmZmVhNzY4OTlkLi43ZWExNWNiNTVh
ZGRjM2RjNWYyYzJjMTdhNmJhNTEyMGIwMzc4MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5oCkBAIC0zOSwxMyArMzksMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgV2ViWFJKb2ludFBvc2UgOiBwdWJsaWMgV2ViWFJQb3NlIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSSm9pbnRQb3NlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYlhSSm9pbnRQb3NlPiBjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
JiYsIGJvb2wgZW11bGF0ZWRQb3NpdGlvbik7CisgICAgc3RhdGljIFJlZjxXZWJYUkpvaW50UG9z
ZT4gY3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRp
b24sIGZsb2F0IHJhZGl1cyk7CiAgICAgfldlYlhSSm9pbnRQb3NlKCkgPSBkZWZhdWx0OwogCiAg
ICAgZmxvYXQgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXM7IH0KIAogcHJpdmF0ZToK
LSAgICBXZWJYUkpvaW50UG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVs
YXRlZFBvc2l0aW9uKTsKKyAgICBXZWJYUkpvaW50UG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uLCBmbG9hdCByYWRpdXMpOwogCiAgICAgZmxvYXQg
bV9yYWRpdXMgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkpvaW50UG9zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSm9pbnRQb3NlLmlkbAppbmRleCA5ZWJkOGJmNTNiMmY5ODU5ZTk5MGI5ZWRmNDU1YTlhYzQ4
Mzc1OTZhLi43M2VjYWVjMjQwZDBmMmI5NzcyZWYxNGI1ZThjMDdmOWNkNzMwOTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbApAQCAtMjYs
NiArMjYsOCBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAogICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViWFJFbmFibGVkJldlYlhSSGFuZElucHV0TW9kdWxlRW5hYmxlZCwKKyAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAg
U2VjdXJlQ29udGV4dCwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbnRlcmZhY2VOYW1lPVhS
Sm9pbnRQb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Sm9pbnRTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRT
cGFjZS5jcHAKaW5kZXggOWVlNjUwZmUwOTA4Y2JjNTM3YThlYzc5MzNkYTZmMGU0OGYzNTBmMC4u
ZDBmYjcxZGRjYTRjNzAwYmQzNjY4NWM0NDllNzlhMWRhYTdlMDY5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmNwcApAQCAtMjgsNiArMjgs
OCBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBFTkFCTEUoV0VCWFJfSEFORFMpCiAKKyNpbmNs
dWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViWFJIYW5kLmgiCiAjaW5jbHVkZSAiV2Vi
WFJSaWdpZFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAK
QEAgLTM1LDIyICszNyw0NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChXZWJYUkpvaW50U3BhY2UpOwogCi1SZWY8V2ViWFJKb2ludFNwYWNlPiBX
ZWJYUkpvaW50U3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYg
c2Vzc2lvbikKK1JlZjxXZWJYUkpvaW50U3BhY2U+IFdlYlhSSm9pbnRTcGFjZTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViWFJIYW5kJiBoYW5kLCBYUkhhbmRKb2ludCBqb2ludE5hbWUs
IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNl
SGFuZEpvaW50PiYmIGpvaW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSm9p
bnRTcGFjZShkb2N1bWVudCwgc2Vzc2lvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlhSSm9pbnRTcGFjZShkb2N1bWVudCwgaGFuZCwgam9pbnROYW1lLCBXVEZNb3ZlKGpvaW50KSkp
OwogfQogCi1XZWJYUkpvaW50U3BhY2U6OldlYlhSSm9pbnRTcGFjZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKK1dlYlhSSm9pbnRTcGFjZTo6V2ViWFJKb2ludFNw
YWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJIYW5kJiBoYW5kLCBYUkhhbmRKb2ludCBqb2lu
dE5hbWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OklucHV0U291cmNlSGFuZEpvaW50PiYgam9pbnQpCiAgICAgOiBXZWJYUlNwYWNlKGRvY3VtZW50
LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSkKLSAgICAsIG1fc2Vzc2lvbihzZXNzaW9u
KQorICAgICwgbV9oYW5kKGhhbmQpCisgICAgLCBtX2pvaW50TmFtZShqb2ludE5hbWUpCiB7Cisg
ICAgdXBkYXRlRnJvbUpvaW50KGpvaW50KTsKIH0KIAogV2ViWFJKb2ludFNwYWNlOjp+V2ViWFJK
b2ludFNwYWNlKCkgPSBkZWZhdWx0OwogCit2b2lkIFdlYlhSSm9pbnRTcGFjZTo6dXBkYXRlRnJv
bUpvaW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OklucHV0U291cmNlSGFuZEpvaW50PiYgam9pbnQpCit7CisgICAgbV9qb2ludCA9IGpvaW50Owor
fQorCitib29sIFdlYlhSSm9pbnRTcGFjZTo6aGFuZEhhc01pc3NpbmdQb3NlcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFtX2hhbmQgfHwgbV9oYW5kLT5oYXNNaXNzaW5nUG9zZXMoKTsKK30KKwor
V2ViWFJTZXNzaW9uKiBXZWJYUkpvaW50U3BhY2U6OnNlc3Npb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX2hhbmQgPyBtX2hhbmQtPnNlc3Npb24oKSA6IG51bGxwdHI7Cit9CisKIHN0ZDo6b3B0
aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFdlYlhSSm9pbnRTcGFjZTo6bmF0aXZlT3JpZ2lu
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIC8vIGh0dHBzOi8vaW1t
ZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItaGFuZC1pbnB1dC8jeHJqb2ludHNwYWNlLWludGVy
ZmFjZQorICAgIC8vIFRoZSBuYXRpdmUgb3JpZ2luIG9mIHRoZSBYUkpvaW50U3BhY2UgbWF5IG9u
bHkgYmUgcmVwb3J0ZWQgd2hlbiBuYXRpdmUgb3JpZ2lucyBvZgorICAgIC8vIGFsbCBvdGhlciBY
UkpvaW50U3BhY2VzIG9uIHRoZSBzYW1lIGhhbmQgYXJlIGJlaW5nIHJlcG9ydGVkLiBXaGVuIGEg
aGFuZCBpcyBwYXJ0aWFsbHkKKyAgICAvLyBvYnNjdXJlZCB0aGUgdXNlciBhZ2VudCBNVVNUIGVp
dGhlciBlbXVsYXRlIHRoZSBvYnNjdXJlZCBqb2ludHMsIG9yIHJlcG9ydCBudWxsIHBvc2VzCisg
ICAgLy8gZm9yIGFsbCBvZiB0aGUgam9pbnRzLgorICAgIGlmIChoYW5kSGFzTWlzc2luZ1Bvc2Vz
KCkgfHwgIW1fam9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UobV9qb2ludC0+cG9zZS5wb3NlKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3Bh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmgKaW5k
ZXggNTEyNTdiY2M1ZTRiNjQ0ZTJiMzUyZmZmMzcxOTY2OWI4ODc3OTY1Zi4uZjlkZDU5MTY0NzMx
MTcxMWFiNTRjY2E4M2IzZDAyMjc1NTI3YmM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFjZS5oCkBAIC0yOSwzMSArMjksMzkgQEAKIAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgotI2luY2x1ZGUgIldlYlhS
U2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKICNpbmNsdWRlICJYUkhhbmRKb2lu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdlYlhS
SGFuZDsKK2NsYXNzIFdlYlhSU2Vzc2lvbjsKKwogY2xhc3MgV2ViWFJKb2ludFNwYWNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViWFJKb2ludFNwYWNlPiwgcHVibGljIFdlYlhSU3BhY2UgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJKb2ludFNwYWNlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYlhSSm9pbnRTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9u
Jik7CisgICAgc3RhdGljIFJlZjxXZWJYUkpvaW50U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdl
YlhSSGFuZCYsIFhSSGFuZEpvaW50LCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dmlydHVhbCB+V2ViWFJKb2ludFNwYWNlKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhS
Sm9pbnRTcGFjZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSSm9pbnRTcGFjZT46
OmRlcmVmOwogCi0gICAgWFJIYW5kSm9pbnQgam9pbnROYW1lKCkgY29uc3QgeyByZXR1cm4gWFJI
YW5kSm9pbnQ6OldyaXN0OyB9CisgICAgWFJIYW5kSm9pbnQgam9pbnROYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9qb2ludE5hbWU7IH0KKworICAgIGZsb2F0IHJhZGl1cygpIGNvbnN0IHsgcmV0dXJu
IG1fam9pbnQgPyBtX2pvaW50LT5yYWRpdXMgOiAwOyB9CisgICAgdm9pZCB1cGRhdGVGcm9tSm9p
bnQoY29uc3Qgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2VIYW5kSm9pbnQ+Jik7CisgICAgYm9vbCBoYW5kSGFzTWlzc2luZ1Bvc2VzKCkgY29u
c3Q7CisKKyAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0
ZToKLSAgICBXZWJYUkpvaW50U3BhY2UoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mKTsKKyAgICBX
ZWJYUkpvaW50U3BhY2UoRG9jdW1lbnQmLCBXZWJYUkhhbmQmLCBYUkhhbmRKb2ludCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VI
YW5kSm9pbnQ+Jik7CiAKLSAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH07CiAgICAgc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4gbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQpAQCAtNjEsNyArNjksOSBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBpc0pvaW50U3BhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8V2ViWFJI
YW5kPiBtX2hhbmQ7CisgICAgWFJIYW5kSm9pbnQgbV9qb2ludE5hbWUgeyBYUkhhbmRKb2ludDo6
V3Jpc3QgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZUhhbmRKb2ludD4gbV9qb2ludDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmlkbAppbmRleCAwMjQxN2U1NmFj
MmZlZTI4ZTc0N2RkZDhhOTBmMTUyMzRkZGVlYmJjLi5hOThlYzA4M2MxZGYwMTc4NTNhMDcyZjEy
ZGM3MGQ3ZjhiNDE2OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSSm9pbnRTcGFjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkpvaW50U3BhY2UuaWRsCkBAIC0yNiw2ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9
V0VCWFJfSEFORFMsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJYUkVuYWJsZWQmV2ViWFJIYW5k
SW5wdXRNb2R1bGVFbmFibGVkLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTR2Vu
ZXJhdGVUb05hdGl2ZU9iamVjdCwKICAgICBTZWN1cmVDb250ZXh0LAogICAgIEV4cG9zZWQ9V2lu
ZG93LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmlu
ZGV4IGYwY2U1OGNjMjI1MGZmN2QxZjRmMDRiMzlmMzBiYmY5ZjAyZTIzYmIuLjJiODRlMGU5ODcx
MjAwNzUwOThjOWMzOGY4NDRkNzhmYTQ5ZTRlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKQEAgLTY0NSw2ICs2NDUsMTQgQEAgYm9vbCBXZWJY
UlNlc3Npb246OnBvc2VzQ2FuQmVSZXBvcnRlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCitib29s
IFdlYlhSU2Vzc2lvbjo6aXNIYW5kVHJhY2tpbmdFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yZXF1ZXN0ZWRGZWF0dXJlcy5jb250YWlucyhQbGF0Zm9ybVhSOjpTZXNzaW9uRmVhdHVy
ZTo6SGFuZFRyYWNraW5nKTsKK30KKyNlbmRpZgorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU2Vzc2lvbi5oCmluZGV4IDg2MGM2ZjViYjgxMWRiNDcxNThkNDU5Mzk1ZmE2NDNkYTlk
YzA0MzMuLmE2Y2ZhODRlYWEyZWJiMTc0ZmZlODBhMDMxN2VhOTk3OGRlN2Q1YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApAQCAtOTgsNiArOTgsMTAg
QEAgcHVibGljOgogICAgIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiBmcmFt
ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lRGF0YTsgfQogICAgIGNvbnN0IFdlYlhSVmll
d2VyU3BhY2UmIHZpZXdlclJlZmVyZW5jZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gKm1fdmlld2Vy
UmVmZXJlbmNlU3BhY2U7IH0KICAgICBib29sIHBvc2VzQ2FuQmVSZXBvcnRlZChjb25zdCBEb2N1
bWVudCYpIGNvbnN0OworICAgIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAgICBib29sIGlz
SGFuZFRyYWNraW5nRW5hYmxlZCgpIGNvbnN0OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgV2Vi
WFJTZXNzaW9uKERvY3VtZW50JiwgV2ViWFJTeXN0ZW0mLCBYUlNlc3Npb25Nb2RlLCBQbGF0Zm9y
bVhSOjpEZXZpY2UmLCBGZWF0dXJlTGlzdCYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2N2Q2Y2MxM2QyODJiNWViNzM3MjNi
OThmMzZjNTM3YjdlM2EyNjFhLi4yYzhhYTlhMzRhMTUwZDlmZTJiNTg0MzBhMGMyMGNlZDcwMzkw
Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNzQ3LDYgKzE3NDcsNyBAQAogCQk1MjczQ0NCMjI1NjQ1NzZGMDA4NTAwMDcg
LyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3M0NDQUQyNTY0NTc2QzAwODUwMDA3IC8qIEpTRmFrZVhS
QnV0dG9uU3RhdGVJbml0LmNwcCAqLzsgfTsKIAkJNTI3M0NDQjMyNTY0NTc2RjAwODUwMDA3IC8q
IEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzNDQ0FFMjU2NDU3NkQwMDg1MDAwNyAvKiBKU0Zha2VY
UlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHAgKi87IH07CiAJCTUyNzNDQ0I0MjU2NDU3NkYwMDg1MDAw
NyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJ
bml0LmNwcCAqLzsgfTsKKwkJNTJBMEJFNjYyN0MyMjdFMTAwNDY2MTFFIC8qIEpTRmFrZVhSSm9p
bnRTdGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTJBMEJFNjUyN0MyMjdFMDAwNDY2MTFFIC8qIEpTRmFrZVhSSm9pbnRTdGF0ZUluaXQu
Y3BwICovOyB9OwogCQk1MkIwRDRCRTFDNTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIwRDRCRDFD
NTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJCMEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIwRDRCRjFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MkIwRDRDMjFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkIwRDRDMTFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEwMDcyLDYgKzEwMDczLDggQEAKIAkJNTFGQjY3RDkxQUU2QjVFNDAwRDA2QzVBIC8qIENv
bnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFGQjY3REExQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNp
b25TdHlsZVNoZWV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRF
eHRlbnNpb25TdHlsZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMTMx
RTVBMUM0RjE1NjEwMDMzRjgwMiAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNjNCRjIwMjdDMUI1
MzgwMDg1MjUwQyAvKiBGYWtlWFJKb2ludFN0YXRlSW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYWtl
WFJKb2ludFN0YXRlSW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjYzQkYy
MjI3QzFCNTNCMDA4NTI1MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZha2VY
UkpvaW50U3RhdGVJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzI0
RjExQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3MjRGMjFDQjJG
REY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjg4QUEzMjdENkE3REEwMDM1NzdBMiAvKiBS
ZXNpZGVudEtleVJlcXVpcmVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc2lkZW50S2V5UmVxdWly
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDg3LDYgKzEwMDkwLDcg
QEAKIAkJNTI3M0NDQUQyNTY0NTc2QzAwODUwMDA3IC8qIEpTRmFrZVhSQnV0dG9uU3RhdGVJbml0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSQnV0dG9u
U3RhdGVJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0NDQUUyNTY0
NTc2RDAwODUwMDA3IC8qIEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0NDQUYyNTY0NTc2RTAwODUwMDA3
IC8qIEpTRmFrZVhSVmlld0luaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNGYWtlWFJWaWV3SW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUyQTBCRTY1MjdDMjI3RTAwMDQ2NjExRSAvKiBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRmFrZVhSSm9pbnRTdGF0ZUlu
aXQuY3BwOyBwYXRoID0gSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyQjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1WaWV3Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MkIwRDRDMTFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjExODks
NiArMjExOTMsOCBAQAogCQkJCUUxOEQ4M0UzMjQzRjcxQ0YwMDkyNDdENiAvKiBGYWtlWFJCdXR0
b25TdGF0ZUluaXQuaWRsICovLAogCQkJCUUxOEQ4M0VBMjQzRjcxRDQwMDkyNDdENiAvKiBGYWtl
WFJJbnB1dFNvdXJjZUluaXQuaCAqLywKIAkJCQlFMThEODNEQzI0M0Y3MUNCMDA5MjQ3RDYgLyog
RmFrZVhSSW5wdXRTb3VyY2VJbml0LmlkbCAqLywKKwkJCQk1MjYzQkYyMDI3QzFCNTM4MDA4NTI1
MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQuaCAqLywKKwkJCQk1MjYzQkYyMjI3QzFCNTNCMDA4
NTI1MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsICovLAogCQkJCUUxOEQ4M0U1MjQzRjcx
RDEwMDkyNDdENiAvKiBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuaCAqLywKIAkJCQlFMThEODNF
NjI0M0Y3MUQxMDA5MjQ3RDYgLyogRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmlkbCAqLywKIAkJ
CQlFMThEODNERjI0M0Y3MUNEMDA5MjQ3RDYgLyogRmFrZVhSVmlld0luaXQuaCAqLywKQEAgLTIx
Mjg0LDYgKzIxMjkwLDcgQEAKIAkJCQk1MjczQ0NBQzI1NjQ1NzZDMDA4NTAwMDcgLyogSlNGYWtl
WFJCb3VuZHNQb2ludC5jcHAgKi8sCiAJCQkJNTI3M0NDQUQyNTY0NTc2QzAwODUwMDA3IC8qIEpT
RmFrZVhSQnV0dG9uU3RhdGVJbml0LmNwcCAqLywKIAkJCQk1MjczQ0NBQTI1NjQ1NzZCMDA4NTAw
MDcgLyogSlNGYWtlWFJJbnB1dFNvdXJjZUluaXQuY3BwICovLAorCQkJCTUyQTBCRTY1MjdDMjI3
RTAwMDQ2NjExRSAvKiBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcCAqLywKIAkJCQk1MjczQ0NB
RTI1NjQ1NzZEMDA4NTAwMDcgLyogSlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuY3BwICovLAog
CQkJCTUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCAqLywK
IAkJCQk1MTcxNEVBRTFDRjY2NTRBMDA0NzIzQzQgLyogSlNHQ09ic2VydmF0aW9uLmNwcCAqLywK
QEAgLTM4ODcyLDYgKzM4ODc5LDcgQEAKIAkJCQk1MjczQ0NCMTI1NjQ1NzZGMDA4NTAwMDcgLyog
SlNGYWtlWFJCb3VuZHNQb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjczQ0NCMjI1NjQ1
NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTI3M0NDQjAyNTY0NTc2RjAwODUwMDA3IC8qIEpTRmFrZVhSSW5wdXRTb3VyY2VJbml0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyQTBCRTY2MjdDMjI3RTEwMDQ2NjExRSAvKiBKU0Zh
a2VYUkpvaW50U3RhdGVJbml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzNDQ0IzMjU2NDU3
NkYwMDg1MDAwNyAvKiBKU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MjczQ0NCNDI1NjQ1NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJWaWV3SW5pdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlERTVGODYxMjFGQTIzOUU3MDA2REI2M0EgLyogSlNHQ09ic2Vy
dmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oCmluZGV4IDkzZDAzZjhhYzlhMjJlMzQ3YThiM2Y2NDAzZjEyZjg0YjE3YWVjNWYuLjRm
N2U1MGQxY2UxYzNjMWMxNGNjMWRmMTc4NDcwNTQwZjU4NzgzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBpbmxpbmUgU3RyaW5n
IHNlc3Npb25GZWF0dXJlRGVzY3JpcHRvcihTZXNzaW9uRmVhdHVyZSBzZXNzaW9uRmVhdHVyZSkK
ICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCiAKIGVudW0gY2xhc3MgSGFuZEpvaW50IDogdW5zaWdu
ZWQgewotICAgIFdyaXN0LAorICAgIFdyaXN0ID0gMCwKICAgICBUaHVtYk1ldGFjYXJwYWwsCiAg
ICAgVGh1bWJQaGFsYW54UHJveGltYWwsCiAgICAgVGh1bWJQaGFsYW54RGlzdGFsLApAQCAtMTg3
LDcgKzE4Nyw4IEBAIGVudW0gY2xhc3MgSGFuZEpvaW50IDogdW5zaWduZWQgewogICAgIFBpbmt5
RmluZ2VyUGhhbGFueFByb3hpbWFsLAogICAgIFBpbmt5RmluZ2VyUGhhbGFueEludGVybWVkaWF0
ZSwKICAgICBQaW5reUZpbmdlclBoYWxhbnhEaXN0YWwsCi0gICAgUGlua3lGaW5nZXJUaXAKKyAg
ICBQaW5reUZpbmdlclRpcCwKKyAgICBDb3VudAogfTsKIAogI2VuZGlmCkBAIC0zMTMsNiArMzE0
LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPElucHV0U291cmNlUG9zZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAg
ICAgfTsKIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAgICAgICAgc3RydWN0IElucHV0U291
cmNlSGFuZEpvaW50IHsKKyAgICAgICAgICAgIElucHV0U291cmNlUG9zZSBwb3NlOworICAgICAg
ICAgICAgZmxvYXQgcmFkaXVzIHsgMCB9OworCisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnB1dFNvdXJjZUhhbmRKb2lu
dD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIFZlY3Rv
cjxzdGQ6Om9wdGlvbmFsPElucHV0U291cmNlSGFuZEpvaW50Pj4gSGFuZEpvaW50c1ZlY3RvcjsK
KyNlbmRpZgorCiAgICAgICAgIHN0cnVjdCBJbnB1dFNvdXJjZSB7CiAgICAgICAgICAgICBJbnB1
dFNvdXJjZUhhbmRsZSBoYW5kbGUgeyAwIH07CiAgICAgICAgICAgICBYUkhhbmRlZG5lc3MgaGFu
ZGVuZXNzIHsgWFJIYW5kZWRuZXNzOjpOb25lIH07CkBAIC0zMjMsOCArMzM2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgVmVjdG9yPElucHV0U291cmNlQnV0dG9uPiBidXR0b25zOwogICAgICAg
ICAgICAgVmVjdG9yPGZsb2F0PiBheGVzOwogI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBBY3R1YWxseSBob2xkIHNvbWUgaGFuZCBkYXRhLgotICAgICAgICAg
ICAgYm9vbCBzaW11bGF0ZUhhbmQgeyBmYWxzZSB9OworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxIYW5kSm9pbnRzVmVjdG9yPiBoYW5kSm9pbnRzOwogI2VuZGlmCiAKICAgICAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTYy
NCw2ICs2MzYsMjYgQEAgc3RkOjpvcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3Vy
Y2VQb3NlPiBEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UKICAgICByZXR1cm4gaW5wdXRT
b3VyY2VQb3NlOwogfQogCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlSGFuZEpvaW50Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBvc2U7Cisg
ICAgZW5jb2RlciA8PCByYWRpdXM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6
Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4gRGV2aWNl
OjpGcmFtZURhdGE6OklucHV0U291cmNlSGFuZEpvaW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5k
Sm9pbnQgaGFuZEpvaW50OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZEpvaW50LnBvc2Up
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFuZEpvaW50LnJhZGl1cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIGhhbmRKb2ludDsKK30KKyNlbmRpZgorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9p
ZCBEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewpAQCAtNjM1LDYgKzY2Nyw5IEBAIHZvaWQgRGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IGdyaXBPcmlnaW47CiAgICAgZW5jb2RlciA8PCBidXR0b25zOwogICAgIGVuY29kZXIgPDwgYXhl
czsKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCisgICAgZW5jb2RlciA8PCBoYW5kSm9pbnRzOwor
I2VuZGlmCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC02NTcsNiArNjkyLDEwIEBA
IHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiBEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2U6OmRlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UuYXhlcykpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc291cmNlLmhhbmRKb2ludHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworI2Vu
ZGlmCiAgICAgcmV0dXJuIHNvdXJjZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
RmFrZVhSSW5wdXRTb3VyY2VJbml0LmgKaW5kZXggMTYwNzYyZDdkNDc3YWJmNjRkMDUyNDY0ZmVi
OWRkMjA1NTA5ZGFhZS4uOWE0YWUzM2E2YmQ5MDhhNzRmYTcwM2YwZjUzYTRkYmFkZmU5NTY0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5oCkBA
IC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgIlhSVGFyZ2V0UmF5TW9kZS5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyNpbmNsdWRlICJGYWtl
WFJKb2ludFN0YXRlSW5pdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IEZha2VYUklucHV0U291cmNlSW5pdCB7CkBAIC00Niw3ICs1MCw3IEBAIHN0cnVjdCBGYWtl
WFJJbnB1dFNvdXJjZUluaXQgewogICAgIFZlY3RvcjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+IHN1
cHBvcnRlZEJ1dHRvbnM7CiAgICAgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW47
CiAjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQotICAgIGJvb2wgc2ltdWxhdGVIYW5kIHsgZmFsc2Ug
fTsKKyAgICBWZWN0b3I8RmFrZVhSSm9pbnRTdGF0ZUluaXQ+IGhhbmRKb2ludHM7CiAjZW5kaWYK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3Vy
Y2VJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0
LmlkbAppbmRleCAxMDE2NjVjZGQzZjgyODY0ZTQ4Yzg1ZjMwZjMzNjRkZTY3YTI1NzVhLi5jNzUw
NjJiZWM3NzQ2MjI5M2UyYzVhY2Y2NzI5MmQ3MzZiMjNlMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsCkBAIC00Myw1ICs0Myw1IEBA
CiAgICAgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW47CiAgICAgLy8gT3B0aW9u
YWwgaGFuZCBpbnB1dC4gRm9yIG5vdyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBhY3R1YWwKICAg
ICAvLyBkYXRhLiBXZSdyZSBqdXN0IGNyZWF0aW5nIHRoZSBvYmplY3QgZm9yIHRlc3RpbmcuCi0g
ICAgW0NvbmRpdGlvbmFsPVdFQlhSX0hBTkRTXSBib29sZWFuIHNpbXVsYXRlSGFuZCA9IGZhbHNl
OworICAgIFtDb25kaXRpb25hbD1XRUJYUl9IQU5EU10gc2VxdWVuY2U8RmFrZVhSSm9pbnRTdGF0
ZUluaXQ+IGhhbmRKb2ludHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9GYWtlWFJKb2ludFN0YXRlSW5pdC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJK
b2ludFN0YXRlSW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZDIzNTE1MGI3NmRjZGQxNTEzMzIyYmU1MGQ2
MDU4M2I5OGEzZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zh
a2VYUkpvaW50U3RhdGVJbml0LmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorCisjaW5jbHVkZSAiRmFrZVhSUmln
aWRUcmFuc2Zvcm1Jbml0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEZha2VY
UkpvaW50U3RhdGVJbml0IHsKKyAgICBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9zZTsKKyAg
ICBmbG9hdCByYWRpdXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCWFJfSEFORFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhS
Sm9pbnRTdGF0ZUluaXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMDE0MjA5ZmY4NGM5M2ZjZWExZDY2MzA1
NjEyNzhkYjM2OThiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gVXNlZCB0byB1cGRhdGUgdGhlIHBvc2UgYW5kIHJhZGl1cyBvZiBhIGpvaW50CitbCisgICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJYUkVuYWJsZWQmV2ViWFJIYW5kSW5wdXRNb2R1bGVFbmFibGVk
LAorICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAorXSBkaWN0aW9uYXJ5IEZha2VYUkpvaW50
U3RhdGVJbml0IHsKKyAgICBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9zZTsKKyAgICBmbG9h
dCByYWRpdXMgPSAwLjA7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwCmluZGV4IDUyMjRkMjhlMDcyNjNkODhjM2JkYWM1ZGJk
OGJhZGY1MDA0OWQ5ZDMuLjdmMDEwYThmMWViYTVkNDMzNjg2MjZlMTc4NzI5ZDc1NmI1NzdkNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJv
bGxlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKICNpbmNsdWRl
ICJXZWJGYWtlWFJEZXZpY2UuaCIKKyNpbmNsdWRlICJYUkhhbmRKb2ludC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM2LDYgKzM3LDExIEBAIHVzaW5nIElucHV0U291cmNlQnV0dG9u
ID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOwogdXNp
bmcgSW5wdXRTb3VyY2VQb3NlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0
U291cmNlUG9zZTsKIHVzaW5nIEJ1dHRvblR5cGUgPSBGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5
cGU7CiAKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCit1c2luZyBIYW5kSm9pbnRzVmVjdG9yID0g
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkhhbmRKb2ludHNWZWN0b3I7Cit1c2luZyBJ
bnB1dFNvdXJjZUhhbmRKb2ludCA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1
dFNvdXJjZUhhbmRKb2ludDsKKyNlbmRpZgorCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0
aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jeHItc3RhbmRhcmQtZ2FtZXBhZC1tYXBwaW5n
CiBjb25zdGV4cHIgc3RkOjphcnJheTxCdXR0b25UeXBlLCA1PiBYUl9TVEFOREFSRF9CVVRUT05T
ID0geyBCdXR0b25UeXBlOjpHcmlwLCBCdXR0b25UeXBlOjpUb3VjaHBhZCwgQnV0dG9uVHlwZTo6
VGh1bWJzdGljaywgQnV0dG9uVHlwZTo6T3B0aW9uYWxCdXR0b24sIEJ1dHRvblR5cGU6Ok9wdGlv
bmFsVGh1bWJzdGljayB9OwogCkBAIC01MSwxMyArNTcsMTMgQEAgV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VI
YW5kbGUKICAgICAsIG1fcHJvZmlsZXMoaW5pdC5wcm9maWxlcykKICAgICAsIG1fcHJpbWFyeVNl
bGVjdGVkKGluaXQuc2VsZWN0aW9uU3RhcnRlZCkKICAgICAsIG1fc2ltdWxhdGVTZWxlY3QoaW5p
dC5zZWxlY3Rpb25DbGlja2VkKQotI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICAsIG1fc2lt
dWxhdGVIYW5kKGluaXQuc2ltdWxhdGVIYW5kKQotI2VuZGlmCiB7CiAgICAgc2V0UG9pbnRlck9y
aWdpbihpbml0LnBvaW50ZXJPcmlnaW4sIGZhbHNlKTsKICAgICBzZXRHcmlwT3JpZ2luKGluaXQu
Z3JpcE9yaWdpbiwgZmFsc2UpOwogICAgIHNldFN1cHBvcnRlZEJ1dHRvbnMoaW5pdC5zdXBwb3J0
ZWRCdXR0b25zKTsKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCisgICAgdXBkYXRlSGFuZEpvaW50
cyhpbml0LmhhbmRKb2ludHMpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyOjpzZXRHcmlwT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2lu
LCBib29sIGVtdWxhdGVkUG9zaXRpb24pCkBAIC0xMTAsNyArMTE2LDcgQEAgSW5wdXRTb3VyY2Ug
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpnZXRGcmFtZURhdGEoKQogICAgIHN0YXRlLnBvaW50
ZXJPcmlnaW4gPSBtX3BvaW50ZXJPcmlnaW47CiAgICAgc3RhdGUuZ3JpcE9yaWdpbiA9IG1fZ3Jp
cE9yaWdpbjsKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgc3RhdGUuc2ltdWxhdGVIYW5k
ID0gbV9zaW11bGF0ZUhhbmQ7CisgICAgc3RhdGUuaGFuZEpvaW50cyA9IG1faGFuZEpvaW50czsK
ICNlbmRpZgogCiAgICAgaWYgKG1fc2ltdWxhdGVTZWxlY3QpCkBAIC0xODIsNiArMTg4LDI4IEBA
IFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6QnV0dG9uT3JQbGFjZWhvbGRlciBXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OmdldEJ1dHRvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorI2lmIEVO
QUJMRShXRUJYUl9IQU5EUykKK3ZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjp1cGRhdGVI
YW5kSm9pbnRzKGNvbnN0IFZlY3RvcjxGYWtlWFJKb2ludFN0YXRlSW5pdD4mIGhhbmRKb2ludHMp
Cit7CisgICAgaWYgKGhhbmRKb2ludHMuaXNFbXB0eSgpIHx8IGhhbmRKb2ludHMuc2l6ZSgpICE9
IHN0YXRpY19jYXN0PHNpemVfdD4oWFJIYW5kSm9pbnQ6OkNvdW50KSkgeworICAgICAgICBtX2hh
bmRKb2ludHMgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBI
YW5kSm9pbnRzVmVjdG9yIHVwZGF0ZWRKb2ludHM7CisgICAgZm9yIChhdXRvIGhhbmRKb2ludCA6
IGhhbmRKb2ludHMpIHsKKyAgICAgICAgYXV0byB0cmFuc2Zvcm0gPSBXZWJGYWtlWFJEZXZpY2U6
OnBhcnNlUmlnaWRUcmFuc2Zvcm0oaGFuZEpvaW50LnBvc2UpOworICAgICAgICBpZiAodHJhbnNm
b3JtLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICB1cGRhdGVkSm9pbnRzLmFwcGVuZChz
dGQ6Om51bGxvcHQpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHVwZGF0ZWRKb2ludHMuYXBwZW5kKElucHV0U291cmNlSGFuZEpvaW50IHsgSW5w
dXRTb3VyY2VQb3NlIHsgdHJhbnNmb3JtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBmYWxzZSB9LCBo
YW5kSm9pbnQucmFkaXVzIH0pOworICAgIH0KKyAgICBtX2hhbmRKb2ludHMgPSB1cGRhdGVkSm9p
bnRzOworfQorI2VuZGlmIC8vIEVOQUJMRShXRUJYUl9IQU5EUykKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKaW5kZXggNGQ2OTBmYTczZTUxZWQy
NjViOTk2OTk5YWFmN2M4NzZkNTk3YWMzYS4uY2EyMGE2OTQyOTZlZWVjMjg5ZjcyNjVkNjZmOTNm
NTU5ODg3ZWJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklu
cHV0Q29udHJvbGxlci5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRT
KQorI2luY2x1ZGUgIkZha2VYUkpvaW50U3RhdGVJbml0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIgZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IHsKQEAgLTU3LDYgKzYxLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1cHBvcnRlZEJ1dHRvbnMoY29uc3QgVmVjdG9yPEZh
a2VYUkJ1dHRvblN0YXRlSW5pdD4mKTsKICAgICB2b2lkIHVwZGF0ZUJ1dHRvblN0YXRlKGNvbnN0
IEZha2VYUkJ1dHRvblN0YXRlSW5pdCYpOwogICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7
IHJldHVybiBtX2Nvbm5lY3RlZDsgfQorICAgIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAg
ICB2b2lkIHVwZGF0ZUhhbmRKb2ludHMoY29uc3QgVmVjdG9yPEZha2VYUkpvaW50U3RhdGVJbml0
PiYpOworI2VuZGlmCiAKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRT
b3VyY2UgZ2V0RnJhbWVEYXRhKCk7CiAKQEAgLTgwLDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fcHJpbWFyeVNlbGVjdGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2ltdWxhdGVTZWxl
Y3QgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICBib29sIG1fc2ltdWxh
dGVIYW5kIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpIYW5kSm9pbnRzVmVjdG9yPiBtX2hhbmRKb2ludHM7CiAjZW5kaWYKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
LmlkbAppbmRleCBhOTlhMjYxZTg3N2Y4MGVmMGNiN2U4OGE1ZmE1OGFhMjE3ZjIyZjQ1Li5kOWM1
ODc5NWQwNGZjY2I3YmM4YzRjMDBhNDJhM2VhN2I5OGIwMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsCkBAIC03Myw0ICs3
Myw2IEBACiAgICAgLy8gVXNlZCB0byB1cGRhdGUgdGhlIHN0YXRlIG9mIGEgYnV0dG9uIGN1cnJl
bnRseSBzdXBwb3J0ZWQgYnkgdGhlIGlucHV0IHNvdXJjZQogICAgIC8vIFdpbGwgbm90IGFkZCBz
dXBwb3J0IGZvciB0aGF0IGJ1dHRvbiBpZiBpdCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4K
ICAgICB1bmRlZmluZWQgdXBkYXRlQnV0dG9uU3RhdGUoRmFrZVhSQnV0dG9uU3RhdGVJbml0IGJ1
dHRvblN0YXRlKTsKKyAgICAKKyAgICBbQ29uZGl0aW9uYWw9V0VCWFJfSEFORFNdIHVuZGVmaW5l
ZCB1cGRhdGVIYW5kSm9pbnRzKHNlcXVlbmNlPEZha2VYUkpvaW50U3RhdGVJbml0PiBoYW5kSm9p
bnRzKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKaW5kZXggNTQ3Y2RiY2M3
ZjEwNzU1ZTdkYzYyYmY3ZjFhNDAzMzdkNTFmZTczOC4uM2Q2NjJmMTBjNDMyMjQ2MDY4MzY3NjFi
ZmEzOTg0NGJkNTIzYjJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJY
UlRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcApAQCAt
MzksNiArMzksMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJYUlRlc3Q6On5XZWJYUlRl
c3QoKSA9IGRlZmF1bHQ7CiAKK3N0YXRpYyBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZlYXR1cmVMaXN0
IHBhcnNlRmVhdHVyZXMoY29uc3QgVmVjdG9yPEpTQzo6SlNWYWx1ZT4mIGZlYXR1cmVMaXN0LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQoreworICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGNv
bnRleHQuZ2xvYmFsT2JqZWN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogZmVh
dHVyZUxpc3QpIHsKKyAgICAgICAgICAgIGF1dG8gZmVhdHVyZVN0cmluZyA9IGZlYXR1cmUudG9X
VEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGlmIChhdXRvIHNlc3Npb25GZWF0
dXJlID0gUGxhdGZvcm1YUjo6cGFyc2VTZXNzaW9uRmVhdHVyZURlc2NyaXB0b3IoZmVhdHVyZVN0
cmluZykpCisgICAgICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCpzZXNzaW9uRmVhdHVyZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZlYXR1cmVzOworfQorCiB2b2lkIFdlYlhS
VGVzdDo6c2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZha2VYUkRldmljZUluaXQmIGluaXQsIFdlYkZha2VYUkRldmljZVByb21p
c2UmJiBwcm9taXNlKQogewogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8v
d2VieHItdGVzdC1hcGkvI2RvbS14cnRlc3Qtc2ltdWxhdGVkZXZpY2Vjb25uZWN0aW9uCkBAIC00
OCwxNiArNjEsMTIgQEAgdm9pZCBXZWJYUlRlc3Q6OnNpbXVsYXRlRGV2aWNlQ29ubmVjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdAogCiAgICAgICAgIGRldmljZS0+
c2V0Vmlld3MoaW5pdC52aWV3cyk7CiAKLSAgICAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0
dXJlTGlzdCBmZWF0dXJlczsKLSAgICAgICAgaWYgKGluaXQuc3VwcG9ydGVkRmVhdHVyZXMpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBjb250ZXh0Lmdsb2JhbE9iamVj
dCgpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogaW5pdC5zdXBwb3J0
ZWRGZWF0dXJlcy52YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZmVhdHVyZVN0
cmluZyA9IGZlYXR1cmUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gc2Vzc2lvbkZlYXR1cmUgPSBQbGF0Zm9ybVhSOjpwYXJzZVNlc3Npb25G
ZWF0dXJlRGVzY3JpcHRvcihmZWF0dXJlU3RyaW5nKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZlYXR1cmVzLmFwcGVuZCgqc2Vzc2lvbkZlYXR1cmUpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZlYXR1
cmVMaXN0IHN1cHBvcnRlZEZlYXR1cmVzOworICAgICAgICBpZiAoaW5pdC5zdXBwb3J0ZWRGZWF0
dXJlcykKKyAgICAgICAgICAgIHN1cHBvcnRlZEZlYXR1cmVzID0gcGFyc2VGZWF0dXJlcyhpbml0
LnN1cHBvcnRlZEZlYXR1cmVzLnZhbHVlKCksIGNvbnRleHQpOworICAgICAgICBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZlYXR1cmVMaXN0IGVuYWJsZWRGZWF0dXJlczsKKyAgICAgICAgaWYgKGluaXQu
ZW5hYmxlZEZlYXR1cmVzKQorICAgICAgICAgICAgZW5hYmxlZEZlYXR1cmVzID0gcGFyc2VGZWF0
dXJlcyhpbml0LmVuYWJsZWRGZWF0dXJlcy52YWx1ZSgpLCBjb250ZXh0KTsKIAogICAgICAgICBp
ZiAoaW5pdC5ib3VuZHNDb29yZGluYXRlcykgewogICAgICAgICAgICAgaWYgKGluaXQuYm91bmRz
Q29vcmRpbmF0ZXMtPnNpemUoKSA8IDMpIHsKQEAgLTg0LDggKzkzLDEwIEBAIHZvaWQgV2ViWFJU
ZXN0OjpzaW11bGF0ZURldmljZUNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QKICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRNb2Rlcy5hcHBlbmQoWFJTZXNz
aW9uTW9kZTo6SW1tZXJzaXZlVnIpOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yIChhdXRvJiBt
b2RlIDogc3VwcG9ydGVkTW9kZXMpCi0gICAgICAgICAgICBzaW11bGF0ZWREZXZpY2Uuc2V0U3Vw
cG9ydGVkRmVhdHVyZXMobW9kZSwgZmVhdHVyZXMpOworICAgICAgICBmb3IgKGF1dG8mIG1vZGUg
OiBzdXBwb3J0ZWRNb2RlcykgeworICAgICAgICAgICAgc2ltdWxhdGVkRGV2aWNlLnNldFN1cHBv
cnRlZEZlYXR1cmVzKG1vZGUsIHN1cHBvcnRlZEZlYXR1cmVzKTsKKyAgICAgICAgICAgIHNpbXVs
YXRlZERldmljZS5zZXRFbmFibGVkRmVhdHVyZXMobW9kZSwgZW5hYmxlZEZlYXR1cmVzKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIG1fY29udGV4dC0+cmVnaXN0ZXJTaW11bGF0ZWRYUkRldmljZUZv
clRlc3Rpbmcoc2ltdWxhdGVkRGV2aWNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJYUlRlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmgK
aW5kZXggYjFjYzNkYjNhZTRmMzA5ZDE4ZTgwOGZkNzcxMmJhMWIyMmI3MDc1MS4uNjAyOTc1NWM5
YWE3ODBiNzVlMjNmYTZjMWE2MTViMWVmNjRiYzIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJYUlRlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhS
VGVzdC5oCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPEZha2VYUlZp
ZXdJbml0PiB2aWV3czsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxKU0M6OkpTVmFs
dWU+PiBzdXBwb3J0ZWRGZWF0dXJlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SlND
OjpKU1ZhbHVlPj4gZW5hYmxlZEZlYXR1cmVzOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPEZha2VYUkJvdW5kc1BvaW50Pj4gYm91bmRzQ29vcmRpbmF0ZXM7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvV2ViWFJUZXN0LmlkbAppbmRleCA4ZDBiMDZiMDNhZTY3YWE2NTRlMmVhYzE3OTgxOTg2
Mjk4OTZmOWJjLi5lNjY3MzliNjljZWI4MzJlN2NmOGI1ZTU3ZTkxYjZjOTk2ZDdkZjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaWRsCkBAIC02MSw2ICs2MSwxMCBAQAogICAgIC8v
IE5PVEU6IFRoaXMgaXMgbWVhbnQgdG8gZW11bGF0ZSBoYXJkd2FyZSBzdXBwb3J0LCBub3Qgd2hl
dGhlciBhIGZlYXR1cmUgaXMKICAgICAvLyBjdXJyZW50bHkgYXZhaWxhYmxlIChlLmcuIGJvdW5k
cyBub3QgYmVpbmcgdHJhY2tlZCBwZXIgYmVsb3cpCiAgICAgc2VxdWVuY2U8YW55PiBzdXBwb3J0
ZWRGZWF0dXJlczsKKyAgICAKKyAgICAvLyBUaGUgbGlzdCBvZiBmZWF0dXJlcyB0aGF0IGFyZSBh
dXRvbWF0aWNhbGx5IGVuYWJsZWQgYW5kIGRvCisgICAgLy8gbm90IG5lZWQgZnVydGhlciBleHBs
aWNpdCBjb25zZW50LgorICAgIHNlcXVlbmNlPGFueT4gZW5hYmxlZEZlYXR1cmVzOwogCiAgICAg
Ly8gVGhlIGJvdW5kcyBjb29yZGluYXRlcy4gSWYgZW1wdHksIG5vIGJvdW5kZWQgcmVmZXJlbmNl
IHNwYWNlIGlzIGN1cnJlbnRseSB0cmFja2VkLgogICAgIC8vIElmIG5vdCwgbXVzdCBoYXZlIGF0
IGxlYXN0IHRocmVlIGVsZW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
WFIvWFJEZXZpY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVBy
b3h5LmNwcAppbmRleCA4MGYwODUzMjEwYzZkNGJjMjQyZGEzYWFlOGZkZTBiMGIxZDZmZjdlLi4w
ZmE3NjBiOTJiODY3MmU0OTQ4N2M1NTgwNjdhZmYyZjNhZDNjODJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcApAQCAtNjgsOCArNjgsMjEgQEAgdm9pZCBYUkRl
dmljZVByb3h5Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vz
c2lvbk1vZGUgc2Vzc2kKICAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGU6OkltbWVyc2l2ZVZyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV94clN5c3Rl
bSkKLSAgICAgICAgbV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7
CisgICAgaWYgKCFtX3hyU3lzdGVtKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3hyU3lzdGVt
LT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKworICAgIC8vIFRoaXMgaXMgY2Fs
bGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIG9mIFdlYlhSU2Vzc2lvbi4gU2luY2Ugc2Vzc2lvbkRp
ZEluaXRpYWxpemVJbnB1dFNvdXJjZXMoKQorICAgIC8vIGVuZHMgdXAgY2FsbGluZyBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKSB3aGljaCByZWZzIHRoZSBXZWJYUlNlc3Npb24gb2JqZWN0
LCB3ZQorICAgIC8vIHNob3VsZCBkZWxheSB0aGlzIGNhbGwgYWZ0ZXIgdGhlIFdlYlhSU2Vzc2lv
biBoYXMgZmluaXNoZWQgY29uc3RydWN0aW9uLgorICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSgpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQoKSkKKyAgICAgICAgICAgIHRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KCktPnNl
c3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzKHsgfSk7CisgICAgfSk7ICAgIAogfQogCiB2
b2lkIFhSRGV2aWNlUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDBlMTY0ZmVlOWM0MmNkYTAzYzlhOGM1MjlmNTEyNzI3MDZhYWE4MTMuLmM1ODAxMTM3MGYzZmI3
YTBmOGUzMzJjM2ZjNzExODA2ZTE3NzBkMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMi0w
NC0wNyAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIElt
cGxlbWVudCB0aGUgV2ViWFIgSGFuZCBJbnB1dCBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtb3JlIGNvbnN0YW50cyBmb3IgYSB2YWxp
ZCBqb2ludCB2YWx1ZSBhbmQgZGV2aWNlIGluaXQgZGljdGlvbmFyeQorICAgICAgICB0aGF0IHJl
cHJlc2VudHMgYSBkZXZpY2Ugd2l0aCBoYW5kIHRyYWNraW5nIHN1cHBvcnQgZW5hYmxlZC4KKwor
ICAgICAgICBBZGQgbmV3IHRlc3RzIGZvciB0ZXN0aW5nIGhhbmQgaW5wdXQgcmVsYXRlZCBtZXRo
b2RzIGluIFhSRnJhbWUuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2Vi
eHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanM6CisgICAgICAgICogaHR0cC93cHQvd2Vi
eHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50
X3Bvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZy
YW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9zZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9p
bnRfcG9zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hy
RnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21pc3Np
bmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dl
YnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21pc3Npbmdfam9pbnRfcG9zZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckhhbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckhhbmQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvd2VieHIveHJIYW5kSW5wdXRfZ2MuaHRtbDoKKwogMjAyMi0wNC0wNiAgSiBQYXNjb2Ug
IDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGV4cGVjdGVkLCBhY3R1YWwgbGlu
a3MgZm9yIHZhcmlhbnQtYmFzZWQgaW1wb3J0ZWQgd3B0IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2lu
Z2xlX3ZpZXcuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2VieHJf
dGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMKaW5kZXggY2I4YmRmZDk5ZjFhMGIxMjIyMWU4
MDRhODU0MTUwMzYwZjY3NjYzNi4uYTA5ZGNjMTQyODZiMTlmMTJhOTc0NDRmMzk3MmRkYTY3ZjI4
MmE2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIvcmVzb3VyY2VzL3dl
YnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50c19zaW5nbGVfdmlldy5qcwpA
QCAtNDcsNiArNDcsNzQgQEAgY29uc3QgVkFMSURfR1JJUF9UUkFOU0ZPUk0gPSB7CiAgICAgb3Jp
ZW50YXRpb246IFswLCAwLCAwLCAxXQogfTsKIAorY29uc3QgSk9JTlRfQ09VTlQgPSAyNTsKK2Nv
bnN0IFRFU1RfSEFORF9KT0lOVF9SQURJVVMgPSAwLjAyOworCitjb25zdCBWQUxJRF9IQU5EX0pP
SU5UID0geworICAgIHBvc2U6IFZBTElEX1BPU0VfVFJBTlNGT1JNLAorICAgIHJhZGl1czogVEVT
VF9IQU5EX0pPSU5UX1JBRElVUworfTsKKworY29uc3QgVkFMSURfSEFORF9KT0lOVFMgPSBbCisg
ICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hB
TkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAor
ICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9I
QU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwK
KyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURf
SEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQs
CisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElE
X0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5U
LAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJ
RF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lO
VAorXTsKKworY29uc3QgSU5WQUxJRF9IQU5EX0pPSU5UID0geworCit9OworCitjb25zdCBIQU5E
X0pPSU5UU19XSVRIX09ORV9JTlZBTElEID0gWworICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAg
VkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRf
Sk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAg
IFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5E
X0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAg
ICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFO
RF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisg
ICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hB
TkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAor
ICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9I
QU5EX0pPSU5ULAorICAgIElOVkFMSURfSEFORF9KT0lOVAorXTsKKwogLy8gQSB2YWxpZCBpbnB1
dCBwb2ludGVyIG9mZnNldCBmb3IgIHdoZW4gd2UgZG9uJ3QgY2FyZSBhYm91dCBzcGVjaWZpYyB2
YWx1ZXMKIGNvbnN0IFZBTElEX1BPSU5URVIgPSBbMSwgMCwgMCwgMCwKICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMSwgMCwgMCwKQEAgLTE2MCw2ICsyMjgsMTcgQEAgY29uc3QgVFJBQ0tFRF9J
TU1FUlNJVkVfREVWSUNFID0gewogICAgIGludGVyYWN0aW9uTW9kZTogIndvcmxkLXNwYWNlIgog
fTsKIAorY29uc3QgVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFX1dJVEhfSEFORF9UUkFDS0lORyA9
IHsKKyAgICBzdXBwb3J0c0ltbWVyc2l2ZTogdHJ1ZSwKKyAgICBzdXBwb3J0ZWRNb2RlczogWyAi
aW5saW5lIiwgImltbWVyc2l2ZS12ciJdLAorICAgIHZpZXdzOiBWQUxJRF9WSUVXUywKKyAgICB2
aWV3ZXJPcmlnaW46IElERU5USVRZX1RSQU5TRk9STSwKKyAgICBzdXBwb3J0ZWRGZWF0dXJlczog
QUxMX0ZFQVRVUkVTLAorICAgIGVuYWJsZWRGZWF0dXJlczogWyAiaGFuZC10cmFja2luZyIgXSwK
KyAgICBlbnZpcm9ubWVudEJsZW5kTW9kZTogIm9wYXF1ZSIsCisgICAgaW50ZXJhY3Rpb25Nb2Rl
OiAid29ybGQtc3BhY2UiCit9OworCiBjb25zdCBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfTk9f
SEFORF9UUkFDS0lORyA9IHsKICAgICBzdXBwb3J0c0ltbWVyc2l2ZTogdHJ1ZSwKICAgICBzdXBw
b3J0ZWRNb2RlczogWyAiaW5saW5lIiwgImltbWVyc2l2ZS12ciJdLApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDJiYjAxYmJmZGJlNzU0Mzk5NjQ5YjlhOTk3ZDMzY2Ew
ZDQ1ZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJG
cmFtZV9maWxsSm9pbnRSYWRpaS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1Mg
VGVzdCBYUkZyYW1lLmZpbGxKb2ludFJhZGlpIC0gd2ViZ2wKK1BBU1MgVGVzdCBYUkZyYW1lLmZp
bGxKb2ludFJhZGlpIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDVhYTI1OGNk
YzYyMDBjMDFmMTM4NmQ2MDE0YTZkZDcxMzdhMThhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaS5odG1sCkBAIC0wLDAg
KzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNf
c2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3dlYnhyL3Jlc291
cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorbGV0IHRl
c3ROYW1lID0gIlRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSI7CisKK2xldCBmYWtlRGV2aWNl
SW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7
CisKK2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJv
bGxlciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURl
dmljZUNvbnRyb2xsZXIuc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRl
ZG5lc3M6ICJub25lIiwKKyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAg
ICBwb2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczog
W10sCisgICAgaGFuZEpvaW50czogVkFMSURfSEFORF9KT0lOVFMsCisgIH0pOworCisgIHJldHVy
biBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50aGVuKChyZWZl
cmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKworICAgICAgZnVuY3Rp
b24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNl
c3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5kID0gc2Vzc2lv
bi5pbnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhoYW5kLCBu
dWxsKTsKKworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBsZXQgcmFkaWlBcnJheVdpdGhXcm9uZ1NpemUgPSBuZXcgRmxvYXQzMkFy
cmF5KEpPSU5UX0NPVU5UIC0gMSk7CisgICAgICAgICAgICB4ckZyYW1lLmZpbGxKb2ludFJhZGlp
KGhhbmQudmFsdWVzKCksIHJhZGlpQXJyYXlXaXRoV3JvbmdTaXplKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgbGV0IHJhZGlpID0gbmV3IEZsb2F0MzJBcnJheShKT0lOVF9DT1VOVCk7CisgICAg
ICAgIGxldCBhbGxWYWxpZCA9IHhyRnJhbWUuZmlsbEpvaW50UmFkaWkoaGFuZC52YWx1ZXMoKSwg
cmFkaWkpOworICAgICAgICBhc3NlcnRfdHJ1ZShhbGxWYWxpZCk7CisgICAgICAgIGZvciAocmFk
aXVzIG9mIHJhZGlpKSB7CisgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhyYWRpdXMs
IFRFU1RfSEFORF9KT0lOVF9SQURJVVMsIEZMT0FUX0VQU0lMT04pOworICAgICAgICB9CisKKyAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9u
RnJhbWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAor
ICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2
ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxs
Sm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2Ut
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMWY3Y2QzN2M2ZGJjYTg2ZjZiZjZiZjQxMmMyNDk5
OTE1NDdjNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94
ckZyYW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCBYUkZyYW1lLmZpbGxKb2ludFJhZGlpIHdoZXJlIHRo
ZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBwb3NlIC0gd2ViZ2wKK1BBU1MgVGVzdCBYUkZy
YW1lLmZpbGxKb2ludFJhZGlpIHdoZXJlIHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBw
b3NlIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hy
RnJhbWVfZmlsbEpvaW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9z
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjUwOTE1ZWM4MWI4OTNhNWFjNTdkY2JmNWViYzgyNzY4ZTRmZmFj
OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1l
X2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9zZS5odG1sCkBAIC0wLDAgKzEsNDggQEAK
KzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3Zp
ZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3dlYnhyL3Jlc291cmNlcy93ZWJ4
cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0g
IlRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Np
bmcgam9pbnQgcG9zZSI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1N
RVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0ZXN0RnVuY3Rpb24gPSBm
dW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lvbk9iamVjdHMp
IHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRyb2xsZXIuc2ltdWxhdGVJ
bnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJub25lIiwKKyAgICB0YXJn
ZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2luOiBWQUxJRF9Q
T0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgaGFuZEpvaW50czogSEFO
RF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCwKKyAgfSk7CisKKyAgcmV0dXJuIHNlc3Npb24ucmVx
dWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRoZW4oKHJlZmVyZW5jZVNwYWNlKSA9
PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAgICBmdW5jdGlvbiBvbkZyYW1lKHRp
bWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoc2Vzc2lvbi5pbnB1dFNv
dXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQgPSBzZXNzaW9uLmlucHV0U291cmNl
c1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGhhbmQsIG51bGwpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGhhbmQuc2l6ZSwgSk9JTlRfQ09VTlQpOworCisgICAgICAgIGxldCBy
YWRpaSA9IG5ldyBGbG9hdDMyQXJyYXkoSk9JTlRfQ09VTlQpOworICAgICAgICBsZXQgYWxsVmFs
aWQgPSB4ckZyYW1lLmZpbGxKb2ludFJhZGlpKGhhbmQudmFsdWVzKCksIHJhZGlpKTsKKyAgICAg
ICAgYXNzZXJ0X2ZhbHNlKGFsbFZhbGlkKTsKKyAgICAgICAgZm9yIChyYWRpdXMgb2YgcmFkaWkp
IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmFkaXVzLCBOYU4pOworICAgICAgICB9CisK
KyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0
KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVy
c2l2ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9m
aWxsUG9zZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFt
ZV9maWxsUG9zZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MTAwYjI5MDkyNzQ3NDQ1N2Rk
ODM4ZGZhZTc0NDUzYjYyY2RmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgVGVzdCBYUkZyYW1lLmZpbGxQb3NlcyAtIHdlYmdsCitQQVNTIFRlc3QgWFJGcmFt
ZS5maWxsUG9zZXMgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VieHIveHJGcmFtZV9maWxsUG9zZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhy
L3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc3YjIxMjkxNzZlNzA5MGVmYmNh
NjYyZGE0Y2Q1YjM4ZDI0YTJkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50c19zaW5nbGVfdmlldy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3Rf
YXNzZXJ0cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAiVGVzdCBY
UkZyYW1lLmZpbGxQb3NlcyI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURf
SU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0ZXN0RnVuY3Rpb24g
PSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lvbk9iamVj
dHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRyb2xsZXIuc2ltdWxh
dGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJub25lIiwKKyAgICB0
YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2luOiBWQUxJ
RF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgaGFuZEpvaW50czog
VkFMSURfSEFORF9KT0lOVFMsCisgIH0pOworCisgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZl
cmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3IFBy
b21pc2UoKHJlc29sdmUpID0+IHsKKworICAgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZy
YW1lKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb24uaW5wdXRTb3VyY2VzLmxl
bmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5kID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0uaGFu
ZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhoYW5kLCBudWxsKTsKKworICAgICAgICBjb25z
dCBmbG9hdHNQZXJUcmFuc2Zvcm0gPSAxNjsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbGV0IHRyYW5zZm9ybXNBcnJheVdpdGhX
cm9uZ1NpemUgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NPVU5UICogZmxvYXRzUGVyVHJhbnNm
b3JtIC0gMSk7CisgICAgICAgICAgICB4ckZyYW1lLmZpbGxQb3NlcyhoYW5kLnZhbHVlcygpLCB0
cmFuc2Zvcm1zQXJyYXlXaXRoV3JvbmdTaXplKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0
IHRyYW5zZm9ybXMgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NPVU5UICogZmxvYXRzUGVyVHJh
bnNmb3JtKTsKKyAgICAgICAgbGV0IGFsbFZhbGlkID0geHJGcmFtZS5maWxsUG9zZXMoaGFuZC52
YWx1ZXMoKSwgcmVmZXJlbmNlU3BhY2UsIHRyYW5zZm9ybXMpOworICAgICAgICBhc3NlcnRfdHJ1
ZShhbGxWYWxpZCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEpPSU5U
X0NPVU5UOyArK2kpIHsKKyAgICAgICAgICAgIGxldCB0cmFuc2Zvcm1TdGFydEluZGV4ID0gaSAq
IGZsb2F0c1BlclRyYW5zZm9ybTsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZmxv
YXRzUGVyVHJhbnNmb3JtOyArK2opIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2Vx
dWFscyh0cmFuc2Zvcm1zW3RyYW5zZm9ybVN0YXJ0SW5kZXggKyBqXSwgVkFMSURfUE9TRV9NQVRS
SVhbal0sIEZMT0FUX0VQU0lMT04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJh
bWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0
ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12
cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9z
ZXNfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTQyOTQ0ODc0Zjg2NWNkNDYxZmJmYzViOGMxYmNjMjdkNDE0ODQxNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBv
c2VzX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BB
U1MgVGVzdCBYUkZyYW1lLmZpbGxQb3NlcyB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcg
am9pbnQgcG9zZSAtIHdlYmdsCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsUG9zZXMgd2hlcmUgdGhl
IGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXNfbWlzc2luZ19qb2lu
dF9wb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nl
c19taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2U3NThlMDE4YWQzZjI0ZDNh
OGI5MmE3ZjExNmQyNTAzNGY0YTY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXNfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwKQEAg
LTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0
aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0
YW50c19zaW5nbGVfdmlldy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vd2VieHIv
cmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+Cits
ZXQgdGVzdE5hbWUgPSAiVGVzdCBYUkZyYW1lLmZpbGxQb3NlcyB3aGVyZSB0aGUgaGFuZCBoYXMg
b25lIG1pc3Npbmcgam9pbnQgcG9zZSI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRS
QUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0ZXN0RnVu
Y3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lv
bk9iamVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRyb2xsZXIu
c2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJub25lIiwK
KyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2lu
OiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgaGFuZEpv
aW50czogSEFORF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCwKKyAgfSk7CisKKyAgcmV0dXJuIHNl
c3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRoZW4oKHJlZmVyZW5j
ZVNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAgICBmdW5jdGlvbiBv
bkZyYW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoc2Vzc2lv
bi5pbnB1dFNvdXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQgPSBzZXNzaW9uLmlu
cHV0U291cmNlc1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGhhbmQsIG51bGwp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGhhbmQuc2l6ZSwgSk9JTlRfQ09VTlQpOworCisgICAg
ICAgIGNvbnN0IGZsb2F0c1BlclRyYW5zZm9ybSA9IDE2OworICAgICAgICBsZXQgdHJhbnNmb3Jt
cyA9IG5ldyBGbG9hdDMyQXJyYXkoSk9JTlRfQ09VTlQgKiBmbG9hdHNQZXJUcmFuc2Zvcm0pOwor
ICAgICAgICBsZXQgYWxsVmFsaWQgPSB4ckZyYW1lLmZpbGxQb3NlcyhoYW5kLnZhbHVlcygpLCBy
ZWZlcmVuY2VTcGFjZSwgdHJhbnNmb3Jtcyk7CisgICAgICAgIGFzc2VydF9mYWxzZShhbGxWYWxp
ZCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEpPSU5UX0NPVU5UICog
ZmxvYXRzUGVyVHJhbnNmb3JtOyArK2kpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHJh
bnNmb3Jtc1tpXSwgTmFOKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAg
IH0KKyAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7
Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlv
biwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVy
ZXM6IFsiaGFuZC10cmFja2luZyJdIH0pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44OTI0ZjA1MWYyOWVhNTA3NjZlOTlkNGFkMzU1Y2MwYmMzY2ZlYzZj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9n
ZXRKb2ludFBvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJG
cmFtZS5nZXRKb2ludFBvc2UgLSB3ZWJnbAorUEFTUyBUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3Nl
IC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJh
bWVfZ2V0Sm9pbnRQb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1l
X2dldEpvaW50UG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNzhkOGZmZDYxMjMzMTk1MDllZjgxYjNl
ZDg2OTUyMjJkYjkyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fz
c2VydHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIlRlc3QgWFJG
cmFtZS5nZXRKb2ludFBvc2UiOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VE
X0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5HOworCitsZXQgdGVzdEZ1bmN0aW9u
ID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmpl
Y3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVs
YXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5kZWRuZXNzOiAibm9uZSIsCisgICAg
dGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisgICAgcG9pbnRlck9yaWdpbjogVkFM
SURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdLAorICAgIGhhbmRKb2ludHM6
IFZBTElEX0hBTkRfSk9JTlRTLAorICB9KTsKKworICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVm
ZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhlbigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQ
cm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJG
cmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5s
ZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdLmhh
bmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZCwgbnVsbCk7CisgICAgICAgIAorICAg
ICAgICBsZXQgam9pbnRTcGFjZSA9IGhhbmQuZ2V0KCJ3cmlzdCIpOworICAgICAgICBhc3NlcnRf
bm90X2VxdWFscyhqb2ludFNwYWNlLCBudWxsKTsKKyAgICAgICAgCisgICAgICAgIGxldCBqb2lu
dFBvc2UgPSB4ckZyYW1lLmdldEpvaW50UG9zZShqb2ludFNwYWNlLCByZWZlcmVuY2VTcGFjZSk7
CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGpvaW50UG9zZSwgbnVsbCk7CisgICAgICAgIGFz
c2VydF9hcHByb3hfZXF1YWxzKGpvaW50UG9zZS5yYWRpdXMsIFRFU1RfSEFORF9KT0lOVF9SQURJ
VVMsIEZMT0FUX0VQU0lMT04pOworICAgICAgICBhc3NlcnRfbWF0cml4X2FwcHJveF9lcXVhbHMo
am9pbnRQb3NlLnRyYW5zZm9ybS5tYXRyaXgsIFZBTElEX1BPU0VfTUFUUklYLCBGTE9BVF9FUFNJ
TE9OKTsKKworICAgICAgICByZXNvbHZlKCk7CisgICAgICB9CisgICAgICBzZXNzaW9uLnJlcXVl
c3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsKKyAgfSkpOworfTsKKworeHJfc2Vzc2lvbl9wcm9t
aXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1z
LCAnaW1tZXJzaXZlLXZyJywgeyBvcHRpb25hbEZlYXR1cmVzOiBbImhhbmQtdHJhY2tpbmciXSB9
KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94
ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2lu
dF9wb3NlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTlkNzliMDNhM2U2ODk3NDhlZWNkNWJk
N2JkMDU1MmNhNzY5ZWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIHdoZXJl
IHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBwb3NlIC0gd2ViZ2wKK1BBU1MgVGVzdCBY
UkZyYW1lLmdldEpvaW50UG9zZSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQg
cG9zZSAtIHdlYmdsMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94
ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21pc3Npbmdfam9pbnRfcG9zZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUzM2UxYjFlYjk2MjQ2Y2MwYzM3NzhmNWU3NzZhZDk2YmU4ZTE4MzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dl
dEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVz
dF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4KK2xldCB0ZXN0TmFtZSA9ICJUZXN0
IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIHdoZXJlIHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2lu
dCBwb3NlIjsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVf
REVWSUNFX1dJVEhfSEFORF9UUkFDS0lORzsKKworbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9u
KHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0LCBzZXNzaW9uT2JqZWN0cykgeworCisg
IGxldCBpbnB1dF9zb3VyY2UgPSBmYWtlRGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291
cmNlQ29ubmVjdGlvbih7CisgICAgaGFuZGVkbmVzczogIm5vbmUiLAorICAgIHRhcmdldFJheU1v
ZGU6ICJ0cmFja2VkLXBvaW50ZXIiLAorICAgIHBvaW50ZXJPcmlnaW46IFZBTElEX1BPSU5URVJf
VFJBTlNGT1JNLAorICAgIHByb2ZpbGVzOiBbXSwKKyAgICBoYW5kSm9pbnRzOiBIQU5EX0pPSU5U
U19XSVRIX09ORV9JTlZBTElELAorICB9KTsKKworICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVm
ZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhlbigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQ
cm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJG
cmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5s
ZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdLmhh
bmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZCwgbnVsbCk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoaGFuZC5zaXplLCBKT0lOVF9DT1VOVCk7CisKKyAgICAgICAgbGV0IHdyaXN0Sm9p
bnRTcGFjZSA9IGhhbmQuZ2V0KCJ3cmlzdCIpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh3
cmlzdEpvaW50U3BhY2UsIG51bGwpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHhyRnJhbWUuZ2V0
Sm9pbnRQb3NlKHdyaXN0Sm9pbnRTcGFjZSwgcmVmZXJlbmNlU3BhY2UpLCBudWxsKTsKKworICAg
ICAgICBsZXQgcGlua3lUaXBKb2ludFNwYWNlID0gaGFuZC5nZXQoInBpbmt5LWZpbmdlci10aXAi
KTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMocGlua3lUaXBKb2ludFNwYWNlLCBudWxsKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyh4ckZyYW1lLmdldEpvaW50UG9zZShwaW5reVRpcEpvaW50
U3BhY2UsIHJlZmVyZW5jZVNwYWNlKSwgbnVsbCk7CisKKyAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7CisgIH0p
KTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0
aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgb3B0aW9uYWxGZWF0
dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnhyL3hySGFuZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1YTBmMjQw
NjVlOTY1NTU5M2RhOGViNmIxMmY4ZTA3ZGI0ZDc3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgVGVzdCB0aGUgWFJIYW5kIEFQSSAtIHdlYmdsCitQQVNTIFRlc3QgdGhlIFhSSGFu
ZCBBUEkgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIv
eHJIYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYmYzNjI2ZTRiNzY2NmU2MzUxNTVjMzQ1ZTEzOGE5N2VlMDA1OGI2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5kLmh0bWwKQEAgLTAs
MCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50
c19zaW5nbGVfdmlldy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAi
VGVzdCB0aGUgWFJIYW5kIEFQSSI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNL
RURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0ZXN0RnVuY3Rp
b24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lvbk9i
amVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRyb2xsZXIuc2lt
dWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJub25lIiwKKyAg
ICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2luOiBW
QUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgaGFuZEpvaW50
czogVkFMSURfSEFORF9KT0lOVFMsCisgIH0pOworCisgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RS
ZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3
IFByb21pc2UoKHJlc29sdmUpID0+IHsKKworICAgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4
ckZyYW1lKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb24uaW5wdXRTb3VyY2Vz
Lmxlbmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5kID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0u
aGFuZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhoYW5kLCBudWxsKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhoYW5kLnNpemUsIDI1KTsKKyAgICAgICAgCisgICAgICAgIGxldCB3cmlzdEpv
aW50U3BhY2UgPSBoYW5kLmdldCgid3Jpc3QiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cmlz
dEpvaW50U3BhY2Uuam9pbnROYW1lLCAid3Jpc3QiKTsKKworICAgICAgICB2YXIgY291bnQgPSAw
OworICAgICAgICBmb3IgKGNvbnN0IFtqb2ludE5hbWUsIGpvaW50U3BhY2VdIG9mIGhhbmQpIHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoam9pbnRTcGFjZS5qb2ludE5hbWUsIGpvaW50TmFt
ZSk7CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICB9CisgICAgICAgIGFzc2VydF9lcXVh
bHMoY291bnQsIDI1KTsKKworICAgICAgICByZXNvbHZlKCk7CisgICAgICB9CisgICAgICBzZXNz
aW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsKKyAgfSkpOworfTsKKworeHJfc2Vz
c2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJ
bml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJywgeyBvcHRpb25hbEZlYXR1cmVzOiBbImhhbmQtdHJh
Y2tpbmciXSB9KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJ4ci94ckhhbmRJbnB1dF9nYy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIv
eHJIYW5kSW5wdXRfZ2MuaHRtbAppbmRleCA3NzI4MmY2ZjQxNjYzODg1MzgyMTljMTQ0NjU2ZjBj
MDliNmVkZjBlLi5iNTYxNTk0N2M1ZDBiYmYxOTI5ZTBkY2UxNGMwOWQ3ZDQ0MTdjOWU4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmRJbnB1dF9nYy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZElucHV0X2djLmh0bWwKQEAgLTE3
LDcgKzE3LDcgQEAgZnVuY3Rpb24gZ2MoKQogCiBsZXQgdGVzdE5hbWUgPSAiVGVzdCBvYmplY3Qg
bGlmZXRpbWUgb2YgSGFuZCBJbnB1dCBtb2R1bGUiOwogCi1sZXQgZmFrZURldmljZUluaXRQYXJh
bXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9TSU5HTEVfVklFV0RFVklDRTsKK2xldCBmYWtlRGV2aWNl
SW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7
CiAKIGxldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJv
bGxlciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKIApAQCAtMjYsNyArMjYsNyBAQCBsZXQgdGVzdEZ1
bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Np
b25PYmplY3RzKSB7CiAgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCiAgICAg
cG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCiAgICAgcHJvZmlsZXM6IFtd
LAotICAgIHNpbXVsYXRlSGFuZDogdHJ1ZSwKKyAgICBoYW5kSm9pbnRzOiBWQUxJRF9IQU5EX0pP
SU5UUywKICAgfSk7CiAKICAgcmV0dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCds
b2NhbCcpCg==
</data>
<flag name="review"
          id="485597"
          type_id="1"
          status="+"
          setter="dino"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457119</attachid>
            <date>2022-04-08 14:31:40 -0700</date>
            <delta_ts>2022-04-08 19:04:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-238968-20220408143140.patch</filename>
            <type>text/plain</type>
            <size>81631</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzExZTBmZTlmZTRkYTBi
MjNlZWE2M2U5NGIyNzc2Y2U0YWYwMjE5YS4uYjlhOGZmMzA3NmVjNTdhYTUxYzMyZWI0NzRmNTVm
NGZhZjBlODljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMi0wNC0wNyAgQWRh
IENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIEltcGxlbWVudCB0
aGUgV2ViWFIgSGFuZCBJbnB1dCBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2lu
dFJhZGlpLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpv
aW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dl
YnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bv
c2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2VieHIveHJIYW5kLmh0bWwKKworICAg
ICAgICAtIEltcGxlbWVudCB0aGUgbWV0aG9kcyBpbiBXZWJYUkZyYW1lIGZvciBnZXR0aW5nIGpv
aW50cycgcG9zZXMgYW5kIHJhZGlpLgorICAgICAgICAtIEFkZCBhIG5ldyBJbnB1dFNvdXJjZUhh
bmRKb2ludCBzdHJ1Y3QgdG8gcmVwcmVzZW50IGpvaW50IGRhdGEsIGFuZCBhZGQKKyAgICAgICAg
YSB2ZWN0b3Igb2YgSW5wdXRTb3VyY2VIYW5kSm9pbnQgaW4gUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlCisgICAgICAgIHRvIHJlcHJlc2VudCB0aGUgam9pbnRzIGRh
dGEuCisgICAgICAgIC0gSW1wbGVtZW50IGxvZ2ljIGZvciBtYW5hZ2luZyBhIHZlY3RvciBvZiBX
ZWJYUkpvaW50U3BhY2VzIGluIFdlYlhSSGFuZCBhbmQKKyAgICAgICAgdXBkYXRpbmcgaXQgd2l0
aCBuZXcgaGFuZCBqb2ludHMgZGF0YSBmcm9tIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUrSGFuZElucHV0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6cG9wdWxhdGVQb3NlKToKKyAgICAgICAg
VGhlcmUgYXJlIHZhbGlkIGNhc2VzIHdoZW4gdGhlIFdlYlhSU3BhY2UncyBlZmZlY3RpdmUgb3Jp
Z2luIGNhbiBiZSBudWxsLAorICAgICAgICBmb3IgZXhhbXBsZSwgYSBqb2ludCBwb3NlIGZyb20g
YSBoYW5kIHRoYXQgaGFzIG90aGVyIG1pc3Npbmcgam9pbnQgcG9zZXMuCisgICAgICAgIEp1c3Qg
cmV0dXJuIG51bGwgYW5kIG5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLiAKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmdldEpvaW50UG9zZSk6CisgICAgICAgIFBvcHVs
YXRlIHRoZSBqb2ludCdzIHBvc2UsIGFuZCBjcmVhdGUgYSBXZWJYUkpvaW50UG9zZSB3aXRoIHRo
ZSBwb3NlJ3MgCisgICAgICAgIHRyYW5zZm9ybSBhbmQgdGhlIGpvaW50J3MgcmFkaXVzLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6ZmlsbEpvaW50UmFkaWkpOgorICAgICAgICBWYWxp
ZGF0ZSB0aGUgaW5wdXRzIGFuZCBmaWxsIGluIHRoZSByYWRpaSBhcnJheS4gRmlsbCBpbiB3aXRo
IE5hTgorICAgICAgICBpZiB0aGUgaGFuZCBoYXMgbWlzc2luZyBqb2ludCBwb3Nlcy4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmZpbGxQb3Nlcyk6CisgICAgICAgIFZhbGlkYXRlIHRo
ZSBpbnB1dHMgYW5kIGZpbGwgaW4gdGhlIHRyYW5zZm9ybXMgYXJyYXkuIEZpbGwgaW4gd2l0aCBO
YU4KKyAgICAgICAgaWYgdGhlIGhhbmQgaGFzIG1pc3Npbmcgam9pbnQgcG9zZXMuCisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkhhbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5kOjpXZWJYUkhhbmQpOgor
ICAgICAgICBJbml0aWFsaXplIHRoZSBtX2pvaW50cyBhcnJheS4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSSGFuZDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSGFuZDo6SXRlcmF0b3I6
Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5kOjpzZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSSGFuZDo6dXBkYXRlRnJvbUlucHV0U291cmNlKToKKyAgICAgICAgVXBk
YXRlIG1fam9pbnRzIGFycmF5IGJhc2VkIG9uIHRoZSBsYXRlc3QgaGFuZHMgZGF0YSBmcm9tIElu
cHV0U291cmNlLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmg6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUkhhbmQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5k
OjpoYXNNaXNzaW5nUG9zZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp1cGRh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJKb2ludFBvc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50UG9zZTo6V2ViWFJKb2ludFBvc2UpOgorICAgICAgICBIYW5kbGUgam9pbnQgcmFk
aXVzLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSSm9pbnRTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkpvaW50U3Bh
Y2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkpvaW50U3BhY2U6OldlYlhSSm9p
bnRTcGFjZSk6CisgICAgICAgIEhhbmRsZSBqb2ludCBuYW1lIGFuZCB0aGUgYWN0dWFsIHBvc2Ug
ZGF0YS4gS2VlcCBhIHdlYWsgcHRyIHRvIHRoZSBXZWJYUkhhbmQuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUkpvaW50U3BhY2U6OnVwZGF0ZUZyb21Kb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50U3BhY2U6OmhhbmRIYXNNaXNzaW5nUG9zZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJKb2ludFNwYWNlOjpzZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSSm9pbnRTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgUmV0dXJuIG51
bGwgcG9zZSB0cmFuc2Zvcm1zIGlmIHRoZXJlIGFyZSBtaXNzaW5nIGpvaW50IHBvc2VzLgorICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUkpvaW50U3BhY2U6OmpvaW50TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50U3BhY2U6OnJhZGl1cyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkpvaW50U3BhY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6aXNIYW5kVHJhY2tpbmdFbmFi
bGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ6OmRlY29kZSk6
CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2U6OmRlY29kZSk6CisgICAgICAgICogdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUlu
aXQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGw6CisgICAg
ICAgIEFsbG93IHRlc3QgSW5wdXRTb3VyY2UgdG8gYmUgY3JlYXRlZCB3aXRoIGFuIGFycmF5IG9m
IGpvaW50cy4KKyAgICAgICAgKiB0ZXN0aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaWRsLgor
ICAgICAgICAqIHRlc3RpbmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbC4KKyAgICAgICAg
RGVmaW5lIGluaXQgZGljdGlvbmFyeSBmb3Igam9pbnQgZGF0YS4KKyAgICAgICAgKiB0ZXN0aW5n
L1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OldlYkZha2VYUklucHV0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnVwZGF0ZUhhbmRKb2ludHMpOgor
ICAgICAgICBVcGRhdGUgbV9oYW5kSm9pbnRzIGJhc2VkIG9uIGpvaW50IGluaXQgZGljdGlvbmFy
aWVzLgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmg6CisgICAg
ICAgICogdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIHRl
c3RpbmcvV2ViWFJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRmVhdHVyZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJUZXN0OjpzaW11bGF0ZURldmljZUNvbm5lY3Rpb24pOgor
ICAgICAgICBBbGxvdyB0ZXN0IGRldmljZSB0byBzcGVjaWZ5IGEgbGlzdCBvZiBlbmFibGVkIGZl
YXR1cmVzIHRoYXQgZG9uJ3QgbmVlZAorICAgICAgICBmdXJ0aGVyIGV4cGxpY2l0IGNvbnNlbnQu
CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYlhS
VGVzdC5pZGw6CisKIDIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBEcm9wIHVubmVjZXNzYXJ5IEV4Y2VwdGlvbk9yPD4gcmV0dXJuIHR5cGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDE5MjZiMTU1MzNkYTMwYmNmNDc3OTMwMzQ3NWFhY2E4ODQ4MzQ4NjcuLjI2YjJi
NTFhZTM5ZjRiMTlkM2Y2MDNiN2E1OGM0MDgxOTNmYTM0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjItMDQtMDcgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYlhSXSBJbXBsZW1lbnQgdGhlIFdlYlhSIEhhbmQgSW5wdXQgbW9kdWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5NjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9YUi9YUkRl
dmljZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6WFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgSW5pdGlhbGl6ZSBpbnB1dCBzb3VyY2Vz
IG9uIHNlc3Npb24gc3RhcnQuCisKIDIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpk
ZXNlcmlhbGl6ZSB0byBub3QgYWxsb2NhdGUgYSBuZXcgSlNDb250ZXh0IGV2ZXJ5IHNlY29uZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXgg
MDgzMTA1MTZhZjYyNTMyODg0ODJkMWY1MWMyZGQ3MzI5NzQ3MTFhYi4uMzk3YzZiYjA4YjE2ZDMx
ZmVmMWEyOGIyOTc1ZGEyNjE3ZDEzNGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNjIyLDYgKzE2MjIsNyBAQCAkKFBST0pFQ1Rf
RElSKS9zdmcveGxpbmthdHRycy5pbgogJChQUk9KRUNUX0RJUikvdGVzdGluZy9GYWtlWFJCb3Vu
ZHNQb2ludC5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvRmFrZVhSQnV0dG9uU3RhdGVJbml0
LmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsCisk
KFBST0pFQ1RfRElSKS90ZXN0aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbAogJChQUk9KRUNU
X0RJUikvdGVzdGluZy9GYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuaWRsCiAkKFBST0pFQ1RfRElS
KS90ZXN0aW5nL0Zha2VYUlZpZXdJbml0LmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9HQ09i
c2VydmF0aW9uLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCA4ODdjNzY1OWU3Zjg2NDM2Y2QwMmRkODQ5M2JkOTM5MTY1MmZjYmM2
Li5hM2Q2OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtODM1LDYgKzgz
NSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFr
ZVhSQnV0dG9uU3RhdGVJbml0LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJJbnB1dFNvdXJjZUluaXQuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zha2VYUklucHV0
U291cmNlSW5pdC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5p
dC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRmFrZVhSVmlld0luaXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA3MWE4Y2U3MDg2ZmE3OWRhYThiNzUxMzE1YmY0M2E0NDNhNjE5YWZiLi5kNjYz
YzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQyMTZlNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTE0NjIsNiArMTQ2Miw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAg
ICAgJChXZWJDb3JlKS90ZXN0aW5nL0Zha2VYUkJvdW5kc1BvaW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS90ZXN0aW5nL0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
dGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL3Rlc3Rp
bmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL0Zha2VY
UlZpZXdJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5p
ZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
K0hhbmRJbnB1dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUr
SGFuZElucHV0LmlkbAppbmRleCA0N2EzYmZiZTVhNmE4YTExZTUwZWJmMmU2ZjBlOTY0ZGI1OGE3
YWFhLi4wYjY4NDNjYjllMGM1ODViZDQwNWMzY2JkNDVkMTcxODFmMzkxOTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUrSGFuZElucHV0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUrSGFuZElucHV0Lmlk
bApAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAogICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViWFJFbmFibGVkJldlYlhSSGFuZElucHV0TW9kdWxlRW5hYmxlZCwK
IF0gcGFydGlhbCBpbnRlcmZhY2UgV2ViWFJGcmFtZSB7Ci0gICAgV2ViWFJKb2ludFBvc2U/IGdl
dEpvaW50UG9zZShXZWJYUkpvaW50U3BhY2Ugam9pbnQsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsK
KyAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBXZWJYUkpvaW50UG9zZT8gZ2V0Sm9pbnRQ
b3NlKFdlYlhSSm9pbnRTcGFjZSBqb2ludCwgV2ViWFJTcGFjZSBiYXNlU3BhY2UpOwogICAgIGJv
b2xlYW4gZmlsbEpvaW50UmFkaWkoc2VxdWVuY2U8V2ViWFJKb2ludFNwYWNlPiBqb2ludFNwYWNl
cywgRmxvYXQzMkFycmF5IHJhZGlpKTsKLSAgICBib29sZWFuIGZpbGxQb3NlcyhzZXF1ZW5jZTxX
ZWJYUlNwYWNlPiBzcGFjZXMsIFdlYlhSU3BhY2UgYmFzZVNwYWNlLCBGbG9hdDMyQXJyYXkgdHJh
bnNmb3Jtcyk7CisgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVudF0gYm9vbGVhbiBmaWxsUG9z
ZXMoc2VxdWVuY2U8V2ViWFJTcGFjZT4gc3BhY2VzLCBXZWJYUlNwYWNlIGJhc2VTcGFjZSwgRmxv
YXQzMkFycmF5IHRyYW5zZm9ybXMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSRnJhbWUuY3BwCmluZGV4IGYxYWZkNDMzZTI1Y2MyNTM1Njg3NzJkNzQ2YjdlNzc3Yzhi
YTFlNjAuLjMzMmMzNzZiN2QwMWY3NmZlZmYzZWI3YmRkYTkxMTZiYTNmZDhkYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMTM2LDggKzEzNiwx
MCBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+
PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoYwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxv
cHQgfTsKIAogICAgIGF1dG8gZWZmZWN0aXZlT3JpZ2luID0gc3BhY2UuZWZmZWN0aXZlT3JpZ2lu
KCk7CisgICAgLy8gQSBzcGFjZSdzIGVmZmVjdGl2ZU9yaWdpbiBjYW4gYmUgbnVsbCwgc3VjaCBh
cyBhIGpvaW50IHBvc2UgZnJvbSBhIGhhbmQgdGhhdCBoYXMKKyAgICAvLyBvdGhlciBtaXNzaW5n
IGpvaW50IHBvc2VzLgogICAgIGlmICghZWZmZWN0aXZlT3JpZ2luKQotICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpu
dWxsb3B0IH07CiAKICAgICBhdXRvIHRyYW5zZm9ybSA9ICAqYmFzZVRyYW5zZm9ybS52YWx1ZSgp
LmludmVyc2UoKSAqIGVmZmVjdGl2ZU9yaWdpbi52YWx1ZSgpOwogCkBAIC0yNjMsMjMgKzI2NSwx
MTUgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZUQKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCiAK
IC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItaGFuZC1pbnB1dC8jZG9t
LXhyZnJhbWUtZ2V0am9pbnRwb3NlCi1FeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJKb2ludFBvc2U+
PiBXZWJYUkZyYW1lOjpnZXRKb2ludFBvc2UoY29uc3QgV2ViWFJKb2ludFNwYWNlJiBqb2ludCwg
Y29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlKQorRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSSm9p
bnRQb3NlPj4gV2ViWFJGcmFtZTo6Z2V0Sm9pbnRQb3NlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgV2ViWFJKb2ludFNwYWNlJiBqb2ludFNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJiBi
YXNlU3BhY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGpvaW50KTsKLSAgICBVTlVTRURfUEFSQU0o
YmFzZVNwYWNlKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHBvcHVsYXRlUG9zZVJl
c3VsdCA9IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgam9pbnRTcGFjZSwgYmFzZVNwYWNlKTsKKyAg
ICBpZiAocG9wdWxhdGVQb3NlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
cG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gcG9wdWxh
dGVWYWx1ZSA9IHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBp
ZiAoIXBvcHVsYXRlVmFsdWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IFJlZlB0cjxXZWJYUkpvaW50UG9zZT4oV2ViWFJKb2ludFBvc2U6OmNyZWF0ZShXZWJYUlJpZ2lk
VHJhbnNmb3JtOjpjcmVhdGUocG9wdWxhdGVWYWx1ZS0+dHJhbnNmb3JtKSwgcG9wdWxhdGVWYWx1
ZS0+ZW11bGF0ZWRQb3NpdGlvbiwgam9pbnRTcGFjZS5yYWRpdXMoKSkpOwogfQogCiAvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWhhbmQtaW5wdXQvI2RvbS14cmZyYW1l
LWZpbGxqb2ludHJhZGlpCi1FeGNlcHRpb25Pcjxib29sPiBXZWJYUkZyYW1lOjpmaWxsSm9pbnRS
YWRpaShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+LCBjb25zdCBGbG9hdDMy
QXJyYXkmKQorRXhjZXB0aW9uT3I8Ym9vbD4gV2ViWFJGcmFtZTo6ZmlsbEpvaW50UmFkaWkoY29u
c3QgVmVjdG9yPFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+PiBqb2ludFNwYWNlcywgRmxvYXQzMkFy
cmF5JiByYWRpaSkKIHsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBJZiBmcmFtZeKAmXMgYWN0
aXZlIGJvb2xlYW4gaXMgZmFsc2UsIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9y
dCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fYWN0aXZlKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGcmFtZSBpcyBub3QgYWN0aXZlIl9zIH07CisKKyAg
ICAvLyBGb3IgZWFjaCBqb2ludCBpbiB0aGUgam9pbnRTcGFjZXM6CisgICAgLy8gSWYgam9pbnTi
gJlzIHNlc3Npb24gaXMgZGlmZmVyZW50IGZyb20gc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGZvciAoY29uc3QgYXV0byYgam9p
bnRTcGFjZSA6IGpvaW50U3BhY2VzKSB7CisgICAgICAgIGlmICgham9pbnRTcGFjZSB8fCBqb2lu
dFNwYWNlLT5zZXNzaW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSm9pbnQgc3BhY2UncyBzZXNzaW9uIGRv
ZXMgbm90IG1hdGNoIGZyYW1lJ3Mgc2Vzc2lvbiJfcyB9OworICAgIH0KKworICAgIC8vIElmIHRo
ZSBsZW5ndGggb2Ygam9pbnRTcGFjZXMgaXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVt
ZW50cyBpbiByYWRpaSwgdGhyb3cgYSBUeXBlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgor
ICAgIGlmIChqb2ludFNwYWNlcy5zaXplKCkgPiByYWRpaS5sZW5ndGgoKSkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuZXhwZWN0ZWQgbGVuZ3RoIG9mIHJhZGlpIGFy
cmF5Il9zIH07CisKKyAgICAvLyBMZXQgYWxsVmFsaWQgYmUgdHJ1ZS4KKyAgICBib29sIGFsbFZh
bGlkID0gdHJ1ZTsKKworICAgIC8vIEZvciBlYWNoIGpvaW50IGluIHRoZSBqb2ludFNwYWNlczoK
KyAgICAvLyAxLiBTZXQgdGhlIGZsb2F0IHZhbHVlIG9mIHJhZGlpIGF0IG9mZnNldCBhcyBmb2xs
b3dzOgorICAgIC8vIElmIHRoZSB1c2VyIGFnZW50IGNhbiBkZXRlcm1pbmUgdGhlIHBvc2VzIG9m
IGFsbCB0aGUgam9pbnRzIGJlbG9uZ2luZyB0byB0aGUgam9pbnTigJlzIGhhbmQ6CisgICAgLy8g
ICAgIFNldCB0aGUgZmxvYXQgdmFsdWUgb2YgcmFkaWkgYXQgb2Zmc2V0IHRvIHRoYXQgcmFkaXVz
LgorICAgIC8vIE90aGVyd2lzZQorICAgIC8vICAgICBTZXQgdGhlIGZsb2F0IHZhbHVlIG9mIHJh
ZGlpIGF0IG9mZnNldCB0byBOYU4uCisgICAgLy8gICAgIFNldCBhbGxWYWxpZCB0byBmYWxzZS4K
KyAgICAvLyAyLiBJbmNyZWFzZSBvZmZzZXQgYnkgMS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGpvaW50U3BhY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChqb2ludFNwYWNlc1tp
XS0+aGFuZEhhc01pc3NpbmdQb3NlcygpKSB7CisgICAgICAgICAgICByYWRpaS5zZXQoaSwgc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpKTsKKyAgICAgICAgICAgIGFsbFZh
bGlkID0gZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmFkaWkuc2V0KGksIGpv
aW50U3BhY2VzW2ldLT5yYWRpdXMoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGFsbFZhbGlkOwog
fQogCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWhhbmQtaW5wdXQv
I2RvbS14cmZyYW1lLWZpbGxwb3NlcwotRXhjZXB0aW9uT3I8Ym9vbD4gV2ViWFJGcmFtZTo6Zmls
bFBvc2VzKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJTcGFjZT4+LCBjb25zdCBXZWJYUlNwYWNl
JiwgY29uc3QgRmxvYXQzMkFycmF5JikKK0V4Y2VwdGlvbk9yPGJvb2w+IFdlYlhSRnJhbWU6OmZp
bGxQb3Nlcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2Vi
WFJTcGFjZT4+IHNwYWNlcywgY29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlLCBGbG9hdDMyQXJy
YXkmIHRyYW5zZm9ybXMpCiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gSWYgZnJhbWXigJlz
IGFjdGl2ZSBib29sZWFuIGlzIGZhbHNlLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQg
YWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCFtX2FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRnJhbWUgaXMgbm90IGFjdGl2ZSJfcyB9Owor
CisgICAgLy8gRm9yIGVhY2ggc3BhY2UgaW4gdGhlIHNwYWNlcyBzZXF1ZW5jZToKKyAgICAvLyBJ
ZiBzcGFjZeKAmXMgc2Vzc2lvbiBpcyBkaWZmZXJlbnQgZnJvbSBzZXNzaW9uLCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgZm9yIChjb25zdCBh
dXRvJiBzcGFjZSA6IHNwYWNlcykgeworICAgICAgICBpZiAoIXNwYWNlIHx8IHNwYWNlLT5zZXNz
aW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiU3BhY2UncyBzZXNzaW9uIGRvZXMgbm90IG1hdGNoIGZyYW1l
J3Mgc2Vzc2lvbiJfcyB9OworICAgIH0KKworICAgIC8vIElmIGJhc2VTcGFjZeKAmXMgc2Vzc2lv
biBpcyBkaWZmZXJlbnQgZnJvbSBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKGJhc2VTcGFjZS5zZXNzaW9uKCkgIT0gbV9z
ZXNzaW9uLnB0cigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYXNlIHNwYWNlJ3Mgc2Vzc2lvbiBkb2VzIG5vdCBtYXRjaCBmcmFtZSdzIHNlc3Npb24i
X3MgfTsKKworICAgIC8vIElmIHRoZSBsZW5ndGggb2Ygc3BhY2VzIG11bHRpcGxpZWQgYnkgMTYg
aXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0cmFuc2Zvcm1zLAorICAg
IC8vIHRocm93IGEgVHlwZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBjb25zdCBz
aXplX3QgbnVtYmVyT2ZGbG9hdHNQZXJUcmFuc2Zvcm0gPSAxNjsKKyAgICBpZiAoc3BhY2VzLnNp
emUoKSAqIG51bWJlck9mRmxvYXRzUGVyVHJhbnNmb3JtID4gdHJhbnNmb3Jtcy5sZW5ndGgoKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuZXhwZWN0ZWQgbGVuZ3Ro
IG9mIHRyYW5zZm9ybXMgYXJyYXkiX3MgfTsKKworICAgIC8vIENoZWNrIGlmIHBvc2VzIG1heSBi
ZSByZXBvcnRlZCBhbmQsIGlmIG5vdCwgdGhyb3cgYSBTZWN1cml0eUVycm9yIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fc2Vzc2lvbi0+cG9zZXNDYW5CZVJlcG9ydGVkKGRvY3Vt
ZW50KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJQb3NlcyBj
YW5ub3QgYmUgcmVwb3J0ZWQiX3MgfTsKKworICAgIC8vIExldCBhbGxWYWxpZCBiZSB0cnVlLgor
ICAgIGJvb2wgYWxsVmFsaWQgPSB0cnVlOworCisgICAgLy8gRm9yIGVhY2ggc3BhY2UgaW4gdGhl
IHNwYWNlcyBzZXF1ZW5jZToKKyAgICBmb3IgKHNpemVfdCBzcGFjZUluZGV4ID0gMDsgc3BhY2VJ
bmRleCA8IHNwYWNlcy5zaXplKCk7ICsrc3BhY2VJbmRleCkgeworICAgICAgICAvLyAxLiBQb3B1
bGF0ZSB0aGUgcG9zZSBvZiBzcGFjZSBpbiBiYXNlU3BhY2UgYXQgdGhlIHRpbWUgcmVwcmVzZW50
ZWQgYnkgZnJhbWUgaW50byBwb3NlLgorICAgICAgICBhdXRvIHBvcHVsYXRlUG9zZVJlc3VsdCA9
IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgKihzcGFjZXNbc3BhY2VJbmRleF0pLCBiYXNlU3BhY2Up
OworICAgICAgICBpZiAocG9wdWxhdGVQb3NlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAg
ICAgICAgLy8gMi4gSWYgcG9zZSBpcyBudWxsLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CisgICAgICAgIC8vIDMuIFNldCAxNiBjb25zZWN1dGl2ZSBlbGVtZW50cyBvZiB0aGUgdHJhbnNm
b3JtcyBhcnJheSBzdGFydGluZyBhdCBvZmZzZXQgdG8gTmFOLgorICAgICAgICAvLyA0LiBTZXQg
YWxsVmFsaWQgdG8gZmFsc2UuCisgICAgICAgIGF1dG8gcG9wdWxhdGVWYWx1ZSA9IHBvcHVsYXRl
UG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgaWYgKCFwb3B1bGF0ZVZh
bHVlKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB0cmFuc2Zvcm1JbmRleCA9IDA7IHRyYW5z
Zm9ybUluZGV4IDwgbnVtYmVyT2ZGbG9hdHNQZXJUcmFuc2Zvcm07ICsrdHJhbnNmb3JtSW5kZXgp
CisgICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy5zZXQoc3BhY2VJbmRleCAqIG51bWJlck9mRmxv
YXRzUGVyVHJhbnNmb3JtICsgdHJhbnNmb3JtSW5kZXgsIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjpxdWlldF9OYU4oKSk7CisgICAgICAgICAgICBhbGxWYWxpZCA9IGZhbHNlOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gNS4gSWYgcG9zZSBpcyBub3QgbnVsbCwgY29weSBh
bGwgZWxlbWVudHMgZnJvbSBwb3Nl4oCZcyBtYXRyaXggbWVtYmVyIHRvIHRoZSB0cmFuc2Zvcm1z
IGFycmF5IHN0YXJ0aW5nIGF0IG9mZnNldC4KKyAgICAgICAgICAgIC8vIDYuIEluY3JlYXNlIG9m
ZnNldCBieSAxNi4KKyAgICAgICAgICAgIGF1dG8gbWF0cml4ID0gcG9wdWxhdGVWYWx1ZS0+dHJh
bnNmb3JtLnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KCk7CisgICAgICAgICAgICBmb3IgKHNpemVf
dCB0cmFuc2Zvcm1JbmRleCA9IDA7IHRyYW5zZm9ybUluZGV4IDwgbnVtYmVyT2ZGbG9hdHNQZXJU
cmFuc2Zvcm07ICsrdHJhbnNmb3JtSW5kZXgpCisgICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy5z
ZXQoc3BhY2VJbmRleCAqIG51bWJlck9mRmxvYXRzUGVyVHJhbnNmb3JtICsgdHJhbnNmb3JtSW5k
ZXgsIG1hdHJpeFt0cmFuc2Zvcm1JbmRleF0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGFsbFZhbGlkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmgKaW5kZXggYmJhYTJjZGQ4ZTlmY2I4ZWYwNjRkNTQ3NDgxMjQ0ZDlkNDEyMzhm
Ni4uNTE0NzkyNGNhMTJmZjYyMGEwYmUwNzljYmMwODI2Mjg0YTI2YjAzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKQEAgLTYwLDkgKzYwLDkgQEAgcHVibGlj
OgogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBnZXRQb3NlKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAogI2lmIEVOQUJM
RShXRUJYUl9IQU5EUykKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJKb2ludFBvc2U+PiBn
ZXRKb2ludFBvc2UoY29uc3QgV2ViWFJKb2ludFNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpOwot
ICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGZpbGxKb2ludFJhZGlpKGNvbnN0IFZlY3RvcjxSZWZQdHI8
V2ViWFJKb2ludFNwYWNlPj4sIGNvbnN0IEZsb2F0MzJBcnJheSYpOwotICAgIEV4Y2VwdGlvbk9y
PGJvb2w+IGZpbGxQb3Nlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSU3BhY2U+PiwgY29uc3Qg
V2ViWFJTcGFjZSYsIGNvbnN0IEZsb2F0MzJBcnJheSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0
cjxXZWJYUkpvaW50UG9zZT4+IGdldEpvaW50UG9zZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFdl
YlhSSm9pbnRTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKKyAgICBFeGNlcHRpb25Pcjxib29s
PiBmaWxsSm9pbnRSYWRpaShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+LCBG
bG9hdDMyQXJyYXkmKTsKKyAgICBFeGNlcHRpb25Pcjxib29sPiBmaWxsUG9zZXMoY29uc3QgRG9j
dW1lbnQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSU3BhY2U+PiwgY29uc3QgV2ViWFJTcGFj
ZSYsIEZsb2F0MzJBcnJheSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJl
c1RpbWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJIYW5kLmNwcAppbmRleCBmNTNlNDFiZmQyZWY1YWQ1OTk3MmIzNGVkN2E2
ZjMzNTU5YzFjMzkxLi45NWJiZThiN2MxZTgzZmVkNGM3YWU1ZTdiYTUxNjA5MzRjZTRiNTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3BwCkBAIC00MywxNCAr
NDMsMjQgQEAgUmVmPFdlYlhSSGFuZD4gV2ViWFJIYW5kOjpjcmVhdGUoY29uc3QgV2ViWFJJbnB1
dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiBXZWJYUkhhbmQ6OldlYlhSSGFuZChjb25zdCBXZWJYUklu
cHV0U291cmNlJiBpbnB1dFNvdXJjZSkKICAgICA6IG1faW5wdXRTb3VyY2UoaW5wdXRTb3VyY2Up
CiB7CisgICAgYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKTsKKyAgICBhdXRvKiBkb2N1
bWVudCA9IHNlc3Npb24gPyBkb3duY2FzdDxEb2N1bWVudD4oc2Vzc2lvbi0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSA6IG51bGxwdHI7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KFhS
SGFuZEpvaW50OjpDb3VudCk7ICsraSkKKyAgICAgICAgbV9qb2ludHMuYXBwZW5kKFdlYlhSSm9p
bnRTcGFjZTo6Y3JlYXRlKCpkb2N1bWVudCwgKnRoaXMsIHN0YXRpY19jYXN0PFhSSGFuZEpvaW50
PihpKSkpOwogfQogCiBXZWJYUkhhbmQ6On5XZWJYUkhhbmQoKSA9IGRlZmF1bHQ7CiAKIFJlZlB0
cjxXZWJYUkpvaW50U3BhY2U+IFdlYlhSSGFuZDo6Z2V0KGNvbnN0IFhSSGFuZEpvaW50JiBrZXkp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgc2l6
ZV90IGpvaW50SW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGtleSk7CisgICAgaWYgKGpvaW50
SW5kZXggPj0gbV9qb2ludHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBtX2pvaW50c1tqb2ludEluZGV4XS5wdHIoKTsKIH0KIAogV2ViWFJIYW5kOjpJdGVy
YXRvcjo6SXRlcmF0b3IoV2ViWFJIYW5kJiBoYW5kKQpAQCAtNjAsMTkgKzcwLDQ0IEBAIFdlYlhS
SGFuZDo6SXRlcmF0b3I6Okl0ZXJhdG9yKFdlYlhSSGFuZCYgaGFuZCkKIAogc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+Pj4gV2Vi
WFJIYW5kOjpJdGVyYXRvcjo6bmV4dCgpCiB7Ci0gICAgaWYgKG1faW5kZXggPiBtX2hhbmQtPm1f
am9pbnRzLnNpemUoKSkKKyAgICBpZiAobV9pbmRleCA+PSBtX2hhbmQtPm1fam9pbnRzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgc2l6ZV90IGluZGV4ID0gbV9pbmRleCsrOworICAgIHJldHVybiBLZXlWYWx1ZVBh
aXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+PiB7IHN0YXRpY19jYXN0PFhS
SGFuZEpvaW50PihpbmRleCksIG1faGFuZC0+bV9qb2ludHNbaW5kZXhdLnB0cigpIH07CiB9CiAK
IFdlYlhSU2Vzc2lvbiogV2ViWFJIYW5kOjpzZXNzaW9uKCkKIHsKICAgICBpZiAoIW1faW5wdXRT
b3VyY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgcmV0dXJuIG1faW5wdXRTb3Vy
Y2UuZ2V0KCktPnNlc3Npb24oKTsKIH0KIAordm9pZCBXZWJYUkhhbmQ6OnVwZGF0ZUZyb21JbnB1
dFNvdXJjZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2Um
IGlucHV0U291cmNlKQoreworICAgIGlmICghaW5wdXRTb3VyY2UuaGFuZEpvaW50cykgeworICAg
ICAgICBtX2hhc01pc3NpbmdQb3NlcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SGFuZEpvaW50c1ZlY3Rv
ciYgaGFuZEpvaW50cyA9ICooaW5wdXRTb3VyY2UuaGFuZEpvaW50cyk7CisgICAgaWYgKGhhbmRK
b2ludHMuc2l6ZSgpICE9IG1fam9pbnRzLnNpemUoKSkgeworICAgICAgICBtX2hhc01pc3NpbmdQ
b3NlcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIGhhc01pc3Np
bmdQb3NlcyA9IGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGFuZEpvaW50cy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAoIWhhbmRKb2ludHNbaV0pCisgICAgICAgICAgICBo
YXNNaXNzaW5nUG9zZXMgPSB0cnVlOworCisgICAgICAgIG1fam9pbnRzW2ldLT51cGRhdGVGcm9t
Sm9pbnQoaGFuZEpvaW50c1tpXSk7CisgICAgfQorICAgIG1faGFzTWlzc2luZ1Bvc2VzID0gaGFz
TWlzc2luZ1Bvc2VzOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJIYW5kLmgKaW5kZXggZGJlMTE0MzI1M2Q1NzA3OTFhZmM3YmQ4Njg4Yzk5MmRjM2Zi
YmFmZS4uZWRiYWI1OTYwZDM1OTBjMjE0ZDBkMjU0MTEyNGYwZjVmZDFmZGFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oCkBAIC0zNiwxNyArMzYsMTggQEAKICNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBXZWJYUkhhbmQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUkhhbmQ+
IHsKK2NsYXNzIFdlYlhSSGFuZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSGFuZD4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXZWJYUkhhbmQ+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFdlYlhSSGFuZCk7CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFdlYlhSSGFuZD4gY3JlYXRl
KGNvbnN0IFdlYlhSSW5wdXRTb3VyY2UmKTsKICAgICB+V2ViWFJIYW5kKCk7CiAKLSAgICB1bnNp
Z25lZCBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIHsgcmV0
dXJuIG1fam9pbnRzLnNpemUoKTsgfQogCiAgICAgUmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4gZ2V0
KGNvbnN0IFhSSGFuZEpvaW50JiBrZXkpOwogCkBAIC02MSwxNiArNjIsMTcgQEAgcHVibGljOgog
ICAgIH07CiAgICAgSXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSB7IHJldHVybiBJdGVyYXRvcigq
dGhpcyk7IH0KIAotICAgIC8vIEZvciBHQyByZWFjaGFibGl0aXkuCisgICAgLy8gRm9yIEdDIHJl
YWNoYWJpbGl0eS4KICAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKTsKIAorICAgIGJvb2wgaGFz
TWlzc2luZ1Bvc2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNaXNzaW5nUG9zZXM7IH0KKyAgICB2
b2lkIHVwZGF0ZUZyb21JbnB1dFNvdXJjZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2UmKTsKKwogcHJpdmF0ZToKICAgICBXZWJYUkhhbmQoY29uc3QgV2Vi
WFJJbnB1dFNvdXJjZSYpOwogCi0gICAgdW5zaWduZWQgbV9zaXplIHsgMCB9OwotICAgIHVzaW5n
IEhhbmRKb2ludFRvU3BhY2VNYXAgPSBIYXNoTWFwPFhSSGFuZEpvaW50LCBSZWY8V2ViWFJKb2lu
dFNwYWNlPiwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj47Ci0gICAgSGFuZEpvaW50VG9TcGFjZU1hcCBtX2pvaW50czsK
LQorICAgIFZlY3RvcjxSZWY8V2ViWFJKb2ludFNwYWNlPj4gbV9qb2ludHM7CisgICAgYm9vbCBt
X2hhc01pc3NpbmdQb3NlcyB7IHRydWUgfTsKICAgICBXZWFrUHRyPFdlYlhSSW5wdXRTb3VyY2U+
IG1faW5wdXRTb3VyY2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUklucHV0U291cmNlLmNwcAppbmRleCA1ZjU2OTNlMzAxMDNkMmZlNzM1ODRlMTI4MWRl
MDc2OGJhYjg3ZjUwLi4wYWE4OWQxZWU3YzI0NTcwOGZkOTBlYzQyODIzMTAxYmY0OWMzNjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5j
cHAKQEAgLTg4LDE2ICs4OCwxOSBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnVwZGF0ZShkb3Vi
bGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgaWYgKHNvdXJjZS5zaW11bGF0ZUhhbmQpIHsK
LSAgICAgICAgLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IGNyZWF0ZXMgYW4gb2JqZWN0IGp1c3Qg
Zm9yIHVzZSBpbiB0ZXN0aW5nLgotICAgICAgICAvLyBUaGUgcmVhbCBpbXBsZW1lbnRhdGlvbiB3
aWxsIHVzZSBhY3R1YWwgZGF0YSBhbmQgb25seSBiZSB2aXNpYmxlCi0gICAgICAgIC8vIGlmIGhh
bmQtdHJhY2tpbmcgd2FzIHJlcXVlc3RlZCBhdCBzZXNzaW9uIHN0YXJ0LgotICAgICAgICBpZiAo
IW1faGFuZCkKKyAgICBpZiAoc291cmNlLmhhbmRKb2ludHMpIHsKKyAgICAgICAgLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSL3dlYnhyLWhhbmQtaW5wdXQtMS8jeHJpbnB1dHNvdXJjZS1pbnRlcmZh
Y2UKKyAgICAgICAgLy8gSWYgdGhlIFhSSW5wdXRTb3VyY2UgYmVsb25ncyB0byBhbiBYUlNlc3Np
b24gdGhhdCBoYXMgbm90IGJlZW4gcmVxdWVzdGVkCisgICAgICAgIC8vIHdpdGggdGhlICJoYW5k
LXRyYWNraW5nIiBmZWF0dXJlIGRlc2NyaXB0b3IsIGhhbmQgTVVTVCBiZSBudWxsLgorICAgICAg
ICBpZiAoIW1faGFuZCAmJiBzZXNzaW9uLT5pc0hhbmRUcmFja2luZ0VuYWJsZWQoKSkKICAgICAg
ICAgICAgIG1faGFuZCA9IFdlYlhSSGFuZDo6Y3JlYXRlKCp0aGlzKTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgbV9oYW5kID0gbnVsbHB0cjsKLSNlbmRpZgogCisgICAgICAgIGlmIChtX2hhbmQpCisg
ICAgICAgICAgICBtX2hhbmQtPnVwZGF0ZUZyb21JbnB1dFNvdXJjZShzb3VyY2UpOworCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBXZWJYUklucHV0U291cmNlOjpy
ZXF1aXJlc0lucHV0U291cmNlQ2hhbmdlKGNvbnN0IElucHV0U291cmNlJiBzb3VyY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCmluZGV4IDRi
NzgzYjBjNjZiY2RkNzU5NjkwOThhMTJlMWRhMjdiNzcxMjFhNjMuLmVkMDQ1YmI3NDZiNmUyZDc0
ZmUzOGU1ZTdkNTJhMWRhMzE4ZmYyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCkBAIC0zNCwxMyArMzQsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJKb2ludFBvc2UpOwog
Ci1SZWY8V2ViWFJKb2ludFBvc2U+IFdlYlhSSm9pbnRQb3NlOjpjcmVhdGUoUmVmPFdlYlhSUmln
aWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCitSZWY8V2Vi
WFJKb2ludFBvc2U+IFdlYlhSSm9pbnRQb3NlOjpjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24sIGZsb2F0IHJhZGl1cykKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkpvaW50UG9zZShXVEZNb3ZlKHRyYW5zZm9y
bSksIGVtdWxhdGVkUG9zaXRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkpv
aW50UG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24sIHJhZGl1cykpOwog
fQogCi1XZWJYUkpvaW50UG9zZTo6V2ViWFJKb2ludFBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCitXZWJYUkpvaW50UG9zZTo6
V2ViWFJKb2ludFBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29s
IGVtdWxhdGVkUG9zaXRpb24sIGZsb2F0IHJhZGl1cykKICAgICA6IFdlYlhSUG9zZShXVEZNb3Zl
KHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pCisgICAgLCBtX3JhZGl1cyhyYWRpdXMpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2lu
dFBvc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaApp
bmRleCAxZDdjNzQxYTNhYTY0YTVmOTg1OTg1ZWNhZDdlMjhmZmVhNzY4OTlkLi43ZWExNWNiNTVh
ZGRjM2RjNWYyYzJjMTdhNmJhNTEyMGIwMzc4MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5oCkBAIC0zOSwxMyArMzksMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgV2ViWFJKb2ludFBvc2UgOiBwdWJsaWMgV2ViWFJQb3NlIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSSm9pbnRQb3NlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYlhSSm9pbnRQb3NlPiBjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
JiYsIGJvb2wgZW11bGF0ZWRQb3NpdGlvbik7CisgICAgc3RhdGljIFJlZjxXZWJYUkpvaW50UG9z
ZT4gY3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRp
b24sIGZsb2F0IHJhZGl1cyk7CiAgICAgfldlYlhSSm9pbnRQb3NlKCkgPSBkZWZhdWx0OwogCiAg
ICAgZmxvYXQgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXM7IH0KIAogcHJpdmF0ZToK
LSAgICBXZWJYUkpvaW50UG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVs
YXRlZFBvc2l0aW9uKTsKKyAgICBXZWJYUkpvaW50UG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uLCBmbG9hdCByYWRpdXMpOwogCiAgICAgZmxvYXQg
bV9yYWRpdXMgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkpvaW50UG9zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSm9pbnRQb3NlLmlkbAppbmRleCA5ZWJkOGJmNTNiMmY5ODU5ZTk5MGI5ZWRmNDU1YTlhYzQ4
Mzc1OTZhLi43M2VjYWVjMjQwZDBmMmI5NzcyZWYxNGI1ZThjMDdmOWNkNzMwOTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbApAQCAtMjYs
NiArMjYsOCBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAogICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViWFJFbmFibGVkJldlYlhSSGFuZElucHV0TW9kdWxlRW5hYmxlZCwKKyAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAg
U2VjdXJlQ29udGV4dCwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbnRlcmZhY2VOYW1lPVhS
Sm9pbnRQb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Sm9pbnRTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRT
cGFjZS5jcHAKaW5kZXggOWVlNjUwZmUwOTA4Y2JjNTM3YThlYzc5MzNkYTZmMGU0OGYzNTBmMC4u
ZDBmYjcxZGRjYTRjNzAwYmQzNjY4NWM0NDllNzlhMWRhYTdlMDY5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmNwcApAQCAtMjgsNiArMjgs
OCBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBFTkFCTEUoV0VCWFJfSEFORFMpCiAKKyNpbmNs
dWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViWFJIYW5kLmgiCiAjaW5jbHVkZSAiV2Vi
WFJSaWdpZFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAK
QEAgLTM1LDIyICszNyw0NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChXZWJYUkpvaW50U3BhY2UpOwogCi1SZWY8V2ViWFJKb2ludFNwYWNlPiBX
ZWJYUkpvaW50U3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYg
c2Vzc2lvbikKK1JlZjxXZWJYUkpvaW50U3BhY2U+IFdlYlhSSm9pbnRTcGFjZTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViWFJIYW5kJiBoYW5kLCBYUkhhbmRKb2ludCBqb2ludE5hbWUs
IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNl
SGFuZEpvaW50PiYmIGpvaW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSm9p
bnRTcGFjZShkb2N1bWVudCwgc2Vzc2lvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlhSSm9pbnRTcGFjZShkb2N1bWVudCwgaGFuZCwgam9pbnROYW1lLCBXVEZNb3ZlKGpvaW50KSkp
OwogfQogCi1XZWJYUkpvaW50U3BhY2U6OldlYlhSSm9pbnRTcGFjZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKK1dlYlhSSm9pbnRTcGFjZTo6V2ViWFJKb2ludFNw
YWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJIYW5kJiBoYW5kLCBYUkhhbmRKb2ludCBqb2lu
dE5hbWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OklucHV0U291cmNlSGFuZEpvaW50PiYgam9pbnQpCiAgICAgOiBXZWJYUlNwYWNlKGRvY3VtZW50
LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSkKLSAgICAsIG1fc2Vzc2lvbihzZXNzaW9u
KQorICAgICwgbV9oYW5kKGhhbmQpCisgICAgLCBtX2pvaW50TmFtZShqb2ludE5hbWUpCiB7Cisg
ICAgdXBkYXRlRnJvbUpvaW50KGpvaW50KTsKIH0KIAogV2ViWFJKb2ludFNwYWNlOjp+V2ViWFJK
b2ludFNwYWNlKCkgPSBkZWZhdWx0OwogCit2b2lkIFdlYlhSSm9pbnRTcGFjZTo6dXBkYXRlRnJv
bUpvaW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OklucHV0U291cmNlSGFuZEpvaW50PiYgam9pbnQpCit7CisgICAgbV9qb2ludCA9IGpvaW50Owor
fQorCitib29sIFdlYlhSSm9pbnRTcGFjZTo6aGFuZEhhc01pc3NpbmdQb3NlcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFtX2hhbmQgfHwgbV9oYW5kLT5oYXNNaXNzaW5nUG9zZXMoKTsKK30KKwor
V2ViWFJTZXNzaW9uKiBXZWJYUkpvaW50U3BhY2U6OnNlc3Npb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX2hhbmQgPyBtX2hhbmQtPnNlc3Npb24oKSA6IG51bGxwdHI7Cit9CisKIHN0ZDo6b3B0
aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFdlYlhSSm9pbnRTcGFjZTo6bmF0aXZlT3JpZ2lu
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIC8vIGh0dHBzOi8vaW1t
ZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItaGFuZC1pbnB1dC8jeHJqb2ludHNwYWNlLWludGVy
ZmFjZQorICAgIC8vIFRoZSBuYXRpdmUgb3JpZ2luIG9mIHRoZSBYUkpvaW50U3BhY2UgbWF5IG9u
bHkgYmUgcmVwb3J0ZWQgd2hlbiBuYXRpdmUgb3JpZ2lucyBvZgorICAgIC8vIGFsbCBvdGhlciBY
UkpvaW50U3BhY2VzIG9uIHRoZSBzYW1lIGhhbmQgYXJlIGJlaW5nIHJlcG9ydGVkLiBXaGVuIGEg
aGFuZCBpcyBwYXJ0aWFsbHkKKyAgICAvLyBvYnNjdXJlZCB0aGUgdXNlciBhZ2VudCBNVVNUIGVp
dGhlciBlbXVsYXRlIHRoZSBvYnNjdXJlZCBqb2ludHMsIG9yIHJlcG9ydCBudWxsIHBvc2VzCisg
ICAgLy8gZm9yIGFsbCBvZiB0aGUgam9pbnRzLgorICAgIGlmIChoYW5kSGFzTWlzc2luZ1Bvc2Vz
KCkgfHwgIW1fam9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UobV9qb2ludC0+cG9zZS5wb3NlKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3Bh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmgKaW5k
ZXggNTEyNTdiY2M1ZTRiNjQ0ZTJiMzUyZmZmMzcxOTY2OWI4ODc3OTY1Zi4uZjlkZDU5MTY0NzMx
MTcxMWFiNTRjY2E4M2IzZDAyMjc1NTI3YmM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFjZS5oCkBAIC0yOSwzMSArMjksMzkgQEAKIAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgotI2luY2x1ZGUgIldlYlhS
U2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKICNpbmNsdWRlICJYUkhhbmRKb2lu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdlYlhS
SGFuZDsKK2NsYXNzIFdlYlhSU2Vzc2lvbjsKKwogY2xhc3MgV2ViWFJKb2ludFNwYWNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViWFJKb2ludFNwYWNlPiwgcHVibGljIFdlYlhSU3BhY2UgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJKb2ludFNwYWNlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYlhSSm9pbnRTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9u
Jik7CisgICAgc3RhdGljIFJlZjxXZWJYUkpvaW50U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdl
YlhSSGFuZCYsIFhSSGFuZEpvaW50LCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dmlydHVhbCB+V2ViWFJKb2ludFNwYWNlKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhS
Sm9pbnRTcGFjZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSSm9pbnRTcGFjZT46
OmRlcmVmOwogCi0gICAgWFJIYW5kSm9pbnQgam9pbnROYW1lKCkgY29uc3QgeyByZXR1cm4gWFJI
YW5kSm9pbnQ6OldyaXN0OyB9CisgICAgWFJIYW5kSm9pbnQgam9pbnROYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9qb2ludE5hbWU7IH0KKworICAgIGZsb2F0IHJhZGl1cygpIGNvbnN0IHsgcmV0dXJu
IG1fam9pbnQgPyBtX2pvaW50LT5yYWRpdXMgOiAwOyB9CisgICAgdm9pZCB1cGRhdGVGcm9tSm9p
bnQoY29uc3Qgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2VIYW5kSm9pbnQ+Jik7CisgICAgYm9vbCBoYW5kSGFzTWlzc2luZ1Bvc2VzKCkgY29u
c3Q7CisKKyAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0
ZToKLSAgICBXZWJYUkpvaW50U3BhY2UoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mKTsKKyAgICBX
ZWJYUkpvaW50U3BhY2UoRG9jdW1lbnQmLCBXZWJYUkhhbmQmLCBYUkhhbmRKb2ludCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VI
YW5kSm9pbnQ+Jik7CiAKLSAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH07CiAgICAgc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4gbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQpAQCAtNjEsNyArNjksOSBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBpc0pvaW50U3BhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8V2ViWFJI
YW5kPiBtX2hhbmQ7CisgICAgWFJIYW5kSm9pbnQgbV9qb2ludE5hbWUgeyBYUkhhbmRKb2ludDo6
V3Jpc3QgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZUhhbmRKb2ludD4gbV9qb2ludDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmlkbAppbmRleCAwMjQxN2U1NmFj
MmZlZTI4ZTc0N2RkZDhhOTBmMTUyMzRkZGVlYmJjLi5hOThlYzA4M2MxZGYwMTc4NTNhMDcyZjEy
ZGM3MGQ3ZjhiNDE2OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSSm9pbnRTcGFjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkpvaW50U3BhY2UuaWRsCkBAIC0yNiw2ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9
V0VCWFJfSEFORFMsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJYUkVuYWJsZWQmV2ViWFJIYW5k
SW5wdXRNb2R1bGVFbmFibGVkLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTR2Vu
ZXJhdGVUb05hdGl2ZU9iamVjdCwKICAgICBTZWN1cmVDb250ZXh0LAogICAgIEV4cG9zZWQ9V2lu
ZG93LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmlu
ZGV4IGYwY2U1OGNjMjI1MGZmN2QxZjRmMDRiMzlmMzBiYmY5ZjAyZTIzYmIuLjJiODRlMGU5ODcx
MjAwNzUwOThjOWMzOGY4NDRkNzhmYTQ5ZTRlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKQEAgLTY0NSw2ICs2NDUsMTQgQEAgYm9vbCBXZWJY
UlNlc3Npb246OnBvc2VzQ2FuQmVSZXBvcnRlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCitib29s
IFdlYlhSU2Vzc2lvbjo6aXNIYW5kVHJhY2tpbmdFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yZXF1ZXN0ZWRGZWF0dXJlcy5jb250YWlucyhQbGF0Zm9ybVhSOjpTZXNzaW9uRmVhdHVy
ZTo6SGFuZFRyYWNraW5nKTsKK30KKyNlbmRpZgorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU2Vzc2lvbi5oCmluZGV4IDg2MGM2ZjViYjgxMWRiNDcxNThkNDU5Mzk1ZmE2NDNkYTlk
YzA0MzMuLmE2Y2ZhODRlYWEyZWJiMTc0ZmZlODBhMDMxN2VhOTk3OGRlN2Q1YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApAQCAtOTgsNiArOTgsMTAg
QEAgcHVibGljOgogICAgIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiBmcmFt
ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lRGF0YTsgfQogICAgIGNvbnN0IFdlYlhSVmll
d2VyU3BhY2UmIHZpZXdlclJlZmVyZW5jZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gKm1fdmlld2Vy
UmVmZXJlbmNlU3BhY2U7IH0KICAgICBib29sIHBvc2VzQ2FuQmVSZXBvcnRlZChjb25zdCBEb2N1
bWVudCYpIGNvbnN0OworICAgIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAgICBib29sIGlz
SGFuZFRyYWNraW5nRW5hYmxlZCgpIGNvbnN0OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgV2Vi
WFJTZXNzaW9uKERvY3VtZW50JiwgV2ViWFJTeXN0ZW0mLCBYUlNlc3Npb25Nb2RlLCBQbGF0Zm9y
bVhSOjpEZXZpY2UmLCBGZWF0dXJlTGlzdCYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2N2Q2Y2MxM2QyODJiNWViNzM3MjNi
OThmMzZjNTM3YjdlM2EyNjFhLi4yYzhhYTlhMzRhMTUwZDlmZTJiNTg0MzBhMGMyMGNlZDcwMzkw
Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNzQ3LDYgKzE3NDcsNyBAQAogCQk1MjczQ0NCMjI1NjQ1NzZGMDA4NTAwMDcg
LyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3M0NDQUQyNTY0NTc2QzAwODUwMDA3IC8qIEpTRmFrZVhS
QnV0dG9uU3RhdGVJbml0LmNwcCAqLzsgfTsKIAkJNTI3M0NDQjMyNTY0NTc2RjAwODUwMDA3IC8q
IEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzNDQ0FFMjU2NDU3NkQwMDg1MDAwNyAvKiBKU0Zha2VY
UlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHAgKi87IH07CiAJCTUyNzNDQ0I0MjU2NDU3NkYwMDg1MDAw
NyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJ
bml0LmNwcCAqLzsgfTsKKwkJNTJBMEJFNjYyN0MyMjdFMTAwNDY2MTFFIC8qIEpTRmFrZVhSSm9p
bnRTdGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTJBMEJFNjUyN0MyMjdFMDAwNDY2MTFFIC8qIEpTRmFrZVhSSm9pbnRTdGF0ZUluaXQu
Y3BwICovOyB9OwogCQk1MkIwRDRCRTFDNTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIwRDRCRDFD
NTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJCMEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIwRDRCRjFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MkIwRDRDMjFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkIwRDRDMTFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEwMDcyLDYgKzEwMDczLDggQEAKIAkJNTFGQjY3RDkxQUU2QjVFNDAwRDA2QzVBIC8qIENv
bnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFGQjY3REExQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNp
b25TdHlsZVNoZWV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRF
eHRlbnNpb25TdHlsZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMTMx
RTVBMUM0RjE1NjEwMDMzRjgwMiAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNjNCRjIwMjdDMUI1
MzgwMDg1MjUwQyAvKiBGYWtlWFJKb2ludFN0YXRlSW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYWtl
WFJKb2ludFN0YXRlSW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjYzQkYy
MjI3QzFCNTNCMDA4NTI1MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZha2VY
UkpvaW50U3RhdGVJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzI0
RjExQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3MjRGMjFDQjJG
REY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjg4QUEzMjdENkE3REEwMDM1NzdBMiAvKiBS
ZXNpZGVudEtleVJlcXVpcmVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc2lkZW50S2V5UmVxdWly
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDg3LDYgKzEwMDkwLDcg
QEAKIAkJNTI3M0NDQUQyNTY0NTc2QzAwODUwMDA3IC8qIEpTRmFrZVhSQnV0dG9uU3RhdGVJbml0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSQnV0dG9u
U3RhdGVJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0NDQUUyNTY0
NTc2RDAwODUwMDA3IC8qIEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0NDQUYyNTY0NTc2RTAwODUwMDA3
IC8qIEpTRmFrZVhSVmlld0luaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNGYWtlWFJWaWV3SW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUyQTBCRTY1MjdDMjI3RTAwMDQ2NjExRSAvKiBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRmFrZVhSSm9pbnRTdGF0ZUlu
aXQuY3BwOyBwYXRoID0gSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyQjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1WaWV3Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MkIwRDRDMTFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjExODks
NiArMjExOTMsOCBAQAogCQkJCUUxOEQ4M0UzMjQzRjcxQ0YwMDkyNDdENiAvKiBGYWtlWFJCdXR0
b25TdGF0ZUluaXQuaWRsICovLAogCQkJCUUxOEQ4M0VBMjQzRjcxRDQwMDkyNDdENiAvKiBGYWtl
WFJJbnB1dFNvdXJjZUluaXQuaCAqLywKIAkJCQlFMThEODNEQzI0M0Y3MUNCMDA5MjQ3RDYgLyog
RmFrZVhSSW5wdXRTb3VyY2VJbml0LmlkbCAqLywKKwkJCQk1MjYzQkYyMDI3QzFCNTM4MDA4NTI1
MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQuaCAqLywKKwkJCQk1MjYzQkYyMjI3QzFCNTNCMDA4
NTI1MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsICovLAogCQkJCUUxOEQ4M0U1MjQzRjcx
RDEwMDkyNDdENiAvKiBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuaCAqLywKIAkJCQlFMThEODNF
NjI0M0Y3MUQxMDA5MjQ3RDYgLyogRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmlkbCAqLywKIAkJ
CQlFMThEODNERjI0M0Y3MUNEMDA5MjQ3RDYgLyogRmFrZVhSVmlld0luaXQuaCAqLywKQEAgLTIx
Mjg0LDYgKzIxMjkwLDcgQEAKIAkJCQk1MjczQ0NBQzI1NjQ1NzZDMDA4NTAwMDcgLyogSlNGYWtl
WFJCb3VuZHNQb2ludC5jcHAgKi8sCiAJCQkJNTI3M0NDQUQyNTY0NTc2QzAwODUwMDA3IC8qIEpT
RmFrZVhSQnV0dG9uU3RhdGVJbml0LmNwcCAqLywKIAkJCQk1MjczQ0NBQTI1NjQ1NzZCMDA4NTAw
MDcgLyogSlNGYWtlWFJJbnB1dFNvdXJjZUluaXQuY3BwICovLAorCQkJCTUyQTBCRTY1MjdDMjI3
RTAwMDQ2NjExRSAvKiBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcCAqLywKIAkJCQk1MjczQ0NB
RTI1NjQ1NzZEMDA4NTAwMDcgLyogSlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuY3BwICovLAog
CQkJCTUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCAqLywK
IAkJCQk1MTcxNEVBRTFDRjY2NTRBMDA0NzIzQzQgLyogSlNHQ09ic2VydmF0aW9uLmNwcCAqLywK
QEAgLTM4ODcyLDYgKzM4ODc5LDcgQEAKIAkJCQk1MjczQ0NCMTI1NjQ1NzZGMDA4NTAwMDcgLyog
SlNGYWtlWFJCb3VuZHNQb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjczQ0NCMjI1NjQ1
NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTI3M0NDQjAyNTY0NTc2RjAwODUwMDA3IC8qIEpTRmFrZVhSSW5wdXRTb3VyY2VJbml0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyQTBCRTY2MjdDMjI3RTEwMDQ2NjExRSAvKiBKU0Zh
a2VYUkpvaW50U3RhdGVJbml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzNDQ0IzMjU2NDU3
NkYwMDg1MDAwNyAvKiBKU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MjczQ0NCNDI1NjQ1NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJWaWV3SW5pdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlERTVGODYxMjFGQTIzOUU3MDA2REI2M0EgLyogSlNHQ09ic2Vy
dmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oCmluZGV4IDkzZDAzZjhhYzlhMjJlMzQ3YThiM2Y2NDAzZjEyZjg0YjE3YWVjNWYuLjRm
N2U1MGQxY2UxYzNjMWMxNGNjMWRmMTc4NDcwNTQwZjU4NzgzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBpbmxpbmUgU3RyaW5n
IHNlc3Npb25GZWF0dXJlRGVzY3JpcHRvcihTZXNzaW9uRmVhdHVyZSBzZXNzaW9uRmVhdHVyZSkK
ICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCiAKIGVudW0gY2xhc3MgSGFuZEpvaW50IDogdW5zaWdu
ZWQgewotICAgIFdyaXN0LAorICAgIFdyaXN0ID0gMCwKICAgICBUaHVtYk1ldGFjYXJwYWwsCiAg
ICAgVGh1bWJQaGFsYW54UHJveGltYWwsCiAgICAgVGh1bWJQaGFsYW54RGlzdGFsLApAQCAtMTg3
LDcgKzE4Nyw4IEBAIGVudW0gY2xhc3MgSGFuZEpvaW50IDogdW5zaWduZWQgewogICAgIFBpbmt5
RmluZ2VyUGhhbGFueFByb3hpbWFsLAogICAgIFBpbmt5RmluZ2VyUGhhbGFueEludGVybWVkaWF0
ZSwKICAgICBQaW5reUZpbmdlclBoYWxhbnhEaXN0YWwsCi0gICAgUGlua3lGaW5nZXJUaXAKKyAg
ICBQaW5reUZpbmdlclRpcCwKKyAgICBDb3VudAogfTsKIAogI2VuZGlmCkBAIC0zMTMsNiArMzE0
LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPElucHV0U291cmNlUG9zZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAg
ICAgfTsKIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAgICAgICAgc3RydWN0IElucHV0U291
cmNlSGFuZEpvaW50IHsKKyAgICAgICAgICAgIElucHV0U291cmNlUG9zZSBwb3NlOworICAgICAg
ICAgICAgZmxvYXQgcmFkaXVzIHsgMCB9OworCisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnB1dFNvdXJjZUhhbmRKb2lu
dD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIFZlY3Rv
cjxzdGQ6Om9wdGlvbmFsPElucHV0U291cmNlSGFuZEpvaW50Pj4gSGFuZEpvaW50c1ZlY3RvcjsK
KyNlbmRpZgorCiAgICAgICAgIHN0cnVjdCBJbnB1dFNvdXJjZSB7CiAgICAgICAgICAgICBJbnB1
dFNvdXJjZUhhbmRsZSBoYW5kbGUgeyAwIH07CiAgICAgICAgICAgICBYUkhhbmRlZG5lc3MgaGFu
ZGVuZXNzIHsgWFJIYW5kZWRuZXNzOjpOb25lIH07CkBAIC0zMjMsOCArMzM2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgVmVjdG9yPElucHV0U291cmNlQnV0dG9uPiBidXR0b25zOwogICAgICAg
ICAgICAgVmVjdG9yPGZsb2F0PiBheGVzOwogI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBBY3R1YWxseSBob2xkIHNvbWUgaGFuZCBkYXRhLgotICAgICAgICAg
ICAgYm9vbCBzaW11bGF0ZUhhbmQgeyBmYWxzZSB9OworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxIYW5kSm9pbnRzVmVjdG9yPiBoYW5kSm9pbnRzOwogI2VuZGlmCiAKICAgICAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTYy
NCw2ICs2MzYsMjYgQEAgc3RkOjpvcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3Vy
Y2VQb3NlPiBEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UKICAgICByZXR1cm4gaW5wdXRT
b3VyY2VQb3NlOwogfQogCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlSGFuZEpvaW50Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBvc2U7Cisg
ICAgZW5jb2RlciA8PCByYWRpdXM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6
Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4gRGV2aWNl
OjpGcmFtZURhdGE6OklucHV0U291cmNlSGFuZEpvaW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5k
Sm9pbnQgaGFuZEpvaW50OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZEpvaW50LnBvc2Up
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFuZEpvaW50LnJhZGl1cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIGhhbmRKb2ludDsKK30KKyNlbmRpZgorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9p
ZCBEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewpAQCAtNjM1LDYgKzY2Nyw5IEBAIHZvaWQgRGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IGdyaXBPcmlnaW47CiAgICAgZW5jb2RlciA8PCBidXR0b25zOwogICAgIGVuY29kZXIgPDwgYXhl
czsKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCisgICAgZW5jb2RlciA8PCBoYW5kSm9pbnRzOwor
I2VuZGlmCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC02NTcsNiArNjkyLDEwIEBA
IHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiBEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2U6OmRlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UuYXhlcykpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc291cmNlLmhhbmRKb2ludHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworI2Vu
ZGlmCiAgICAgcmV0dXJuIHNvdXJjZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
RmFrZVhSSW5wdXRTb3VyY2VJbml0LmgKaW5kZXggMTYwNzYyZDdkNDc3YWJmNjRkMDUyNDY0ZmVi
OWRkMjA1NTA5ZGFhZS4uOWE0YWUzM2E2YmQ5MDhhNzRmYTcwM2YwZjUzYTRkYmFkZmU5NTY0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5oCkBA
IC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgIlhSVGFyZ2V0UmF5TW9kZS5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyNpbmNsdWRlICJGYWtl
WFJKb2ludFN0YXRlSW5pdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IEZha2VYUklucHV0U291cmNlSW5pdCB7CkBAIC00Niw3ICs1MCw3IEBAIHN0cnVjdCBGYWtl
WFJJbnB1dFNvdXJjZUluaXQgewogICAgIFZlY3RvcjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+IHN1
cHBvcnRlZEJ1dHRvbnM7CiAgICAgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW47
CiAjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQotICAgIGJvb2wgc2ltdWxhdGVIYW5kIHsgZmFsc2Ug
fTsKKyAgICBWZWN0b3I8RmFrZVhSSm9pbnRTdGF0ZUluaXQ+IGhhbmRKb2ludHM7CiAjZW5kaWYK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3Vy
Y2VJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0
LmlkbAppbmRleCAxMDE2NjVjZGQzZjgyODY0ZTQ4Yzg1ZjMwZjMzNjRkZTY3YTI1NzVhLi5jNzUw
NjJiZWM3NzQ2MjI5M2UyYzVhY2Y2NzI5MmQ3MzZiMjNlMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsCkBAIC00Myw1ICs0Myw1IEBA
CiAgICAgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW47CiAgICAgLy8gT3B0aW9u
YWwgaGFuZCBpbnB1dC4gRm9yIG5vdyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBhY3R1YWwKICAg
ICAvLyBkYXRhLiBXZSdyZSBqdXN0IGNyZWF0aW5nIHRoZSBvYmplY3QgZm9yIHRlc3RpbmcuCi0g
ICAgW0NvbmRpdGlvbmFsPVdFQlhSX0hBTkRTXSBib29sZWFuIHNpbXVsYXRlSGFuZCA9IGZhbHNl
OworICAgIFtDb25kaXRpb25hbD1XRUJYUl9IQU5EU10gc2VxdWVuY2U8RmFrZVhSSm9pbnRTdGF0
ZUluaXQ+IGhhbmRKb2ludHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9GYWtlWFJKb2ludFN0YXRlSW5pdC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJK
b2ludFN0YXRlSW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZDIzNTE1MGI3NmRjZGQxNTEzMzIyYmU1MGQ2
MDU4M2I5OGEzZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zh
a2VYUkpvaW50U3RhdGVJbml0LmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorCisjaW5jbHVkZSAiRmFrZVhSUmln
aWRUcmFuc2Zvcm1Jbml0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEZha2VY
UkpvaW50U3RhdGVJbml0IHsKKyAgICBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9zZTsKKyAg
ICBmbG9hdCByYWRpdXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCWFJfSEFORFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhS
Sm9pbnRTdGF0ZUluaXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMDE0MjA5ZmY4NGM5M2ZjZWExZDY2MzA1
NjEyNzhkYjM2OThiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gVXNlZCB0byB1cGRhdGUgdGhlIHBvc2UgYW5kIHJhZGl1cyBvZiBhIGpvaW50CitbCisgICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJYUkVuYWJsZWQmV2ViWFJIYW5kSW5wdXRNb2R1bGVFbmFibGVk
LAorICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAorXSBkaWN0aW9uYXJ5IEZha2VYUkpvaW50
U3RhdGVJbml0IHsKKyAgICBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9zZTsKKyAgICBmbG9h
dCByYWRpdXMgPSAwLjA7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwCmluZGV4IDUyMjRkMjhlMDcyNjNkODhjM2JkYWM1ZGJk
OGJhZGY1MDA0OWQ5ZDMuLjdmMDEwYThmMWViYTVkNDMzNjg2MjZlMTc4NzI5ZDc1NmI1NzdkNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJv
bGxlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKICNpbmNsdWRl
ICJXZWJGYWtlWFJEZXZpY2UuaCIKKyNpbmNsdWRlICJYUkhhbmRKb2ludC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM2LDYgKzM3LDExIEBAIHVzaW5nIElucHV0U291cmNlQnV0dG9u
ID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOwogdXNp
bmcgSW5wdXRTb3VyY2VQb3NlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0
U291cmNlUG9zZTsKIHVzaW5nIEJ1dHRvblR5cGUgPSBGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5
cGU7CiAKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCit1c2luZyBIYW5kSm9pbnRzVmVjdG9yID0g
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkhhbmRKb2ludHNWZWN0b3I7Cit1c2luZyBJ
bnB1dFNvdXJjZUhhbmRKb2ludCA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1
dFNvdXJjZUhhbmRKb2ludDsKKyNlbmRpZgorCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0
aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jeHItc3RhbmRhcmQtZ2FtZXBhZC1tYXBwaW5n
CiBjb25zdGV4cHIgc3RkOjphcnJheTxCdXR0b25UeXBlLCA1PiBYUl9TVEFOREFSRF9CVVRUT05T
ID0geyBCdXR0b25UeXBlOjpHcmlwLCBCdXR0b25UeXBlOjpUb3VjaHBhZCwgQnV0dG9uVHlwZTo6
VGh1bWJzdGljaywgQnV0dG9uVHlwZTo6T3B0aW9uYWxCdXR0b24sIEJ1dHRvblR5cGU6Ok9wdGlv
bmFsVGh1bWJzdGljayB9OwogCkBAIC01MSwxMyArNTcsMTMgQEAgV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VI
YW5kbGUKICAgICAsIG1fcHJvZmlsZXMoaW5pdC5wcm9maWxlcykKICAgICAsIG1fcHJpbWFyeVNl
bGVjdGVkKGluaXQuc2VsZWN0aW9uU3RhcnRlZCkKICAgICAsIG1fc2ltdWxhdGVTZWxlY3QoaW5p
dC5zZWxlY3Rpb25DbGlja2VkKQotI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICAsIG1fc2lt
dWxhdGVIYW5kKGluaXQuc2ltdWxhdGVIYW5kKQotI2VuZGlmCiB7CiAgICAgc2V0UG9pbnRlck9y
aWdpbihpbml0LnBvaW50ZXJPcmlnaW4sIGZhbHNlKTsKICAgICBzZXRHcmlwT3JpZ2luKGluaXQu
Z3JpcE9yaWdpbiwgZmFsc2UpOwogICAgIHNldFN1cHBvcnRlZEJ1dHRvbnMoaW5pdC5zdXBwb3J0
ZWRCdXR0b25zKTsKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCisgICAgdXBkYXRlSGFuZEpvaW50
cyhpbml0LmhhbmRKb2ludHMpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyOjpzZXRHcmlwT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2lu
LCBib29sIGVtdWxhdGVkUG9zaXRpb24pCkBAIC0xMTAsNyArMTE2LDcgQEAgSW5wdXRTb3VyY2Ug
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpnZXRGcmFtZURhdGEoKQogICAgIHN0YXRlLnBvaW50
ZXJPcmlnaW4gPSBtX3BvaW50ZXJPcmlnaW47CiAgICAgc3RhdGUuZ3JpcE9yaWdpbiA9IG1fZ3Jp
cE9yaWdpbjsKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgc3RhdGUuc2ltdWxhdGVIYW5k
ID0gbV9zaW11bGF0ZUhhbmQ7CisgICAgc3RhdGUuaGFuZEpvaW50cyA9IG1faGFuZEpvaW50czsK
ICNlbmRpZgogCiAgICAgaWYgKG1fc2ltdWxhdGVTZWxlY3QpCkBAIC0xODIsNiArMTg4LDI4IEBA
IFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6QnV0dG9uT3JQbGFjZWhvbGRlciBXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OmdldEJ1dHRvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorI2lmIEVO
QUJMRShXRUJYUl9IQU5EUykKK3ZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjp1cGRhdGVI
YW5kSm9pbnRzKGNvbnN0IFZlY3RvcjxGYWtlWFJKb2ludFN0YXRlSW5pdD4mIGhhbmRKb2ludHMp
Cit7CisgICAgaWYgKGhhbmRKb2ludHMuaXNFbXB0eSgpIHx8IGhhbmRKb2ludHMuc2l6ZSgpICE9
IHN0YXRpY19jYXN0PHNpemVfdD4oWFJIYW5kSm9pbnQ6OkNvdW50KSkgeworICAgICAgICBtX2hh
bmRKb2ludHMgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBI
YW5kSm9pbnRzVmVjdG9yIHVwZGF0ZWRKb2ludHM7CisgICAgZm9yIChhdXRvIGhhbmRKb2ludCA6
IGhhbmRKb2ludHMpIHsKKyAgICAgICAgYXV0byB0cmFuc2Zvcm0gPSBXZWJGYWtlWFJEZXZpY2U6
OnBhcnNlUmlnaWRUcmFuc2Zvcm0oaGFuZEpvaW50LnBvc2UpOworICAgICAgICBpZiAodHJhbnNm
b3JtLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICB1cGRhdGVkSm9pbnRzLmFwcGVuZChz
dGQ6Om51bGxvcHQpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHVwZGF0ZWRKb2ludHMuYXBwZW5kKElucHV0U291cmNlSGFuZEpvaW50IHsgSW5w
dXRTb3VyY2VQb3NlIHsgdHJhbnNmb3JtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBmYWxzZSB9LCBo
YW5kSm9pbnQucmFkaXVzIH0pOworICAgIH0KKyAgICBtX2hhbmRKb2ludHMgPSB1cGRhdGVkSm9p
bnRzOworfQorI2VuZGlmIC8vIEVOQUJMRShXRUJYUl9IQU5EUykKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKaW5kZXggNGQ2OTBmYTczZTUxZWQy
NjViOTk2OTk5YWFmN2M4NzZkNTk3YWMzYS4uY2EyMGE2OTQyOTZlZWVjMjg5ZjcyNjVkNjZmOTNm
NTU5ODg3ZWJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklu
cHV0Q29udHJvbGxlci5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRT
KQorI2luY2x1ZGUgIkZha2VYUkpvaW50U3RhdGVJbml0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIgZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IHsKQEAgLTU3LDYgKzYxLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1cHBvcnRlZEJ1dHRvbnMoY29uc3QgVmVjdG9yPEZh
a2VYUkJ1dHRvblN0YXRlSW5pdD4mKTsKICAgICB2b2lkIHVwZGF0ZUJ1dHRvblN0YXRlKGNvbnN0
IEZha2VYUkJ1dHRvblN0YXRlSW5pdCYpOwogICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7
IHJldHVybiBtX2Nvbm5lY3RlZDsgfQorICAgIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAg
ICB2b2lkIHVwZGF0ZUhhbmRKb2ludHMoY29uc3QgVmVjdG9yPEZha2VYUkpvaW50U3RhdGVJbml0
PiYpOworI2VuZGlmCiAKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRT
b3VyY2UgZ2V0RnJhbWVEYXRhKCk7CiAKQEAgLTgwLDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fcHJpbWFyeVNlbGVjdGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2ltdWxhdGVTZWxl
Y3QgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICBib29sIG1fc2ltdWxh
dGVIYW5kIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpIYW5kSm9pbnRzVmVjdG9yPiBtX2hhbmRKb2ludHM7CiAjZW5kaWYKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
LmlkbAppbmRleCBhOTlhMjYxZTg3N2Y4MGVmMGNiN2U4OGE1ZmE1OGFhMjE3ZjIyZjQ1Li5kOWM1
ODc5NWQwNGZjY2I3YmM4YzRjMDBhNDJhM2VhN2I5OGIwMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsCkBAIC03Myw0ICs3
Myw2IEBACiAgICAgLy8gVXNlZCB0byB1cGRhdGUgdGhlIHN0YXRlIG9mIGEgYnV0dG9uIGN1cnJl
bnRseSBzdXBwb3J0ZWQgYnkgdGhlIGlucHV0IHNvdXJjZQogICAgIC8vIFdpbGwgbm90IGFkZCBz
dXBwb3J0IGZvciB0aGF0IGJ1dHRvbiBpZiBpdCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4K
ICAgICB1bmRlZmluZWQgdXBkYXRlQnV0dG9uU3RhdGUoRmFrZVhSQnV0dG9uU3RhdGVJbml0IGJ1
dHRvblN0YXRlKTsKKyAgICAKKyAgICBbQ29uZGl0aW9uYWw9V0VCWFJfSEFORFNdIHVuZGVmaW5l
ZCB1cGRhdGVIYW5kSm9pbnRzKHNlcXVlbmNlPEZha2VYUkpvaW50U3RhdGVJbml0PiBoYW5kSm9p
bnRzKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKaW5kZXggNTQ3Y2RiY2M3
ZjEwNzU1ZTdkYzYyYmY3ZjFhNDAzMzdkNTFmZTczOC4uM2Q2NjJmMTBjNDMyMjQ2MDY4MzY3NjFi
ZmEzOTg0NGJkNTIzYjJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJY
UlRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcApAQCAt
MzksNiArMzksMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJYUlRlc3Q6On5XZWJYUlRl
c3QoKSA9IGRlZmF1bHQ7CiAKK3N0YXRpYyBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZlYXR1cmVMaXN0
IHBhcnNlRmVhdHVyZXMoY29uc3QgVmVjdG9yPEpTQzo6SlNWYWx1ZT4mIGZlYXR1cmVMaXN0LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQoreworICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGNv
bnRleHQuZ2xvYmFsT2JqZWN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogZmVh
dHVyZUxpc3QpIHsKKyAgICAgICAgICAgIGF1dG8gZmVhdHVyZVN0cmluZyA9IGZlYXR1cmUudG9X
VEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGlmIChhdXRvIHNlc3Npb25GZWF0
dXJlID0gUGxhdGZvcm1YUjo6cGFyc2VTZXNzaW9uRmVhdHVyZURlc2NyaXB0b3IoZmVhdHVyZVN0
cmluZykpCisgICAgICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCpzZXNzaW9uRmVhdHVyZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZlYXR1cmVzOworfQorCiB2b2lkIFdlYlhS
VGVzdDo6c2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZha2VYUkRldmljZUluaXQmIGluaXQsIFdlYkZha2VYUkRldmljZVByb21p
c2UmJiBwcm9taXNlKQogewogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8v
d2VieHItdGVzdC1hcGkvI2RvbS14cnRlc3Qtc2ltdWxhdGVkZXZpY2Vjb25uZWN0aW9uCkBAIC00
OCwxNiArNjEsMTIgQEAgdm9pZCBXZWJYUlRlc3Q6OnNpbXVsYXRlRGV2aWNlQ29ubmVjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdAogCiAgICAgICAgIGRldmljZS0+
c2V0Vmlld3MoaW5pdC52aWV3cyk7CiAKLSAgICAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0
dXJlTGlzdCBmZWF0dXJlczsKLSAgICAgICAgaWYgKGluaXQuc3VwcG9ydGVkRmVhdHVyZXMpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBjb250ZXh0Lmdsb2JhbE9iamVj
dCgpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogaW5pdC5zdXBwb3J0
ZWRGZWF0dXJlcy52YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZmVhdHVyZVN0
cmluZyA9IGZlYXR1cmUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gc2Vzc2lvbkZlYXR1cmUgPSBQbGF0Zm9ybVhSOjpwYXJzZVNlc3Npb25G
ZWF0dXJlRGVzY3JpcHRvcihmZWF0dXJlU3RyaW5nKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZlYXR1cmVzLmFwcGVuZCgqc2Vzc2lvbkZlYXR1cmUpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZlYXR1
cmVMaXN0IHN1cHBvcnRlZEZlYXR1cmVzOworICAgICAgICBpZiAoaW5pdC5zdXBwb3J0ZWRGZWF0
dXJlcykKKyAgICAgICAgICAgIHN1cHBvcnRlZEZlYXR1cmVzID0gcGFyc2VGZWF0dXJlcyhpbml0
LnN1cHBvcnRlZEZlYXR1cmVzLnZhbHVlKCksIGNvbnRleHQpOworICAgICAgICBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZlYXR1cmVMaXN0IGVuYWJsZWRGZWF0dXJlczsKKyAgICAgICAgaWYgKGluaXQu
ZW5hYmxlZEZlYXR1cmVzKQorICAgICAgICAgICAgZW5hYmxlZEZlYXR1cmVzID0gcGFyc2VGZWF0
dXJlcyhpbml0LmVuYWJsZWRGZWF0dXJlcy52YWx1ZSgpLCBjb250ZXh0KTsKIAogICAgICAgICBp
ZiAoaW5pdC5ib3VuZHNDb29yZGluYXRlcykgewogICAgICAgICAgICAgaWYgKGluaXQuYm91bmRz
Q29vcmRpbmF0ZXMtPnNpemUoKSA8IDMpIHsKQEAgLTg0LDggKzkzLDEwIEBAIHZvaWQgV2ViWFJU
ZXN0OjpzaW11bGF0ZURldmljZUNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QKICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRNb2Rlcy5hcHBlbmQoWFJTZXNz
aW9uTW9kZTo6SW1tZXJzaXZlVnIpOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yIChhdXRvJiBt
b2RlIDogc3VwcG9ydGVkTW9kZXMpCi0gICAgICAgICAgICBzaW11bGF0ZWREZXZpY2Uuc2V0U3Vw
cG9ydGVkRmVhdHVyZXMobW9kZSwgZmVhdHVyZXMpOworICAgICAgICBmb3IgKGF1dG8mIG1vZGUg
OiBzdXBwb3J0ZWRNb2RlcykgeworICAgICAgICAgICAgc2ltdWxhdGVkRGV2aWNlLnNldFN1cHBv
cnRlZEZlYXR1cmVzKG1vZGUsIHN1cHBvcnRlZEZlYXR1cmVzKTsKKyAgICAgICAgICAgIHNpbXVs
YXRlZERldmljZS5zZXRFbmFibGVkRmVhdHVyZXMobW9kZSwgZW5hYmxlZEZlYXR1cmVzKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIG1fY29udGV4dC0+cmVnaXN0ZXJTaW11bGF0ZWRYUkRldmljZUZv
clRlc3Rpbmcoc2ltdWxhdGVkRGV2aWNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJYUlRlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmgK
aW5kZXggYjFjYzNkYjNhZTRmMzA5ZDE4ZTgwOGZkNzcxMmJhMWIyMmI3MDc1MS4uNjAyOTc1NWM5
YWE3ODBiNzVlMjNmYTZjMWE2MTViMWVmNjRiYzIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJYUlRlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhS
VGVzdC5oCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPEZha2VYUlZp
ZXdJbml0PiB2aWV3czsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxKU0M6OkpTVmFs
dWU+PiBzdXBwb3J0ZWRGZWF0dXJlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SlND
OjpKU1ZhbHVlPj4gZW5hYmxlZEZlYXR1cmVzOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPEZha2VYUkJvdW5kc1BvaW50Pj4gYm91bmRzQ29vcmRpbmF0ZXM7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvV2ViWFJUZXN0LmlkbAppbmRleCA4ZDBiMDZiMDNhZTY3YWE2NTRlMmVhYzE3OTgxOTg2
Mjk4OTZmOWJjLi5lNjY3MzliNjljZWI4MzJlN2NmOGI1ZTU3ZTkxYjZjOTk2ZDdkZjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaWRsCkBAIC02MSw2ICs2MSwxMCBAQAogICAgIC8v
IE5PVEU6IFRoaXMgaXMgbWVhbnQgdG8gZW11bGF0ZSBoYXJkd2FyZSBzdXBwb3J0LCBub3Qgd2hl
dGhlciBhIGZlYXR1cmUgaXMKICAgICAvLyBjdXJyZW50bHkgYXZhaWxhYmxlIChlLmcuIGJvdW5k
cyBub3QgYmVpbmcgdHJhY2tlZCBwZXIgYmVsb3cpCiAgICAgc2VxdWVuY2U8YW55PiBzdXBwb3J0
ZWRGZWF0dXJlczsKKyAgICAKKyAgICAvLyBUaGUgbGlzdCBvZiBmZWF0dXJlcyB0aGF0IGFyZSBh
dXRvbWF0aWNhbGx5IGVuYWJsZWQgYW5kIGRvCisgICAgLy8gbm90IG5lZWQgZnVydGhlciBleHBs
aWNpdCBjb25zZW50LgorICAgIHNlcXVlbmNlPGFueT4gZW5hYmxlZEZlYXR1cmVzOwogCiAgICAg
Ly8gVGhlIGJvdW5kcyBjb29yZGluYXRlcy4gSWYgZW1wdHksIG5vIGJvdW5kZWQgcmVmZXJlbmNl
IHNwYWNlIGlzIGN1cnJlbnRseSB0cmFja2VkLgogICAgIC8vIElmIG5vdCwgbXVzdCBoYXZlIGF0
IGxlYXN0IHRocmVlIGVsZW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
WFIvWFJEZXZpY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVBy
b3h5LmNwcAppbmRleCA4MGYwODUzMjEwYzZkNGJjMjQyZGEzYWFlOGZkZTBiMGIxZDZmZjdlLi4w
ZmE3NjBiOTJiODY3MmU0OTQ4N2M1NTgwNjdhZmYyZjNhZDNjODJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcApAQCAtNjgsOCArNjgsMjEgQEAgdm9pZCBYUkRl
dmljZVByb3h5Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vz
c2lvbk1vZGUgc2Vzc2kKICAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGU6OkltbWVyc2l2ZVZyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV94clN5c3Rl
bSkKLSAgICAgICAgbV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7
CisgICAgaWYgKCFtX3hyU3lzdGVtKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3hyU3lzdGVt
LT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKworICAgIC8vIFRoaXMgaXMgY2Fs
bGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIG9mIFdlYlhSU2Vzc2lvbi4gU2luY2Ugc2Vzc2lvbkRp
ZEluaXRpYWxpemVJbnB1dFNvdXJjZXMoKQorICAgIC8vIGVuZHMgdXAgY2FsbGluZyBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKSB3aGljaCByZWZzIHRoZSBXZWJYUlNlc3Npb24gb2JqZWN0
LCB3ZQorICAgIC8vIHNob3VsZCBkZWxheSB0aGlzIGNhbGwgYWZ0ZXIgdGhlIFdlYlhSU2Vzc2lv
biBoYXMgZmluaXNoZWQgY29uc3RydWN0aW9uLgorICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSgpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQoKSkKKyAgICAgICAgICAgIHRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KCktPnNl
c3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzKHsgfSk7CisgICAgfSk7ICAgIAogfQogCiB2
b2lkIFhSRGV2aWNlUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDBlMTY0ZmVlOWM0MmNkYTAzYzlhOGM1MjlmNTEyNzI3MDZhYWE4MTMuLmM1ODAxMTM3MGYzZmI3
YTBmOGUzMzJjM2ZjNzExODA2ZTE3NzBkMGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMi0w
NC0wNyAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIElt
cGxlbWVudCB0aGUgV2ViWFIgSGFuZCBJbnB1dCBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtb3JlIGNvbnN0YW50cyBmb3IgYSB2YWxp
ZCBqb2ludCB2YWx1ZSBhbmQgZGV2aWNlIGluaXQgZGljdGlvbmFyeQorICAgICAgICB0aGF0IHJl
cHJlc2VudHMgYSBkZXZpY2Ugd2l0aCBoYW5kIHRyYWNraW5nIHN1cHBvcnQgZW5hYmxlZC4KKwor
ICAgICAgICBBZGQgbmV3IHRlc3RzIGZvciB0ZXN0aW5nIGhhbmQgaW5wdXQgcmVsYXRlZCBtZXRo
b2RzIGluIFhSRnJhbWUuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2Vi
eHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanM6CisgICAgICAgICogaHR0cC93cHQvd2Vi
eHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50
X3Bvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZy
YW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9zZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9p
bnRfcG9zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hy
RnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21pc3Np
bmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dl
YnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21pc3Npbmdfam9pbnRfcG9zZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckhhbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckhhbmQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvd2VieHIveHJIYW5kSW5wdXRfZ2MuaHRtbDoKKwogMjAyMi0wNC0wNiAgSiBQYXNjb2Ug
IDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4IGV4cGVjdGVkLCBhY3R1YWwgbGlu
a3MgZm9yIHZhcmlhbnQtYmFzZWQgaW1wb3J0ZWQgd3B0IHRlc3RzCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2lu
Z2xlX3ZpZXcuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2VieHJf
dGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMKaW5kZXggY2I4YmRmZDk5ZjFhMGIxMjIyMWU4
MDRhODU0MTUwMzYwZjY3NjYzNi4uYTA5ZGNjMTQyODZiMTlmMTJhOTc0NDRmMzk3MmRkYTY3ZjI4
MmE2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIvcmVzb3VyY2VzL3dl
YnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50c19zaW5nbGVfdmlldy5qcwpA
QCAtNDcsNiArNDcsNzQgQEAgY29uc3QgVkFMSURfR1JJUF9UUkFOU0ZPUk0gPSB7CiAgICAgb3Jp
ZW50YXRpb246IFswLCAwLCAwLCAxXQogfTsKIAorY29uc3QgSk9JTlRfQ09VTlQgPSAyNTsKK2Nv
bnN0IFRFU1RfSEFORF9KT0lOVF9SQURJVVMgPSAwLjAyOworCitjb25zdCBWQUxJRF9IQU5EX0pP
SU5UID0geworICAgIHBvc2U6IFZBTElEX1BPU0VfVFJBTlNGT1JNLAorICAgIHJhZGl1czogVEVT
VF9IQU5EX0pPSU5UX1JBRElVUworfTsKKworY29uc3QgVkFMSURfSEFORF9KT0lOVFMgPSBbCisg
ICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hB
TkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAor
ICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9I
QU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwK
KyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURf
SEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQs
CisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElE
X0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5U
LAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJ
RF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lO
VAorXTsKKworY29uc3QgSU5WQUxJRF9IQU5EX0pPSU5UID0geworCit9OworCitjb25zdCBIQU5E
X0pPSU5UU19XSVRIX09ORV9JTlZBTElEID0gWworICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAg
VkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRf
Sk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAg
IFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5E
X0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAg
ICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFO
RF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisg
ICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hB
TkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAor
ICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9I
QU5EX0pPSU5ULAorICAgIElOVkFMSURfSEFORF9KT0lOVAorXTsKKwogLy8gQSB2YWxpZCBpbnB1
dCBwb2ludGVyIG9mZnNldCBmb3IgIHdoZW4gd2UgZG9uJ3QgY2FyZSBhYm91dCBzcGVjaWZpYyB2
YWx1ZXMKIGNvbnN0IFZBTElEX1BPSU5URVIgPSBbMSwgMCwgMCwgMCwKICAgICAgICAgICAgICAg
ICAgICAgICAgMCwgMSwgMCwgMCwKQEAgLTE2MCw2ICsyMjgsMTcgQEAgY29uc3QgVFJBQ0tFRF9J
TU1FUlNJVkVfREVWSUNFID0gewogICAgIGludGVyYWN0aW9uTW9kZTogIndvcmxkLXNwYWNlIgog
fTsKIAorY29uc3QgVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFX1dJVEhfSEFORF9UUkFDS0lORyA9
IHsKKyAgICBzdXBwb3J0c0ltbWVyc2l2ZTogdHJ1ZSwKKyAgICBzdXBwb3J0ZWRNb2RlczogWyAi
aW5saW5lIiwgImltbWVyc2l2ZS12ciJdLAorICAgIHZpZXdzOiBWQUxJRF9WSUVXUywKKyAgICB2
aWV3ZXJPcmlnaW46IElERU5USVRZX1RSQU5TRk9STSwKKyAgICBzdXBwb3J0ZWRGZWF0dXJlczog
QUxMX0ZFQVRVUkVTLAorICAgIGVuYWJsZWRGZWF0dXJlczogWyAiaGFuZC10cmFja2luZyIgXSwK
KyAgICBlbnZpcm9ubWVudEJsZW5kTW9kZTogIm9wYXF1ZSIsCisgICAgaW50ZXJhY3Rpb25Nb2Rl
OiAid29ybGQtc3BhY2UiCit9OworCiBjb25zdCBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfTk9f
SEFORF9UUkFDS0lORyA9IHsKICAgICBzdXBwb3J0c0ltbWVyc2l2ZTogdHJ1ZSwKICAgICBzdXBw
b3J0ZWRNb2RlczogWyAiaW5saW5lIiwgImltbWVyc2l2ZS12ciJdLApkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpLWV4
cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDJiYjAxYmJmZGJlNzU0Mzk5NjQ5YjlhOTk3ZDMzY2Ew
ZDQ1ZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJG
cmFtZV9maWxsSm9pbnRSYWRpaS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1Mg
VGVzdCBYUkZyYW1lLmZpbGxKb2ludFJhZGlpIC0gd2ViZ2wKK1BBU1MgVGVzdCBYUkZyYW1lLmZp
bGxKb2ludFJhZGlpIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zNDVhYTI1OGNk
YzYyMDBjMDFmMTM4NmQ2MDE0YTZkZDcxMzdhMThhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaS5odG1sCkBAIC0wLDAg
KzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNf
c2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3dlYnhyL3Jlc291
cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorbGV0IHRl
c3ROYW1lID0gIlRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSI7CisKK2xldCBmYWtlRGV2aWNl
SW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7
CisKK2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJv
bGxlciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURl
dmljZUNvbnRyb2xsZXIuc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRl
ZG5lc3M6ICJub25lIiwKKyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAg
ICBwb2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczog
W10sCisgICAgaGFuZEpvaW50czogVkFMSURfSEFORF9KT0lOVFMsCisgIH0pOworCisgIHJldHVy
biBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50aGVuKChyZWZl
cmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKworICAgICAgZnVuY3Rp
b24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNl
c3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5kID0gc2Vzc2lv
bi5pbnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhoYW5kLCBu
dWxsKTsKKworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5cGVFcnJvciwgZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICBsZXQgcmFkaWlBcnJheVdpdGhXcm9uZ1NpemUgPSBuZXcgRmxvYXQzMkFy
cmF5KEpPSU5UX0NPVU5UIC0gMSk7CisgICAgICAgICAgICB4ckZyYW1lLmZpbGxKb2ludFJhZGlp
KGhhbmQudmFsdWVzKCksIHJhZGlpQXJyYXlXaXRoV3JvbmdTaXplKTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgbGV0IHJhZGlpID0gbmV3IEZsb2F0MzJBcnJheShKT0lOVF9DT1VOVCk7CisgICAg
ICAgIGxldCBhbGxWYWxpZCA9IHhyRnJhbWUuZmlsbEpvaW50UmFkaWkoaGFuZC52YWx1ZXMoKSwg
cmFkaWkpOworICAgICAgICBhc3NlcnRfdHJ1ZShhbGxWYWxpZCk7CisgICAgICAgIGZvciAocmFk
aXVzIG9mIHJhZGlpKSB7CisgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhyYWRpdXMs
IFRFU1RfSEFORF9KT0lOVF9SQURJVVMsIEZMT0FUX0VQU0lMT04pOworICAgICAgICB9CisKKyAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9u
RnJhbWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAor
ICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2
ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxs
Sm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2Ut
ZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMWY3Y2QzN2M2ZGJjYTg2ZjZiZjZiZjQxMmMyNDk5
OTE1NDdjNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94
ckZyYW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCBYUkZyYW1lLmZpbGxKb2ludFJhZGlpIHdoZXJlIHRo
ZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBwb3NlIC0gd2ViZ2wKK1BBU1MgVGVzdCBYUkZy
YW1lLmZpbGxKb2ludFJhZGlpIHdoZXJlIHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBw
b3NlIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hy
RnJhbWVfZmlsbEpvaW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9z
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjUwOTE1ZWM4MWI4OTNhNWFjNTdkY2JmNWViYzgyNzY4ZTRmZmFj
OTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1l
X2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9zZS5odG1sCkBAIC0wLDAgKzEsNDggQEAK
KzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3Zp
ZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3dlYnhyL3Jlc291cmNlcy93ZWJ4
cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0g
IlRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Np
bmcgam9pbnQgcG9zZSI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1N
RVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0ZXN0RnVuY3Rpb24gPSBm
dW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lvbk9iamVjdHMp
IHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRyb2xsZXIuc2ltdWxhdGVJ
bnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJub25lIiwKKyAgICB0YXJn
ZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2luOiBWQUxJRF9Q
T0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgaGFuZEpvaW50czogSEFO
RF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCwKKyAgfSk7CisKKyAgcmV0dXJuIHNlc3Npb24ucmVx
dWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRoZW4oKHJlZmVyZW5jZVNwYWNlKSA9
PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAgICBmdW5jdGlvbiBvbkZyYW1lKHRp
bWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoc2Vzc2lvbi5pbnB1dFNv
dXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQgPSBzZXNzaW9uLmlucHV0U291cmNl
c1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGhhbmQsIG51bGwpOworICAgICAg
ICBhc3NlcnRfZXF1YWxzKGhhbmQuc2l6ZSwgSk9JTlRfQ09VTlQpOworCisgICAgICAgIGxldCBy
YWRpaSA9IG5ldyBGbG9hdDMyQXJyYXkoSk9JTlRfQ09VTlQpOworICAgICAgICBsZXQgYWxsVmFs
aWQgPSB4ckZyYW1lLmZpbGxKb2ludFJhZGlpKGhhbmQudmFsdWVzKCksIHJhZGlpKTsKKyAgICAg
ICAgYXNzZXJ0X2ZhbHNlKGFsbFZhbGlkKTsKKyAgICAgICAgZm9yIChyYWRpdXMgb2YgcmFkaWkp
IHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmFkaXVzLCBOYU4pOworICAgICAgICB9CisK
KyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0
aW9uRnJhbWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0
KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVy
c2l2ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwv
c2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9m
aWxsUG9zZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFt
ZV9maWxsUG9zZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3MTAwYjI5MDkyNzQ3NDQ1N2Rk
ODM4ZGZhZTc0NDUzYjYyY2RmNzYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgVGVzdCBYUkZyYW1lLmZpbGxQb3NlcyAtIHdlYmdsCitQQVNTIFRlc3QgWFJGcmFt
ZS5maWxsUG9zZXMgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VieHIveHJGcmFtZV9maWxsUG9zZXMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhy
L3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzc3YjIxMjkxNzZlNzA5MGVmYmNh
NjYyZGE0Y2Q1YjM4ZDI0YTJkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwKQEAgLTAsMCArMSw1NyBAQAorPCFET0NU
WVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50c19zaW5nbGVfdmlldy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3Rf
YXNzZXJ0cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAiVGVzdCBY
UkZyYW1lLmZpbGxQb3NlcyI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURf
SU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0ZXN0RnVuY3Rpb24g
PSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lvbk9iamVj
dHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRyb2xsZXIuc2ltdWxh
dGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJub25lIiwKKyAgICB0
YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2luOiBWQUxJ
RF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgaGFuZEpvaW50czog
VkFMSURfSEFORF9KT0lOVFMsCisgIH0pOworCisgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZl
cmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3IFBy
b21pc2UoKHJlc29sdmUpID0+IHsKKworICAgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZy
YW1lKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb24uaW5wdXRTb3VyY2VzLmxl
bmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5kID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0uaGFu
ZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhoYW5kLCBudWxsKTsKKworICAgICAgICBjb25z
dCBmbG9hdHNQZXJUcmFuc2Zvcm0gPSAxNjsKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBl
RXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbGV0IHRyYW5zZm9ybXNBcnJheVdpdGhX
cm9uZ1NpemUgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NPVU5UICogZmxvYXRzUGVyVHJhbnNm
b3JtIC0gMSk7CisgICAgICAgICAgICB4ckZyYW1lLmZpbGxQb3NlcyhoYW5kLnZhbHVlcygpLCB0
cmFuc2Zvcm1zQXJyYXlXaXRoV3JvbmdTaXplKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0
IHRyYW5zZm9ybXMgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NPVU5UICogZmxvYXRzUGVyVHJh
bnNmb3JtKTsKKyAgICAgICAgbGV0IGFsbFZhbGlkID0geHJGcmFtZS5maWxsUG9zZXMoaGFuZC52
YWx1ZXMoKSwgcmVmZXJlbmNlU3BhY2UsIHRyYW5zZm9ybXMpOworICAgICAgICBhc3NlcnRfdHJ1
ZShhbGxWYWxpZCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEpPSU5U
X0NPVU5UOyArK2kpIHsKKyAgICAgICAgICAgIGxldCB0cmFuc2Zvcm1TdGFydEluZGV4ID0gaSAq
IGZsb2F0c1BlclRyYW5zZm9ybTsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgZmxv
YXRzUGVyVHJhbnNmb3JtOyArK2opIHsKKyAgICAgICAgICAgICAgICBhc3NlcnRfYXBwcm94X2Vx
dWFscyh0cmFuc2Zvcm1zW3RyYW5zZm9ybVN0YXJ0SW5kZXggKyBqXSwgVkFMSURfUE9TRV9NQVRS
SVhbal0sIEZMT0FUX0VQU0lMT04pOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAg
ICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJh
bWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0
ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12
cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2NyaXB0
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9z
ZXNfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uNTQyOTQ0ODc0Zjg2NWNkNDYxZmJmYzViOGMxYmNjMjdkNDE0ODQxNQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBv
c2VzX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BB
U1MgVGVzdCBYUkZyYW1lLmZpbGxQb3NlcyB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcg
am9pbnQgcG9zZSAtIHdlYmdsCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsUG9zZXMgd2hlcmUgdGhl
IGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXNfbWlzc2luZ19qb2lu
dF9wb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nl
c19taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41M2U3NThlMDE4YWQzZjI0ZDNh
OGI5MmE3ZjExNmQyNTAzNGY0YTY3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXNfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwKQEAg
LTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0
aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0
YW50c19zaW5nbGVfdmlldy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vd2VieHIv
cmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+Cits
ZXQgdGVzdE5hbWUgPSAiVGVzdCBYUkZyYW1lLmZpbGxQb3NlcyB3aGVyZSB0aGUgaGFuZCBoYXMg
b25lIG1pc3Npbmcgam9pbnQgcG9zZSI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRS
QUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0ZXN0RnVu
Y3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lv
bk9iamVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRyb2xsZXIu
c2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJub25lIiwK
KyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2lu
OiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgaGFuZEpv
aW50czogSEFORF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCwKKyAgfSk7CisKKyAgcmV0dXJuIHNl
c3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRoZW4oKHJlZmVyZW5j
ZVNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAgICBmdW5jdGlvbiBv
bkZyYW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoc2Vzc2lv
bi5pbnB1dFNvdXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQgPSBzZXNzaW9uLmlu
cHV0U291cmNlc1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGhhbmQsIG51bGwp
OworICAgICAgICBhc3NlcnRfZXF1YWxzKGhhbmQuc2l6ZSwgSk9JTlRfQ09VTlQpOworCisgICAg
ICAgIGNvbnN0IGZsb2F0c1BlclRyYW5zZm9ybSA9IDE2OworICAgICAgICBsZXQgdHJhbnNmb3Jt
cyA9IG5ldyBGbG9hdDMyQXJyYXkoSk9JTlRfQ09VTlQgKiBmbG9hdHNQZXJUcmFuc2Zvcm0pOwor
ICAgICAgICBsZXQgYWxsVmFsaWQgPSB4ckZyYW1lLmZpbGxQb3NlcyhoYW5kLnZhbHVlcygpLCBy
ZWZlcmVuY2VTcGFjZSwgdHJhbnNmb3Jtcyk7CisgICAgICAgIGFzc2VydF9mYWxzZShhbGxWYWxp
ZCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IEpPSU5UX0NPVU5UICog
ZmxvYXRzUGVyVHJhbnNmb3JtOyArK2kpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHModHJh
bnNmb3Jtc1tpXSwgTmFOKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAg
IH0KKyAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7
Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlv
biwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVy
ZXM6IFsiaGFuZC10cmFja2luZyJdIH0pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44OTI0ZjA1MWYyOWVhNTA3NjZlOTlkNGFkMzU1Y2MwYmMzY2ZlYzZj
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9n
ZXRKb2ludFBvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJG
cmFtZS5nZXRKb2ludFBvc2UgLSB3ZWJnbAorUEFTUyBUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3Nl
IC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJh
bWVfZ2V0Sm9pbnRQb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1l
X2dldEpvaW50UG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNzhkOGZmZDYxMjMzMTk1MDllZjgxYjNl
ZDg2OTUyMjJkYjkyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQ
RSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fz
c2VydHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIlRlc3QgWFJG
cmFtZS5nZXRKb2ludFBvc2UiOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VE
X0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5HOworCitsZXQgdGVzdEZ1bmN0aW9u
ID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmpl
Y3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVs
YXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5kZWRuZXNzOiAibm9uZSIsCisgICAg
dGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisgICAgcG9pbnRlck9yaWdpbjogVkFM
SURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdLAorICAgIGhhbmRKb2ludHM6
IFZBTElEX0hBTkRfSk9JTlRTLAorICB9KTsKKworICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVm
ZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhlbigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQ
cm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJG
cmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5s
ZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdLmhh
bmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZCwgbnVsbCk7CisgICAgICAgIAorICAg
ICAgICBsZXQgam9pbnRTcGFjZSA9IGhhbmQuZ2V0KCJ3cmlzdCIpOworICAgICAgICBhc3NlcnRf
bm90X2VxdWFscyhqb2ludFNwYWNlLCBudWxsKTsKKyAgICAgICAgCisgICAgICAgIGxldCBqb2lu
dFBvc2UgPSB4ckZyYW1lLmdldEpvaW50UG9zZShqb2ludFNwYWNlLCByZWZlcmVuY2VTcGFjZSk7
CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGpvaW50UG9zZSwgbnVsbCk7CisgICAgICAgIGFz
c2VydF9hcHByb3hfZXF1YWxzKGpvaW50UG9zZS5yYWRpdXMsIFRFU1RfSEFORF9KT0lOVF9SQURJ
VVMsIEZMT0FUX0VQU0lMT04pOworICAgICAgICBhc3NlcnRfbWF0cml4X2FwcHJveF9lcXVhbHMo
am9pbnRQb3NlLnRyYW5zZm9ybS5tYXRyaXgsIFZBTElEX1BPU0VfTUFUUklYLCBGTE9BVF9FUFNJ
TE9OKTsKKworICAgICAgICByZXNvbHZlKCk7CisgICAgICB9CisgICAgICBzZXNzaW9uLnJlcXVl
c3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsKKyAgfSkpOworfTsKKworeHJfc2Vzc2lvbl9wcm9t
aXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1z
LCAnaW1tZXJzaXZlLXZyJywgeyBvcHRpb25hbEZlYXR1cmVzOiBbImhhbmQtdHJhY2tpbmciXSB9
KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94
ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2lu
dF9wb3NlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTlkNzliMDNhM2U2ODk3NDhlZWNkNWJk
N2JkMDU1MmNhNzY5ZWY2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVjdGVkLnR4
dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIHdoZXJl
IHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBwb3NlIC0gd2ViZ2wKK1BBU1MgVGVzdCBY
UkZyYW1lLmdldEpvaW50UG9zZSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQg
cG9zZSAtIHdlYmdsMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94
ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21pc3Npbmdfam9pbnRfcG9zZS5o
dG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLmUzM2UxYjFlYjk2MjQ2Y2MwYzM3NzhmNWU3NzZhZDk2YmU4ZTE4MzkK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dl
dEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApAQCAtMCwwICsxLDQ5IEBACis8IURP
Q1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVz
dF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4KK2xldCB0ZXN0TmFtZSA9ICJUZXN0
IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIHdoZXJlIHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2lu
dCBwb3NlIjsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVf
REVWSUNFX1dJVEhfSEFORF9UUkFDS0lORzsKKworbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9u
KHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0LCBzZXNzaW9uT2JqZWN0cykgeworCisg
IGxldCBpbnB1dF9zb3VyY2UgPSBmYWtlRGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291
cmNlQ29ubmVjdGlvbih7CisgICAgaGFuZGVkbmVzczogIm5vbmUiLAorICAgIHRhcmdldFJheU1v
ZGU6ICJ0cmFja2VkLXBvaW50ZXIiLAorICAgIHBvaW50ZXJPcmlnaW46IFZBTElEX1BPSU5URVJf
VFJBTlNGT1JNLAorICAgIHByb2ZpbGVzOiBbXSwKKyAgICBoYW5kSm9pbnRzOiBIQU5EX0pPSU5U
U19XSVRIX09ORV9JTlZBTElELAorICB9KTsKKworICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVm
ZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhlbigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQ
cm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJG
cmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5s
ZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdLmhh
bmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZCwgbnVsbCk7CisgICAgICAgIGFzc2Vy
dF9lcXVhbHMoaGFuZC5zaXplLCBKT0lOVF9DT1VOVCk7CisKKyAgICAgICAgbGV0IHdyaXN0Sm9p
bnRTcGFjZSA9IGhhbmQuZ2V0KCJ3cmlzdCIpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyh3
cmlzdEpvaW50U3BhY2UsIG51bGwpOworICAgICAgICBhc3NlcnRfZXF1YWxzKHhyRnJhbWUuZ2V0
Sm9pbnRQb3NlKHdyaXN0Sm9pbnRTcGFjZSwgcmVmZXJlbmNlU3BhY2UpLCBudWxsKTsKKworICAg
ICAgICBsZXQgcGlua3lUaXBKb2ludFNwYWNlID0gaGFuZC5nZXQoInBpbmt5LWZpbmdlci10aXAi
KTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMocGlua3lUaXBKb2ludFNwYWNlLCBudWxsKTsK
KyAgICAgICAgYXNzZXJ0X2VxdWFscyh4ckZyYW1lLmdldEpvaW50UG9zZShwaW5reVRpcEpvaW50
U3BhY2UsIHJlZmVyZW5jZVNwYWNlKSwgbnVsbCk7CisKKyAgICAgICAgcmVzb2x2ZSgpOworICAg
ICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7CisgIH0p
KTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0
aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgb3B0aW9uYWxGZWF0
dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5kLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnhyL3hySGFuZC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2Q1YTBmMjQw
NjVlOTY1NTU5M2RhOGViNmIxMmY4ZTA3ZGI0ZDc3MQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBA
CisKK1BBU1MgVGVzdCB0aGUgWFJIYW5kIEFQSSAtIHdlYmdsCitQQVNTIFRlc3QgdGhlIFhSSGFu
ZCBBUEkgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIv
eHJIYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5lYmYzNjI2ZTRiNzY2NmU2MzUxNTVjMzQ1ZTEzOGE5N2VlMDA1OGI2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5kLmh0bWwKQEAgLTAs
MCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50
c19zaW5nbGVfdmlldy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAi
VGVzdCB0aGUgWFJIYW5kIEFQSSI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNL
RURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0ZXN0RnVuY3Rp
b24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lvbk9i
amVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRyb2xsZXIuc2lt
dWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJub25lIiwKKyAg
ICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2luOiBW
QUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgaGFuZEpvaW50
czogVkFMSURfSEFORF9KT0lOVFMsCisgIH0pOworCisgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RS
ZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3
IFByb21pc2UoKHJlc29sdmUpID0+IHsKKworICAgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4
ckZyYW1lKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb24uaW5wdXRTb3VyY2Vz
Lmxlbmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5kID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0u
aGFuZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhoYW5kLCBudWxsKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyhoYW5kLnNpemUsIDI1KTsKKyAgICAgICAgCisgICAgICAgIGxldCB3cmlzdEpv
aW50U3BhY2UgPSBoYW5kLmdldCgid3Jpc3QiKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh3cmlz
dEpvaW50U3BhY2Uuam9pbnROYW1lLCAid3Jpc3QiKTsKKworICAgICAgICB2YXIgY291bnQgPSAw
OworICAgICAgICBmb3IgKGNvbnN0IFtqb2ludE5hbWUsIGpvaW50U3BhY2VdIG9mIGhhbmQpIHsK
KyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoam9pbnRTcGFjZS5qb2ludE5hbWUsIGpvaW50TmFt
ZSk7CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICB9CisgICAgICAgIGFzc2VydF9lcXVh
bHMoY291bnQsIDI1KTsKKworICAgICAgICByZXNvbHZlKCk7CisgICAgICB9CisgICAgICBzZXNz
aW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsKKyAgfSkpOworfTsKKworeHJfc2Vz
c2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJ
bml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJywgeyBvcHRpb25hbEZlYXR1cmVzOiBbImhhbmQtdHJh
Y2tpbmciXSB9KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJ4ci94ckhhbmRJbnB1dF9nYy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIv
eHJIYW5kSW5wdXRfZ2MuaHRtbAppbmRleCA3NzI4MmY2ZjQxNjYzODg1MzgyMTljMTQ0NjU2ZjBj
MDliNmVkZjBlLi5iNTYxNTk0N2M1ZDBiYmYxOTI5ZTBkY2UxNGMwOWQ3ZDQ0MTdjOWU4IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmRJbnB1dF9nYy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZElucHV0X2djLmh0bWwKQEAgLTE3
LDcgKzE3LDcgQEAgZnVuY3Rpb24gZ2MoKQogCiBsZXQgdGVzdE5hbWUgPSAiVGVzdCBvYmplY3Qg
bGlmZXRpbWUgb2YgSGFuZCBJbnB1dCBtb2R1bGUiOwogCi1sZXQgZmFrZURldmljZUluaXRQYXJh
bXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9TSU5HTEVfVklFV0RFVklDRTsKK2xldCBmYWtlRGV2aWNl
SW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7
CiAKIGxldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJv
bGxlciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKIApAQCAtMjYsNyArMjYsNyBAQCBsZXQgdGVzdEZ1
bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Np
b25PYmplY3RzKSB7CiAgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCiAgICAg
cG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCiAgICAgcHJvZmlsZXM6IFtd
LAotICAgIHNpbXVsYXRlSGFuZDogdHJ1ZSwKKyAgICBoYW5kSm9pbnRzOiBWQUxJRF9IQU5EX0pP
SU5UUywKICAgfSk7CiAKICAgcmV0dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCds
b2NhbCcpCg==
</data>
<flag name="commit-queue"
          id="485621"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457134</attachid>
            <date>2022-04-08 19:03:32 -0700</date>
            <delta_ts>2022-04-09 23:39:35 -0700</delta_ts>
            <desc>Patch for landing 2</desc>
            <filename>bug-238968-20220408190331.patch</filename>
            <type>text/plain</type>
            <size>82336</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzExZTBmZTlmZTRkYTBi
MjNlZWE2M2U5NGIyNzc2Y2U0YWYwMjE5YS4uYjlhOGZmMzA3NmVjNTdhYTUxYzMyZWI0NzRmNTVm
NGZhZjBlODljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMi0wNC0wNyAgQWRh
IENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIEltcGxlbWVudCB0
aGUgV2ViWFIgSGFuZCBJbnB1dCBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2lu
dFJhZGlpLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpv
aW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dl
YnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bv
c2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2VieHIveHJIYW5kLmh0bWwKKworICAg
ICAgICAtIEltcGxlbWVudCB0aGUgbWV0aG9kcyBpbiBXZWJYUkZyYW1lIGZvciBnZXR0aW5nIGpv
aW50cycgcG9zZXMgYW5kIHJhZGlpLgorICAgICAgICAtIEFkZCBhIG5ldyBJbnB1dFNvdXJjZUhh
bmRKb2ludCBzdHJ1Y3QgdG8gcmVwcmVzZW50IGpvaW50IGRhdGEsIGFuZCBhZGQKKyAgICAgICAg
YSB2ZWN0b3Igb2YgSW5wdXRTb3VyY2VIYW5kSm9pbnQgaW4gUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlCisgICAgICAgIHRvIHJlcHJlc2VudCB0aGUgam9pbnRzIGRh
dGEuCisgICAgICAgIC0gSW1wbGVtZW50IGxvZ2ljIGZvciBtYW5hZ2luZyBhIHZlY3RvciBvZiBX
ZWJYUkpvaW50U3BhY2VzIGluIFdlYlhSSGFuZCBhbmQKKyAgICAgICAgdXBkYXRpbmcgaXQgd2l0
aCBuZXcgaGFuZCBqb2ludHMgZGF0YSBmcm9tIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUrSGFuZElucHV0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6cG9wdWxhdGVQb3NlKToKKyAgICAgICAg
VGhlcmUgYXJlIHZhbGlkIGNhc2VzIHdoZW4gdGhlIFdlYlhSU3BhY2UncyBlZmZlY3RpdmUgb3Jp
Z2luIGNhbiBiZSBudWxsLAorICAgICAgICBmb3IgZXhhbXBsZSwgYSBqb2ludCBwb3NlIGZyb20g
YSBoYW5kIHRoYXQgaGFzIG90aGVyIG1pc3Npbmcgam9pbnQgcG9zZXMuCisgICAgICAgIEp1c3Qg
cmV0dXJuIG51bGwgYW5kIG5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLiAKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmdldEpvaW50UG9zZSk6CisgICAgICAgIFBvcHVs
YXRlIHRoZSBqb2ludCdzIHBvc2UsIGFuZCBjcmVhdGUgYSBXZWJYUkpvaW50UG9zZSB3aXRoIHRo
ZSBwb3NlJ3MgCisgICAgICAgIHRyYW5zZm9ybSBhbmQgdGhlIGpvaW50J3MgcmFkaXVzLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6ZmlsbEpvaW50UmFkaWkpOgorICAgICAgICBWYWxp
ZGF0ZSB0aGUgaW5wdXRzIGFuZCBmaWxsIGluIHRoZSByYWRpaSBhcnJheS4gRmlsbCBpbiB3aXRo
IE5hTgorICAgICAgICBpZiB0aGUgaGFuZCBoYXMgbWlzc2luZyBqb2ludCBwb3Nlcy4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmZpbGxQb3Nlcyk6CisgICAgICAgIFZhbGlkYXRlIHRo
ZSBpbnB1dHMgYW5kIGZpbGwgaW4gdGhlIHRyYW5zZm9ybXMgYXJyYXkuIEZpbGwgaW4gd2l0aCBO
YU4KKyAgICAgICAgaWYgdGhlIGhhbmQgaGFzIG1pc3Npbmcgam9pbnQgcG9zZXMuCisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkhhbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5kOjpXZWJYUkhhbmQpOgor
ICAgICAgICBJbml0aWFsaXplIHRoZSBtX2pvaW50cyBhcnJheS4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSSGFuZDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSGFuZDo6SXRlcmF0b3I6
Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5kOjpzZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSSGFuZDo6dXBkYXRlRnJvbUlucHV0U291cmNlKToKKyAgICAgICAgVXBk
YXRlIG1fam9pbnRzIGFycmF5IGJhc2VkIG9uIHRoZSBsYXRlc3QgaGFuZHMgZGF0YSBmcm9tIElu
cHV0U291cmNlLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmg6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUkhhbmQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5k
OjpoYXNNaXNzaW5nUG9zZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp1cGRh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJKb2ludFBvc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50UG9zZTo6V2ViWFJKb2ludFBvc2UpOgorICAgICAgICBIYW5kbGUgam9pbnQgcmFk
aXVzLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSSm9pbnRTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkpvaW50U3Bh
Y2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkpvaW50U3BhY2U6OldlYlhSSm9p
bnRTcGFjZSk6CisgICAgICAgIEhhbmRsZSBqb2ludCBuYW1lIGFuZCB0aGUgYWN0dWFsIHBvc2Ug
ZGF0YS4gS2VlcCBhIHdlYWsgcHRyIHRvIHRoZSBXZWJYUkhhbmQuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUkpvaW50U3BhY2U6OnVwZGF0ZUZyb21Kb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50U3BhY2U6OmhhbmRIYXNNaXNzaW5nUG9zZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJKb2ludFNwYWNlOjpzZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSSm9pbnRTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgUmV0dXJuIG51
bGwgcG9zZSB0cmFuc2Zvcm1zIGlmIHRoZXJlIGFyZSBtaXNzaW5nIGpvaW50IHBvc2VzLgorICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUkpvaW50U3BhY2U6OmpvaW50TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50U3BhY2U6OnJhZGl1cyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkpvaW50U3BhY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6aXNIYW5kVHJhY2tpbmdFbmFi
bGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ6OmRlY29kZSk6
CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2U6OmRlY29kZSk6CisgICAgICAgICogdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUlu
aXQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGw6CisgICAg
ICAgIEFsbG93IHRlc3QgSW5wdXRTb3VyY2UgdG8gYmUgY3JlYXRlZCB3aXRoIGFuIGFycmF5IG9m
IGpvaW50cy4KKyAgICAgICAgKiB0ZXN0aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaWRsLgor
ICAgICAgICAqIHRlc3RpbmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbC4KKyAgICAgICAg
RGVmaW5lIGluaXQgZGljdGlvbmFyeSBmb3Igam9pbnQgZGF0YS4KKyAgICAgICAgKiB0ZXN0aW5n
L1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OldlYkZha2VYUklucHV0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnVwZGF0ZUhhbmRKb2ludHMpOgor
ICAgICAgICBVcGRhdGUgbV9oYW5kSm9pbnRzIGJhc2VkIG9uIGpvaW50IGluaXQgZGljdGlvbmFy
aWVzLgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmg6CisgICAg
ICAgICogdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIHRl
c3RpbmcvV2ViWFJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRmVhdHVyZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJUZXN0OjpzaW11bGF0ZURldmljZUNvbm5lY3Rpb24pOgor
ICAgICAgICBBbGxvdyB0ZXN0IGRldmljZSB0byBzcGVjaWZ5IGEgbGlzdCBvZiBlbmFibGVkIGZl
YXR1cmVzIHRoYXQgZG9uJ3QgbmVlZAorICAgICAgICBmdXJ0aGVyIGV4cGxpY2l0IGNvbnNlbnQu
CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYlhS
VGVzdC5pZGw6CisKIDIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBEcm9wIHVubmVjZXNzYXJ5IEV4Y2VwdGlvbk9yPD4gcmV0dXJuIHR5cGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDE5MjZiMTU1MzNkYTMwYmNmNDc3OTMwMzQ3NWFhY2E4ODQ4MzQ4NjcuLjI2YjJi
NTFhZTM5ZjRiMTlkM2Y2MDNiN2E1OGM0MDgxOTNmYTM0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjItMDQtMDcgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYlhSXSBJbXBsZW1lbnQgdGhlIFdlYlhSIEhhbmQgSW5wdXQgbW9kdWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5NjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9YUi9YUkRl
dmljZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6WFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgSW5pdGlhbGl6ZSBpbnB1dCBzb3VyY2Vz
IG9uIHNlc3Npb24gc3RhcnQuCisKIDIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpk
ZXNlcmlhbGl6ZSB0byBub3QgYWxsb2NhdGUgYSBuZXcgSlNDb250ZXh0IGV2ZXJ5IHNlY29uZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXgg
MDgzMTA1MTZhZjYyNTMyODg0ODJkMWY1MWMyZGQ3MzI5NzQ3MTFhYi4uMzk3YzZiYjA4YjE2ZDMx
ZmVmMWEyOGIyOTc1ZGEyNjE3ZDEzNGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNjIyLDYgKzE2MjIsNyBAQCAkKFBST0pFQ1Rf
RElSKS9zdmcveGxpbmthdHRycy5pbgogJChQUk9KRUNUX0RJUikvdGVzdGluZy9GYWtlWFJCb3Vu
ZHNQb2ludC5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvRmFrZVhSQnV0dG9uU3RhdGVJbml0
LmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsCisk
KFBST0pFQ1RfRElSKS90ZXN0aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbAogJChQUk9KRUNU
X0RJUikvdGVzdGluZy9GYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuaWRsCiAkKFBST0pFQ1RfRElS
KS90ZXN0aW5nL0Zha2VYUlZpZXdJbml0LmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9HQ09i
c2VydmF0aW9uLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCA4ODdjNzY1OWU3Zjg2NDM2Y2QwMmRkODQ5M2JkOTM5MTY1MmZjYmM2
Li5hM2Q2OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtODM1LDYgKzgz
NSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFr
ZVhSQnV0dG9uU3RhdGVJbml0LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJJbnB1dFNvdXJjZUluaXQuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zha2VYUklucHV0
U291cmNlSW5pdC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5p
dC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRmFrZVhSVmlld0luaXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA3MWE4Y2U3MDg2ZmE3OWRhYThiNzUxMzE1YmY0M2E0NDNhNjE5YWZiLi5kNjYz
YzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQyMTZlNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTE0NjIsNiArMTQ2Miw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAg
ICAgJChXZWJDb3JlKS90ZXN0aW5nL0Zha2VYUkJvdW5kc1BvaW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS90ZXN0aW5nL0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
dGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL3Rlc3Rp
bmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL0Zha2VY
UlZpZXdJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5p
ZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
K0hhbmRJbnB1dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUr
SGFuZElucHV0LmlkbAppbmRleCA0N2EzYmZiZTVhNmE4YTExZTUwZWJmMmU2ZjBlOTY0ZGI1OGE3
YWFhLi4wYjY4NDNjYjllMGM1ODViZDQwNWMzY2JkNDVkMTcxODFmMzkxOTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUrSGFuZElucHV0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUrSGFuZElucHV0Lmlk
bApAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAogICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViWFJFbmFibGVkJldlYlhSSGFuZElucHV0TW9kdWxlRW5hYmxlZCwK
IF0gcGFydGlhbCBpbnRlcmZhY2UgV2ViWFJGcmFtZSB7Ci0gICAgV2ViWFJKb2ludFBvc2U/IGdl
dEpvaW50UG9zZShXZWJYUkpvaW50U3BhY2Ugam9pbnQsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsK
KyAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBXZWJYUkpvaW50UG9zZT8gZ2V0Sm9pbnRQ
b3NlKFdlYlhSSm9pbnRTcGFjZSBqb2ludCwgV2ViWFJTcGFjZSBiYXNlU3BhY2UpOwogICAgIGJv
b2xlYW4gZmlsbEpvaW50UmFkaWkoc2VxdWVuY2U8V2ViWFJKb2ludFNwYWNlPiBqb2ludFNwYWNl
cywgRmxvYXQzMkFycmF5IHJhZGlpKTsKLSAgICBib29sZWFuIGZpbGxQb3NlcyhzZXF1ZW5jZTxX
ZWJYUlNwYWNlPiBzcGFjZXMsIFdlYlhSU3BhY2UgYmFzZVNwYWNlLCBGbG9hdDMyQXJyYXkgdHJh
bnNmb3Jtcyk7CisgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVudF0gYm9vbGVhbiBmaWxsUG9z
ZXMoc2VxdWVuY2U8V2ViWFJTcGFjZT4gc3BhY2VzLCBXZWJYUlNwYWNlIGJhc2VTcGFjZSwgRmxv
YXQzMkFycmF5IHRyYW5zZm9ybXMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSRnJhbWUuY3BwCmluZGV4IGYxYWZkNDMzZTI1Y2MyNTM1Njg3NzJkNzQ2YjdlNzc3Yzhi
YTFlNjAuLjMzMmMzNzZiN2QwMWY3NmZlZmYzZWI3YmRkYTkxMTZiYTNmZDhkYTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMTM2LDggKzEzNiwx
MCBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+
PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoYwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxv
cHQgfTsKIAogICAgIGF1dG8gZWZmZWN0aXZlT3JpZ2luID0gc3BhY2UuZWZmZWN0aXZlT3JpZ2lu
KCk7CisgICAgLy8gQSBzcGFjZSdzIGVmZmVjdGl2ZU9yaWdpbiBjYW4gYmUgbnVsbCwgc3VjaCBh
cyBhIGpvaW50IHBvc2UgZnJvbSBhIGhhbmQgdGhhdCBoYXMKKyAgICAvLyBvdGhlciBtaXNzaW5n
IGpvaW50IHBvc2VzLgogICAgIGlmICghZWZmZWN0aXZlT3JpZ2luKQotICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpu
dWxsb3B0IH07CiAKICAgICBhdXRvIHRyYW5zZm9ybSA9ICAqYmFzZVRyYW5zZm9ybS52YWx1ZSgp
LmludmVyc2UoKSAqIGVmZmVjdGl2ZU9yaWdpbi52YWx1ZSgpOwogCkBAIC0yNjMsMjMgKzI2NSwx
MTUgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZUQKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCiAK
IC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItaGFuZC1pbnB1dC8jZG9t
LXhyZnJhbWUtZ2V0am9pbnRwb3NlCi1FeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJKb2ludFBvc2U+
PiBXZWJYUkZyYW1lOjpnZXRKb2ludFBvc2UoY29uc3QgV2ViWFJKb2ludFNwYWNlJiBqb2ludCwg
Y29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlKQorRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSSm9p
bnRQb3NlPj4gV2ViWFJGcmFtZTo6Z2V0Sm9pbnRQb3NlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgV2ViWFJKb2ludFNwYWNlJiBqb2ludFNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJiBi
YXNlU3BhY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGpvaW50KTsKLSAgICBVTlVTRURfUEFSQU0o
YmFzZVNwYWNlKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHBvcHVsYXRlUG9zZVJl
c3VsdCA9IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgam9pbnRTcGFjZSwgYmFzZVNwYWNlKTsKKyAg
ICBpZiAocG9wdWxhdGVQb3NlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
cG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gcG9wdWxh
dGVWYWx1ZSA9IHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBp
ZiAoIXBvcHVsYXRlVmFsdWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IFJlZlB0cjxXZWJYUkpvaW50UG9zZT4oV2ViWFJKb2ludFBvc2U6OmNyZWF0ZShXZWJYUlJpZ2lk
VHJhbnNmb3JtOjpjcmVhdGUocG9wdWxhdGVWYWx1ZS0+dHJhbnNmb3JtKSwgcG9wdWxhdGVWYWx1
ZS0+ZW11bGF0ZWRQb3NpdGlvbiwgam9pbnRTcGFjZS5yYWRpdXMoKSkpOwogfQogCiAvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWhhbmQtaW5wdXQvI2RvbS14cmZyYW1l
LWZpbGxqb2ludHJhZGlpCi1FeGNlcHRpb25Pcjxib29sPiBXZWJYUkZyYW1lOjpmaWxsSm9pbnRS
YWRpaShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+LCBjb25zdCBGbG9hdDMy
QXJyYXkmKQorRXhjZXB0aW9uT3I8Ym9vbD4gV2ViWFJGcmFtZTo6ZmlsbEpvaW50UmFkaWkoY29u
c3QgVmVjdG9yPFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+PiBqb2ludFNwYWNlcywgRmxvYXQzMkFy
cmF5JiByYWRpaSkKIHsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBJZiBmcmFtZeKAmXMgYWN0
aXZlIGJvb2xlYW4gaXMgZmFsc2UsIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9y
dCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fYWN0aXZlKQorICAgICAgICByZXR1cm4gRXhjZXB0
aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGcmFtZSBpcyBub3QgYWN0aXZlIl9zIH07CisKKyAg
ICAvLyBGb3IgZWFjaCBqb2ludCBpbiB0aGUgam9pbnRTcGFjZXM6CisgICAgLy8gSWYgam9pbnTi
gJlzIHNlc3Npb24gaXMgZGlmZmVyZW50IGZyb20gc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0
YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGZvciAoY29uc3QgYXV0byYgam9p
bnRTcGFjZSA6IGpvaW50U3BhY2VzKSB7CisgICAgICAgIGlmICgham9pbnRTcGFjZSB8fCBqb2lu
dFNwYWNlLT5zZXNzaW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSm9pbnQgc3BhY2UncyBzZXNzaW9uIGRv
ZXMgbm90IG1hdGNoIGZyYW1lJ3Mgc2Vzc2lvbiJfcyB9OworICAgIH0KKworICAgIC8vIElmIHRo
ZSBsZW5ndGggb2Ygam9pbnRTcGFjZXMgaXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVt
ZW50cyBpbiByYWRpaSwgdGhyb3cgYSBUeXBlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgor
ICAgIGlmIChqb2ludFNwYWNlcy5zaXplKCkgPiByYWRpaS5sZW5ndGgoKSkKKyAgICAgICAgcmV0
dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuZXhwZWN0ZWQgbGVuZ3RoIG9mIHJhZGlpIGFy
cmF5Il9zIH07CisKKyAgICAvLyBMZXQgYWxsVmFsaWQgYmUgdHJ1ZS4KKyAgICBib29sIGFsbFZh
bGlkID0gdHJ1ZTsKKworICAgIC8vIEZvciBlYWNoIGpvaW50IGluIHRoZSBqb2ludFNwYWNlczoK
KyAgICAvLyAxLiBTZXQgdGhlIGZsb2F0IHZhbHVlIG9mIHJhZGlpIGF0IG9mZnNldCBhcyBmb2xs
b3dzOgorICAgIC8vIElmIHRoZSB1c2VyIGFnZW50IGNhbiBkZXRlcm1pbmUgdGhlIHBvc2VzIG9m
IGFsbCB0aGUgam9pbnRzIGJlbG9uZ2luZyB0byB0aGUgam9pbnTigJlzIGhhbmQ6CisgICAgLy8g
ICAgIFNldCB0aGUgZmxvYXQgdmFsdWUgb2YgcmFkaWkgYXQgb2Zmc2V0IHRvIHRoYXQgcmFkaXVz
LgorICAgIC8vIE90aGVyd2lzZQorICAgIC8vICAgICBTZXQgdGhlIGZsb2F0IHZhbHVlIG9mIHJh
ZGlpIGF0IG9mZnNldCB0byBOYU4uCisgICAgLy8gICAgIFNldCBhbGxWYWxpZCB0byBmYWxzZS4K
KyAgICAvLyAyLiBJbmNyZWFzZSBvZmZzZXQgYnkgMS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGpvaW50U3BhY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChqb2ludFNwYWNlc1tp
XS0+aGFuZEhhc01pc3NpbmdQb3NlcygpKSB7CisgICAgICAgICAgICByYWRpaS5zZXQoaSwgc3Rk
OjpudW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpKTsKKyAgICAgICAgICAgIGFsbFZh
bGlkID0gZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmFkaWkuc2V0KGksIGpv
aW50U3BhY2VzW2ldLT5yYWRpdXMoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGFsbFZhbGlkOwog
fQogCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWhhbmQtaW5wdXQv
I2RvbS14cmZyYW1lLWZpbGxwb3NlcwotRXhjZXB0aW9uT3I8Ym9vbD4gV2ViWFJGcmFtZTo6Zmls
bFBvc2VzKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJTcGFjZT4+LCBjb25zdCBXZWJYUlNwYWNl
JiwgY29uc3QgRmxvYXQzMkFycmF5JikKK0V4Y2VwdGlvbk9yPGJvb2w+IFdlYlhSRnJhbWU6OmZp
bGxQb3Nlcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2Vi
WFJTcGFjZT4+IHNwYWNlcywgY29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlLCBGbG9hdDMyQXJy
YXkmIHRyYW5zZm9ybXMpCiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gSWYgZnJhbWXigJlz
IGFjdGl2ZSBib29sZWFuIGlzIGZhbHNlLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQg
YWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCFtX2FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRnJhbWUgaXMgbm90IGFjdGl2ZSJfcyB9Owor
CisgICAgLy8gRm9yIGVhY2ggc3BhY2UgaW4gdGhlIHNwYWNlcyBzZXF1ZW5jZToKKyAgICAvLyBJ
ZiBzcGFjZeKAmXMgc2Vzc2lvbiBpcyBkaWZmZXJlbnQgZnJvbSBzZXNzaW9uLCB0aHJvdyBhbiBJ
bnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgZm9yIChjb25zdCBh
dXRvJiBzcGFjZSA6IHNwYWNlcykgeworICAgICAgICBpZiAoIXNwYWNlIHx8IHNwYWNlLT5zZXNz
aW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7
IEludmFsaWRTdGF0ZUVycm9yLCAiU3BhY2UncyBzZXNzaW9uIGRvZXMgbm90IG1hdGNoIGZyYW1l
J3Mgc2Vzc2lvbiJfcyB9OworICAgIH0KKworICAgIC8vIElmIGJhc2VTcGFjZeKAmXMgc2Vzc2lv
biBpcyBkaWZmZXJlbnQgZnJvbSBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKGJhc2VTcGFjZS5zZXNzaW9uKCkgIT0gbV9z
ZXNzaW9uLnB0cigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJy
b3IsICJCYXNlIHNwYWNlJ3Mgc2Vzc2lvbiBkb2VzIG5vdCBtYXRjaCBmcmFtZSdzIHNlc3Npb24i
X3MgfTsKKworICAgIC8vIElmIHRoZSBsZW5ndGggb2Ygc3BhY2VzIG11bHRpcGxpZWQgYnkgMTYg
aXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0cmFuc2Zvcm1zLAorICAg
IC8vIHRocm93IGEgVHlwZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBjb25zdCBz
aXplX3QgbnVtYmVyT2ZGbG9hdHNQZXJUcmFuc2Zvcm0gPSAxNjsKKyAgICBpZiAoc3BhY2VzLnNp
emUoKSAqIG51bWJlck9mRmxvYXRzUGVyVHJhbnNmb3JtID4gdHJhbnNmb3Jtcy5sZW5ndGgoKSkK
KyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuZXhwZWN0ZWQgbGVuZ3Ro
IG9mIHRyYW5zZm9ybXMgYXJyYXkiX3MgfTsKKworICAgIC8vIENoZWNrIGlmIHBvc2VzIG1heSBi
ZSByZXBvcnRlZCBhbmQsIGlmIG5vdCwgdGhyb3cgYSBTZWN1cml0eUVycm9yIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fc2Vzc2lvbi0+cG9zZXNDYW5CZVJlcG9ydGVkKGRvY3Vt
ZW50KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJQb3NlcyBj
YW5ub3QgYmUgcmVwb3J0ZWQiX3MgfTsKKworICAgIC8vIExldCBhbGxWYWxpZCBiZSB0cnVlLgor
ICAgIGJvb2wgYWxsVmFsaWQgPSB0cnVlOworCisgICAgLy8gRm9yIGVhY2ggc3BhY2UgaW4gdGhl
IHNwYWNlcyBzZXF1ZW5jZToKKyAgICBmb3IgKHNpemVfdCBzcGFjZUluZGV4ID0gMDsgc3BhY2VJ
bmRleCA8IHNwYWNlcy5zaXplKCk7ICsrc3BhY2VJbmRleCkgeworICAgICAgICAvLyAxLiBQb3B1
bGF0ZSB0aGUgcG9zZSBvZiBzcGFjZSBpbiBiYXNlU3BhY2UgYXQgdGhlIHRpbWUgcmVwcmVzZW50
ZWQgYnkgZnJhbWUgaW50byBwb3NlLgorICAgICAgICBhdXRvIHBvcHVsYXRlUG9zZVJlc3VsdCA9
IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgKihzcGFjZXNbc3BhY2VJbmRleF0pLCBiYXNlU3BhY2Up
OworICAgICAgICBpZiAocG9wdWxhdGVQb3NlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAg
ICAgICAgcmV0dXJuIHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAg
ICAgICAgLy8gMi4gSWYgcG9zZSBpcyBudWxsLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3RlcHM6
CisgICAgICAgIC8vIDMuIFNldCAxNiBjb25zZWN1dGl2ZSBlbGVtZW50cyBvZiB0aGUgdHJhbnNm
b3JtcyBhcnJheSBzdGFydGluZyBhdCBvZmZzZXQgdG8gTmFOLgorICAgICAgICAvLyA0LiBTZXQg
YWxsVmFsaWQgdG8gZmFsc2UuCisgICAgICAgIGF1dG8gcG9wdWxhdGVWYWx1ZSA9IHBvcHVsYXRl
UG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgaWYgKCFwb3B1bGF0ZVZh
bHVlKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB0cmFuc2Zvcm1JbmRleCA9IDA7IHRyYW5z
Zm9ybUluZGV4IDwgbnVtYmVyT2ZGbG9hdHNQZXJUcmFuc2Zvcm07ICsrdHJhbnNmb3JtSW5kZXgp
CisgICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy5zZXQoc3BhY2VJbmRleCAqIG51bWJlck9mRmxv
YXRzUGVyVHJhbnNmb3JtICsgdHJhbnNmb3JtSW5kZXgsIHN0ZDo6bnVtZXJpY19saW1pdHM8Zmxv
YXQ+OjpxdWlldF9OYU4oKSk7CisgICAgICAgICAgICBhbGxWYWxpZCA9IGZhbHNlOworICAgICAg
ICB9IGVsc2UgeworICAgICAgICAgICAgLy8gNS4gSWYgcG9zZSBpcyBub3QgbnVsbCwgY29weSBh
bGwgZWxlbWVudHMgZnJvbSBwb3Nl4oCZcyBtYXRyaXggbWVtYmVyIHRvIHRoZSB0cmFuc2Zvcm1z
IGFycmF5IHN0YXJ0aW5nIGF0IG9mZnNldC4KKyAgICAgICAgICAgIC8vIDYuIEluY3JlYXNlIG9m
ZnNldCBieSAxNi4KKyAgICAgICAgICAgIGF1dG8gbWF0cml4ID0gcG9wdWxhdGVWYWx1ZS0+dHJh
bnNmb3JtLnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KCk7CisgICAgICAgICAgICBmb3IgKHNpemVf
dCB0cmFuc2Zvcm1JbmRleCA9IDA7IHRyYW5zZm9ybUluZGV4IDwgbnVtYmVyT2ZGbG9hdHNQZXJU
cmFuc2Zvcm07ICsrdHJhbnNmb3JtSW5kZXgpCisgICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy5z
ZXQoc3BhY2VJbmRleCAqIG51bWJlck9mRmxvYXRzUGVyVHJhbnNmb3JtICsgdHJhbnNmb3JtSW5k
ZXgsIG1hdHJpeFt0cmFuc2Zvcm1JbmRleF0pOworICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGFsbFZhbGlkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkZyYW1lLmgKaW5kZXggYmJhYTJjZGQ4ZTlmY2I4ZWYwNjRkNTQ3NDgxMjQ0ZDlkNDEyMzhm
Ni4uNTE0NzkyNGNhMTJmZjYyMGEwYmUwNzljYmMwODI2Mjg0YTI2YjAzYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKQEAgLTYwLDkgKzYwLDkgQEAgcHVibGlj
OgogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBnZXRQb3NlKGNvbnN0IERvY3Vt
ZW50JiwgY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAogI2lmIEVOQUJM
RShXRUJYUl9IQU5EUykKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJKb2ludFBvc2U+PiBn
ZXRKb2ludFBvc2UoY29uc3QgV2ViWFJKb2ludFNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpOwot
ICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGZpbGxKb2ludFJhZGlpKGNvbnN0IFZlY3RvcjxSZWZQdHI8
V2ViWFJKb2ludFNwYWNlPj4sIGNvbnN0IEZsb2F0MzJBcnJheSYpOwotICAgIEV4Y2VwdGlvbk9y
PGJvb2w+IGZpbGxQb3Nlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSU3BhY2U+PiwgY29uc3Qg
V2ViWFJTcGFjZSYsIGNvbnN0IEZsb2F0MzJBcnJheSYpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0
cjxXZWJYUkpvaW50UG9zZT4+IGdldEpvaW50UG9zZShjb25zdCBEb2N1bWVudCYsIGNvbnN0IFdl
YlhSSm9pbnRTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKKyAgICBFeGNlcHRpb25Pcjxib29s
PiBmaWxsSm9pbnRSYWRpaShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+LCBG
bG9hdDMyQXJyYXkmKTsKKyAgICBFeGNlcHRpb25Pcjxib29sPiBmaWxsUG9zZXMoY29uc3QgRG9j
dW1lbnQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSU3BhY2U+PiwgY29uc3QgV2ViWFJTcGFj
ZSYsIEZsb2F0MzJBcnJheSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJl
c1RpbWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJIYW5kLmNwcAppbmRleCBmNTNlNDFiZmQyZWY1YWQ1OTk3MmIzNGVkN2E2
ZjMzNTU5YzFjMzkxLi45NWJiZThiN2MxZTgzZmVkNGM3YWU1ZTdiYTUxNjA5MzRjZTRiNTM5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3BwCkBAIC00MywxNCAr
NDMsMjQgQEAgUmVmPFdlYlhSSGFuZD4gV2ViWFJIYW5kOjpjcmVhdGUoY29uc3QgV2ViWFJJbnB1
dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiBXZWJYUkhhbmQ6OldlYlhSSGFuZChjb25zdCBXZWJYUklu
cHV0U291cmNlJiBpbnB1dFNvdXJjZSkKICAgICA6IG1faW5wdXRTb3VyY2UoaW5wdXRTb3VyY2Up
CiB7CisgICAgYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKTsKKyAgICBhdXRvKiBkb2N1
bWVudCA9IHNlc3Npb24gPyBkb3duY2FzdDxEb2N1bWVudD4oc2Vzc2lvbi0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSA6IG51bGxwdHI7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBzdGF0aWNfY2FzdDxzaXplX3Q+KFhS
SGFuZEpvaW50OjpDb3VudCk7ICsraSkKKyAgICAgICAgbV9qb2ludHMuYXBwZW5kKFdlYlhSSm9p
bnRTcGFjZTo6Y3JlYXRlKCpkb2N1bWVudCwgKnRoaXMsIHN0YXRpY19jYXN0PFhSSGFuZEpvaW50
PihpKSkpOwogfQogCiBXZWJYUkhhbmQ6On5XZWJYUkhhbmQoKSA9IGRlZmF1bHQ7CiAKIFJlZlB0
cjxXZWJYUkpvaW50U3BhY2U+IFdlYlhSSGFuZDo6Z2V0KGNvbnN0IFhSSGFuZEpvaW50JiBrZXkp
CiB7Ci0gICAgVU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgc2l6
ZV90IGpvaW50SW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGtleSk7CisgICAgaWYgKGpvaW50
SW5kZXggPj0gbV9qb2ludHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAg
IHJldHVybiBtX2pvaW50c1tqb2ludEluZGV4XS5wdHIoKTsKIH0KIAogV2ViWFJIYW5kOjpJdGVy
YXRvcjo6SXRlcmF0b3IoV2ViWFJIYW5kJiBoYW5kKQpAQCAtNjAsMTkgKzcwLDQ0IEBAIFdlYlhS
SGFuZDo6SXRlcmF0b3I6Okl0ZXJhdG9yKFdlYlhSSGFuZCYgaGFuZCkKIAogc3RkOjpvcHRpb25h
bDxLZXlWYWx1ZVBhaXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+Pj4gV2Vi
WFJIYW5kOjpJdGVyYXRvcjo6bmV4dCgpCiB7Ci0gICAgaWYgKG1faW5kZXggPiBtX2hhbmQtPm1f
am9pbnRzLnNpemUoKSkKKyAgICBpZiAobV9pbmRleCA+PSBtX2hhbmQtPm1fam9pbnRzLnNpemUo
KSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisgICAgc2l6ZV90IGluZGV4ID0gbV9pbmRleCsrOworICAgIHJldHVybiBLZXlWYWx1ZVBh
aXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+PiB7IHN0YXRpY19jYXN0PFhS
SGFuZEpvaW50PihpbmRleCksIG1faGFuZC0+bV9qb2ludHNbaW5kZXhdLnB0cigpIH07CiB9CiAK
IFdlYlhSU2Vzc2lvbiogV2ViWFJIYW5kOjpzZXNzaW9uKCkKIHsKICAgICBpZiAoIW1faW5wdXRT
b3VyY2UpCiAgICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgcmV0dXJuIG1faW5wdXRTb3Vy
Y2UuZ2V0KCktPnNlc3Npb24oKTsKIH0KIAordm9pZCBXZWJYUkhhbmQ6OnVwZGF0ZUZyb21JbnB1
dFNvdXJjZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2Um
IGlucHV0U291cmNlKQoreworICAgIGlmICghaW5wdXRTb3VyY2UuaGFuZEpvaW50cykgeworICAg
ICAgICBtX2hhc01pc3NpbmdQb3NlcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK
KyAgICBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SGFuZEpvaW50c1ZlY3Rv
ciYgaGFuZEpvaW50cyA9ICooaW5wdXRTb3VyY2UuaGFuZEpvaW50cyk7CisgICAgaWYgKGhhbmRK
b2ludHMuc2l6ZSgpICE9IG1fam9pbnRzLnNpemUoKSkgeworICAgICAgICBtX2hhc01pc3NpbmdQ
b3NlcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29sIGhhc01pc3Np
bmdQb3NlcyA9IGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGFuZEpvaW50cy5z
aXplKCk7ICsraSkgeworICAgICAgICBpZiAoIWhhbmRKb2ludHNbaV0pCisgICAgICAgICAgICBo
YXNNaXNzaW5nUG9zZXMgPSB0cnVlOworCisgICAgICAgIG1fam9pbnRzW2ldLT51cGRhdGVGcm9t
Sm9pbnQoaGFuZEpvaW50c1tpXSk7CisgICAgfQorICAgIG1faGFzTWlzc2luZ1Bvc2VzID0gaGFz
TWlzc2luZ1Bvc2VzOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJIYW5kLmgKaW5kZXggZGJlMTE0MzI1M2Q1NzA3OTFhZmM3YmQ4Njg4Yzk5MmRjM2Zi
YmFmZS4uZWRiYWI1OTYwZDM1OTBjMjE0ZDBkMjU0MTEyNGYwZjVmZDFmZGFiMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oCkBAIC0zNiwxNyArMzYsMTggQEAKICNp
bmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRl
IDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCi1jbGFzcyBXZWJYUkhhbmQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUkhhbmQ+
IHsKK2NsYXNzIFdlYlhSSGFuZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSGFuZD4sIHB1Ymxp
YyBDYW5NYWtlV2Vha1B0cjxXZWJYUkhhbmQ+IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVE
KFdlYlhSSGFuZCk7CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFdlYlhSSGFuZD4gY3JlYXRl
KGNvbnN0IFdlYlhSSW5wdXRTb3VyY2UmKTsKICAgICB+V2ViWFJIYW5kKCk7CiAKLSAgICB1bnNp
Z25lZCBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdW5zaWduZWQgc2l6ZSgpIHsgcmV0
dXJuIG1fam9pbnRzLnNpemUoKTsgfQogCiAgICAgUmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4gZ2V0
KGNvbnN0IFhSSGFuZEpvaW50JiBrZXkpOwogCkBAIC02MSwxNiArNjIsMTcgQEAgcHVibGljOgog
ICAgIH07CiAgICAgSXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSB7IHJldHVybiBJdGVyYXRvcigq
dGhpcyk7IH0KIAotICAgIC8vIEZvciBHQyByZWFjaGFibGl0aXkuCisgICAgLy8gRm9yIEdDIHJl
YWNoYWJpbGl0eS4KICAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKTsKIAorICAgIGJvb2wgaGFz
TWlzc2luZ1Bvc2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNaXNzaW5nUG9zZXM7IH0KKyAgICB2
b2lkIHVwZGF0ZUZyb21JbnB1dFNvdXJjZShjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2UmKTsKKwogcHJpdmF0ZToKICAgICBXZWJYUkhhbmQoY29uc3QgV2Vi
WFJJbnB1dFNvdXJjZSYpOwogCi0gICAgdW5zaWduZWQgbV9zaXplIHsgMCB9OwotICAgIHVzaW5n
IEhhbmRKb2ludFRvU3BhY2VNYXAgPSBIYXNoTWFwPFhSSGFuZEpvaW50LCBSZWY8V2ViWFJKb2lu
dFNwYWNlPiwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlI
YXNoVHJhaXRzPHVuc2lnbmVkPj47Ci0gICAgSGFuZEpvaW50VG9TcGFjZU1hcCBtX2pvaW50czsK
LQorICAgIFZlY3RvcjxSZWY8V2ViWFJKb2ludFNwYWNlPj4gbV9qb2ludHM7CisgICAgYm9vbCBt
X2hhc01pc3NpbmdQb3NlcyB7IHRydWUgfTsKICAgICBXZWFrUHRyPFdlYlhSSW5wdXRTb3VyY2U+
IG1faW5wdXRTb3VyY2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUklucHV0U291cmNlLmNwcAppbmRleCA1ZjU2OTNlMzAxMDNkMmZlNzM1ODRlMTI4MWRl
MDc2OGJhYjg3ZjUwLi4wYWE4OWQxZWU3YzI0NTcwOGZkOTBlYzQyODIzMTAxYmY0OWMzNjQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5j
cHAKQEAgLTg4LDE2ICs4OCwxOSBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnVwZGF0ZShkb3Vi
bGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRAogI2VuZGlmCiAK
ICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgaWYgKHNvdXJjZS5zaW11bGF0ZUhhbmQpIHsK
LSAgICAgICAgLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IGNyZWF0ZXMgYW4gb2JqZWN0IGp1c3Qg
Zm9yIHVzZSBpbiB0ZXN0aW5nLgotICAgICAgICAvLyBUaGUgcmVhbCBpbXBsZW1lbnRhdGlvbiB3
aWxsIHVzZSBhY3R1YWwgZGF0YSBhbmQgb25seSBiZSB2aXNpYmxlCi0gICAgICAgIC8vIGlmIGhh
bmQtdHJhY2tpbmcgd2FzIHJlcXVlc3RlZCBhdCBzZXNzaW9uIHN0YXJ0LgotICAgICAgICBpZiAo
IW1faGFuZCkKKyAgICBpZiAoc291cmNlLmhhbmRKb2ludHMpIHsKKyAgICAgICAgLy8gaHR0cHM6
Ly93d3cudzMub3JnL1RSL3dlYnhyLWhhbmQtaW5wdXQtMS8jeHJpbnB1dHNvdXJjZS1pbnRlcmZh
Y2UKKyAgICAgICAgLy8gSWYgdGhlIFhSSW5wdXRTb3VyY2UgYmVsb25ncyB0byBhbiBYUlNlc3Np
b24gdGhhdCBoYXMgbm90IGJlZW4gcmVxdWVzdGVkCisgICAgICAgIC8vIHdpdGggdGhlICJoYW5k
LXRyYWNraW5nIiBmZWF0dXJlIGRlc2NyaXB0b3IsIGhhbmQgTVVTVCBiZSBudWxsLgorICAgICAg
ICBpZiAoIW1faGFuZCAmJiBzZXNzaW9uLT5pc0hhbmRUcmFja2luZ0VuYWJsZWQoKSkKICAgICAg
ICAgICAgIG1faGFuZCA9IFdlYlhSSGFuZDo6Y3JlYXRlKCp0aGlzKTsKLSAgICB9IGVsc2UKLSAg
ICAgICAgbV9oYW5kID0gbnVsbHB0cjsKLSNlbmRpZgogCisgICAgICAgIGlmIChtX2hhbmQpCisg
ICAgICAgICAgICBtX2hhbmQtPnVwZGF0ZUZyb21JbnB1dFNvdXJjZShzb3VyY2UpOworCisgICAg
ICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBXZWJYUklucHV0U291cmNlOjpy
ZXF1aXJlc0lucHV0U291cmNlQ2hhbmdlKGNvbnN0IElucHV0U291cmNlJiBzb3VyY2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCmluZGV4IDRi
NzgzYjBjNjZiY2RkNzU5NjkwOThhMTJlMWRhMjdiNzcxMjFhNjMuLmVkMDQ1YmI3NDZiNmUyZDc0
ZmUzOGU1ZTdkNTJhMWRhMzE4ZmYyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
d2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCkBAIC0zNCwxMyArMzQsMTQgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJKb2ludFBvc2UpOwog
Ci1SZWY8V2ViWFJKb2ludFBvc2U+IFdlYlhSSm9pbnRQb3NlOjpjcmVhdGUoUmVmPFdlYlhSUmln
aWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCitSZWY8V2Vi
WFJKb2ludFBvc2U+IFdlYlhSSm9pbnRQb3NlOjpjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24sIGZsb2F0IHJhZGl1cykKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkpvaW50UG9zZShXVEZNb3ZlKHRyYW5zZm9y
bSksIGVtdWxhdGVkUG9zaXRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkpv
aW50UG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24sIHJhZGl1cykpOwog
fQogCi1XZWJYUkpvaW50UG9zZTo6V2ViWFJKb2ludFBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zv
cm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCitXZWJYUkpvaW50UG9zZTo6
V2ViWFJKb2ludFBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29s
IGVtdWxhdGVkUG9zaXRpb24sIGZsb2F0IHJhZGl1cykKICAgICA6IFdlYlhSUG9zZShXVEZNb3Zl
KHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pCisgICAgLCBtX3JhZGl1cyhyYWRpdXMpCiB7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2lu
dFBvc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaApp
bmRleCAxZDdjNzQxYTNhYTY0YTVmOTg1OTg1ZWNhZDdlMjhmZmVhNzY4OTlkLi43ZWExNWNiNTVh
ZGRjM2RjNWYyYzJjMTdhNmJhNTEyMGIwMzc4MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5oCkBAIC0zOSwxMyArMzksMTMgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogY2xhc3MgV2ViWFJKb2ludFBvc2UgOiBwdWJsaWMgV2ViWFJQb3NlIHsKICAg
ICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSSm9pbnRQb3NlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYlhSSm9pbnRQb3NlPiBjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+
JiYsIGJvb2wgZW11bGF0ZWRQb3NpdGlvbik7CisgICAgc3RhdGljIFJlZjxXZWJYUkpvaW50UG9z
ZT4gY3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRp
b24sIGZsb2F0IHJhZGl1cyk7CiAgICAgfldlYlhSSm9pbnRQb3NlKCkgPSBkZWZhdWx0OwogCiAg
ICAgZmxvYXQgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXM7IH0KIAogcHJpdmF0ZToK
LSAgICBXZWJYUkpvaW50UG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVs
YXRlZFBvc2l0aW9uKTsKKyAgICBXZWJYUkpvaW50UG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uLCBmbG9hdCByYWRpdXMpOwogCiAgICAgZmxvYXQg
bV9yYWRpdXMgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkpvaW50UG9zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSm9pbnRQb3NlLmlkbAppbmRleCA5ZWJkOGJmNTNiMmY5ODU5ZTk5MGI5ZWRmNDU1YTlhYzQ4
Mzc1OTZhLi43M2VjYWVjMjQwZDBmMmI5NzcyZWYxNGI1ZThjMDdmOWNkNzMwOTM4IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbApAQCAtMjYs
NiArMjYsOCBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAogICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViWFJFbmFibGVkJldlYlhSSGFuZElucHV0TW9kdWxlRW5hYmxlZCwKKyAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAg
U2VjdXJlQ29udGV4dCwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbnRlcmZhY2VOYW1lPVhS
Sm9pbnRQb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Sm9pbnRTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRT
cGFjZS5jcHAKaW5kZXggOWVlNjUwZmUwOTA4Y2JjNTM3YThlYzc5MzNkYTZmMGU0OGYzNTBmMC4u
ZDBmYjcxZGRjYTRjNzAwYmQzNjY4NWM0NDllNzlhMWRhYTdlMDY5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmNwcApAQCAtMjgsNiArMjgs
OCBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBFTkFCTEUoV0VCWFJfSEFORFMpCiAKKyNpbmNs
dWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViWFJIYW5kLmgiCiAjaW5jbHVkZSAiV2Vi
WFJSaWdpZFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CiAK
QEAgLTM1LDIyICszNyw0NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19B
TExPQ0FURURfSU1QTChXZWJYUkpvaW50U3BhY2UpOwogCi1SZWY8V2ViWFJKb2ludFNwYWNlPiBX
ZWJYUkpvaW50U3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYg
c2Vzc2lvbikKK1JlZjxXZWJYUkpvaW50U3BhY2U+IFdlYlhSSm9pbnRTcGFjZTo6Y3JlYXRlKERv
Y3VtZW50JiBkb2N1bWVudCwgV2ViWFJIYW5kJiBoYW5kLCBYUkhhbmRKb2ludCBqb2ludE5hbWUs
IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNl
SGFuZEpvaW50PiYmIGpvaW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSm9p
bnRTcGFjZShkb2N1bWVudCwgc2Vzc2lvbikpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlhSSm9pbnRTcGFjZShkb2N1bWVudCwgaGFuZCwgam9pbnROYW1lLCBXVEZNb3ZlKGpvaW50KSkp
OwogfQogCi1XZWJYUkpvaW50U3BhY2U6OldlYlhSSm9pbnRTcGFjZShEb2N1bWVudCYgZG9jdW1l
bnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKK1dlYlhSSm9pbnRTcGFjZTo6V2ViWFJKb2ludFNw
YWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJIYW5kJiBoYW5kLCBYUkhhbmRKb2ludCBqb2lu
dE5hbWUsIGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OklucHV0U291cmNlSGFuZEpvaW50PiYgam9pbnQpCiAgICAgOiBXZWJYUlNwYWNlKGRvY3VtZW50
LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSkKLSAgICAsIG1fc2Vzc2lvbihzZXNzaW9u
KQorICAgICwgbV9oYW5kKGhhbmQpCisgICAgLCBtX2pvaW50TmFtZShqb2ludE5hbWUpCiB7Cisg
ICAgdXBkYXRlRnJvbUpvaW50KGpvaW50KTsKIH0KIAogV2ViWFJKb2ludFNwYWNlOjp+V2ViWFJK
b2ludFNwYWNlKCkgPSBkZWZhdWx0OwogCit2b2lkIFdlYlhSSm9pbnRTcGFjZTo6dXBkYXRlRnJv
bUpvaW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OklucHV0U291cmNlSGFuZEpvaW50PiYgam9pbnQpCit7CisgICAgbV9qb2ludCA9IGpvaW50Owor
fQorCitib29sIFdlYlhSSm9pbnRTcGFjZTo6aGFuZEhhc01pc3NpbmdQb3NlcygpIGNvbnN0Cit7
CisgICAgcmV0dXJuICFtX2hhbmQgfHwgbV9oYW5kLT5oYXNNaXNzaW5nUG9zZXMoKTsKK30KKwor
V2ViWFJTZXNzaW9uKiBXZWJYUkpvaW50U3BhY2U6OnNlc3Npb24oKSBjb25zdAoreworICAgIHJl
dHVybiBtX2hhbmQgPyBtX2hhbmQtPnNlc3Npb24oKSA6IG51bGxwdHI7Cit9CisKIHN0ZDo6b3B0
aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFdlYlhSSm9pbnRTcGFjZTo6bmF0aXZlT3JpZ2lu
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIC8vIGh0dHBzOi8vaW1t
ZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItaGFuZC1pbnB1dC8jeHJqb2ludHNwYWNlLWludGVy
ZmFjZQorICAgIC8vIFRoZSBuYXRpdmUgb3JpZ2luIG9mIHRoZSBYUkpvaW50U3BhY2UgbWF5IG9u
bHkgYmUgcmVwb3J0ZWQgd2hlbiBuYXRpdmUgb3JpZ2lucyBvZgorICAgIC8vIGFsbCBvdGhlciBY
UkpvaW50U3BhY2VzIG9uIHRoZSBzYW1lIGhhbmQgYXJlIGJlaW5nIHJlcG9ydGVkLiBXaGVuIGEg
aGFuZCBpcyBwYXJ0aWFsbHkKKyAgICAvLyBvYnNjdXJlZCB0aGUgdXNlciBhZ2VudCBNVVNUIGVp
dGhlciBlbXVsYXRlIHRoZSBvYnNjdXJlZCBqb2ludHMsIG9yIHJlcG9ydCBudWxsIHBvc2VzCisg
ICAgLy8gZm9yIGFsbCBvZiB0aGUgam9pbnRzLgorICAgIGlmIChoYW5kSGFzTWlzc2luZ1Bvc2Vz
KCkgfHwgIW1fam9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1
cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UobV9qb2ludC0+cG9zZS5wb3NlKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3Bh
Y2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmgKaW5k
ZXggNTEyNTdiY2M1ZTRiNjQ0ZTJiMzUyZmZmMzcxOTY2OWI4ODc3OTY1Zi4uZjlkZDU5MTY0NzMx
MTcxMWFiNTRjY2E4M2IzZDAyMjc1NTI3YmM3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFjZS5oCkBAIC0yOSwzMSArMjksMzkgQEAKIAogI2luY2x1
ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgotI2luY2x1ZGUgIldlYlhS
U2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKICNpbmNsdWRlICJYUkhhbmRKb2lu
dC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFdlYlhS
SGFuZDsKK2NsYXNzIFdlYlhSU2Vzc2lvbjsKKwogY2xhc3MgV2ViWFJKb2ludFNwYWNlIDogcHVi
bGljIFJlZkNvdW50ZWQ8V2ViWFJKb2ludFNwYWNlPiwgcHVibGljIFdlYlhSU3BhY2UgewogICAg
IFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJKb2ludFNwYWNlKTsKIHB1YmxpYzoKLSAgICBz
dGF0aWMgUmVmPFdlYlhSSm9pbnRTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9u
Jik7CisgICAgc3RhdGljIFJlZjxXZWJYUkpvaW50U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdl
YlhSSGFuZCYsIFhSSGFuZEpvaW50LCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAg
dmlydHVhbCB+V2ViWFJKb2ludFNwYWNlKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhS
Sm9pbnRTcGFjZT46OnJlZjsKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSSm9pbnRTcGFjZT46
OmRlcmVmOwogCi0gICAgWFJIYW5kSm9pbnQgam9pbnROYW1lKCkgY29uc3QgeyByZXR1cm4gWFJI
YW5kSm9pbnQ6OldyaXN0OyB9CisgICAgWFJIYW5kSm9pbnQgam9pbnROYW1lKCkgY29uc3QgeyBy
ZXR1cm4gbV9qb2ludE5hbWU7IH0KKworICAgIGZsb2F0IHJhZGl1cygpIGNvbnN0IHsgcmV0dXJu
IG1fam9pbnQgPyBtX2pvaW50LT5yYWRpdXMgOiAwOyB9CisgICAgdm9pZCB1cGRhdGVGcm9tSm9p
bnQoY29uc3Qgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2VIYW5kSm9pbnQ+Jik7CisgICAgYm9vbCBoYW5kSGFzTWlzc2luZ1Bvc2VzKCkgY29u
c3Q7CisKKyAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0
ZToKLSAgICBXZWJYUkpvaW50U3BhY2UoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mKTsKKyAgICBX
ZWJYUkpvaW50U3BhY2UoRG9jdW1lbnQmLCBXZWJYUkhhbmQmLCBYUkhhbmRKb2ludCwgY29uc3Qg
c3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VI
YW5kSm9pbnQ+Jik7CiAKLSAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH07CiAgICAgc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1h
dGlvbk1hdHJpeD4gbmF0aXZlT3JpZ2luKCkgY29uc3QgZmluYWw7CiAKICAgICB2b2lkIHJlZkV2
ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQpAQCAtNjEsNyArNjksOSBAQCBwcml2YXRlOgog
CiAgICAgYm9vbCBpc0pvaW50U3BhY2UoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAK
LSAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9zZXNzaW9uOworICAgIFdlYWtQdHI8V2ViWFJI
YW5kPiBtX2hhbmQ7CisgICAgWFJIYW5kSm9pbnQgbV9qb2ludE5hbWUgeyBYUkhhbmRKb2ludDo6
V3Jpc3QgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZUhhbmRKb2ludD4gbV9qb2ludDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmlkbCBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmlkbAppbmRleCAwMjQxN2U1NmFj
MmZlZTI4ZTc0N2RkZDhhOTBmMTUyMzRkZGVlYmJjLi5hOThlYzA4M2MxZGYwMTc4NTNhMDcyZjEy
ZGM3MGQ3ZjhiNDE2OGI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSSm9pbnRTcGFjZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkpvaW50U3BhY2UuaWRsCkBAIC0yNiw2ICsyNiw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9
V0VCWFJfSEFORFMsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJYUkVuYWJsZWQmV2ViWFJIYW5k
SW5wdXRNb2R1bGVFbmFibGVkLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTR2Vu
ZXJhdGVUb05hdGl2ZU9iamVjdCwKICAgICBTZWN1cmVDb250ZXh0LAogICAgIEV4cG9zZWQ9V2lu
ZG93LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Np
b24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmlu
ZGV4IGYwY2U1OGNjMjI1MGZmN2QxZjRmMDRiMzlmMzBiYmY5ZjAyZTIzYmIuLjJiODRlMGU5ODcx
MjAwNzUwOThjOWMzOGY4NDRkNzhmYTQ5ZTRlZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKQEAgLTY0NSw2ICs2NDUsMTQgQEAgYm9vbCBXZWJY
UlNlc3Npb246OnBvc2VzQ2FuQmVSZXBvcnRlZChjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNv
bnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCitib29s
IFdlYlhSU2Vzc2lvbjo6aXNIYW5kVHJhY2tpbmdFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9yZXF1ZXN0ZWRGZWF0dXJlcy5jb250YWlucyhQbGF0Zm9ybVhSOjpTZXNzaW9uRmVhdHVy
ZTo6SGFuZFRyYWNraW5nKTsKK30KKyNlbmRpZgorCisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSU2Vzc2lvbi5oCmluZGV4IDg2MGM2ZjViYjgxMWRiNDcxNThkNDU5Mzk1ZmE2NDNkYTlk
YzA0MzMuLmE2Y2ZhODRlYWEyZWJiMTc0ZmZlODBhMDMxN2VhOTk3OGRlN2Q1YjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaApAQCAtOTgsNiArOTgsMTAg
QEAgcHVibGljOgogICAgIGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhJiBmcmFt
ZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lRGF0YTsgfQogICAgIGNvbnN0IFdlYlhSVmll
d2VyU3BhY2UmIHZpZXdlclJlZmVyZW5jZVNwYWNlKCkgY29uc3QgeyByZXR1cm4gKm1fdmlld2Vy
UmVmZXJlbmNlU3BhY2U7IH0KICAgICBib29sIHBvc2VzQ2FuQmVSZXBvcnRlZChjb25zdCBEb2N1
bWVudCYpIGNvbnN0OworICAgIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAgICBib29sIGlz
SGFuZFRyYWNraW5nRW5hYmxlZCgpIGNvbnN0OworI2VuZGlmCiAKIHByaXZhdGU6CiAgICAgV2Vi
WFJTZXNzaW9uKERvY3VtZW50JiwgV2ViWFJTeXN0ZW0mLCBYUlNlc3Npb25Nb2RlLCBQbGF0Zm9y
bVhSOjpEZXZpY2UmLCBGZWF0dXJlTGlzdCYmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2N2Q2Y2MxM2QyODJiNWViNzM3MjNi
OThmMzZjNTM3YjdlM2EyNjFhLi4yYzhhYTlhMzRhMTUwZDlmZTJiNTg0MzBhMGMyMGNlZDcwMzkw
Zjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5w
Ynhwcm9qCkBAIC0xNzQ3LDYgKzE3NDcsNyBAQAogCQk1MjczQ0NCMjI1NjQ1NzZGMDA4NTAwMDcg
LyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3M0NDQUQyNTY0NTc2QzAwODUwMDA3IC8qIEpTRmFrZVhS
QnV0dG9uU3RhdGVJbml0LmNwcCAqLzsgfTsKIAkJNTI3M0NDQjMyNTY0NTc2RjAwODUwMDA3IC8q
IEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzNDQ0FFMjU2NDU3NkQwMDg1MDAwNyAvKiBKU0Zha2VY
UlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHAgKi87IH07CiAJCTUyNzNDQ0I0MjU2NDU3NkYwMDg1MDAw
NyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJ
bml0LmNwcCAqLzsgfTsKKwkJNTJBMEJFNjYyN0MyMjdFMTAwNDY2MTFFIC8qIEpTRmFrZVhSSm9p
bnRTdGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTJBMEJFNjUyN0MyMjdFMDAwNDY2MTFFIC8qIEpTRmFrZVhSSm9pbnRTdGF0ZUluaXQu
Y3BwICovOyB9OwogCQk1MkIwRDRCRTFDNTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3Lmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIwRDRCRDFD
NTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJCMEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFZp
ZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIwRDRCRjFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk1MkIwRDRDMjFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlTWFjLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1MkIwRDRDMTFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
QEAgLTEwMDcyLDYgKzEwMDczLDggQEAKIAkJNTFGQjY3RDkxQUU2QjVFNDAwRDA2QzVBIC8qIENv
bnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTFGQjY3REExQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNp
b25TdHlsZVNoZWV0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRF
eHRlbnNpb25TdHlsZVNoZWV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMTMx
RTVBMUM0RjE1NjEwMDMzRjgwMiAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNjNCRjIwMjdDMUI1
MzgwMDg1MjUwQyAvKiBGYWtlWFJKb2ludFN0YXRlSW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBGYWtl
WFJKb2ludFN0YXRlSW5pdC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjYzQkYy
MjI3QzFCNTNCMDA4NTI1MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEZha2VY
UkpvaW50U3RhdGVJbml0LmlkbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzI0
RjExQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW0gKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRh
dGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3MjRGMjFDQjJG
REY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjg4QUEzMjdENkE3REEwMDM1NzdBMiAvKiBS
ZXNpZGVudEtleVJlcXVpcmVtZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlc2lkZW50S2V5UmVxdWly
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTEwMDg3LDYgKzEwMDkwLDcg
QEAKIAkJNTI3M0NDQUQyNTY0NTc2QzAwODUwMDA3IC8qIEpTRmFrZVhSQnV0dG9uU3RhdGVJbml0
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSQnV0dG9u
U3RhdGVJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0NDQUUyNTY0
NTc2RDAwODUwMDA3IC8qIEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI3M0NDQUYyNTY0NTc2RTAwODUwMDA3
IC8qIEpTRmFrZVhSVmlld0luaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNGYWtlWFJWaWV3SW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTUyQTBCRTY1MjdDMjI3RTAwMDQ2NjExRSAvKiBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgbmFtZSA9IEpTRmFrZVhSSm9pbnRTdGF0ZUlu
aXQuY3BwOyBwYXRoID0gSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTUyQjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUGxhdGZvcm1WaWV3Lmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MkIwRDRDMTFDNTdGRjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjExODks
NiArMjExOTMsOCBAQAogCQkJCUUxOEQ4M0UzMjQzRjcxQ0YwMDkyNDdENiAvKiBGYWtlWFJCdXR0
b25TdGF0ZUluaXQuaWRsICovLAogCQkJCUUxOEQ4M0VBMjQzRjcxRDQwMDkyNDdENiAvKiBGYWtl
WFJJbnB1dFNvdXJjZUluaXQuaCAqLywKIAkJCQlFMThEODNEQzI0M0Y3MUNCMDA5MjQ3RDYgLyog
RmFrZVhSSW5wdXRTb3VyY2VJbml0LmlkbCAqLywKKwkJCQk1MjYzQkYyMDI3QzFCNTM4MDA4NTI1
MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQuaCAqLywKKwkJCQk1MjYzQkYyMjI3QzFCNTNCMDA4
NTI1MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsICovLAogCQkJCUUxOEQ4M0U1MjQzRjcx
RDEwMDkyNDdENiAvKiBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuaCAqLywKIAkJCQlFMThEODNF
NjI0M0Y3MUQxMDA5MjQ3RDYgLyogRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmlkbCAqLywKIAkJ
CQlFMThEODNERjI0M0Y3MUNEMDA5MjQ3RDYgLyogRmFrZVhSVmlld0luaXQuaCAqLywKQEAgLTIx
Mjg0LDYgKzIxMjkwLDcgQEAKIAkJCQk1MjczQ0NBQzI1NjQ1NzZDMDA4NTAwMDcgLyogSlNGYWtl
WFJCb3VuZHNQb2ludC5jcHAgKi8sCiAJCQkJNTI3M0NDQUQyNTY0NTc2QzAwODUwMDA3IC8qIEpT
RmFrZVhSQnV0dG9uU3RhdGVJbml0LmNwcCAqLywKIAkJCQk1MjczQ0NBQTI1NjQ1NzZCMDA4NTAw
MDcgLyogSlNGYWtlWFJJbnB1dFNvdXJjZUluaXQuY3BwICovLAorCQkJCTUyQTBCRTY1MjdDMjI3
RTAwMDQ2NjExRSAvKiBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcCAqLywKIAkJCQk1MjczQ0NB
RTI1NjQ1NzZEMDA4NTAwMDcgLyogSlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuY3BwICovLAog
CQkJCTUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCAqLywK
IAkJCQk1MTcxNEVBRTFDRjY2NTRBMDA0NzIzQzQgLyogSlNHQ09ic2VydmF0aW9uLmNwcCAqLywK
QEAgLTM4ODcyLDYgKzM4ODc5LDcgQEAKIAkJCQk1MjczQ0NCMTI1NjQ1NzZGMDA4NTAwMDcgLyog
SlNGYWtlWFJCb3VuZHNQb2ludC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjczQ0NCMjI1NjQ1
NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNTI3M0NDQjAyNTY0NTc2RjAwODUwMDA3IC8qIEpTRmFrZVhSSW5wdXRTb3VyY2VJbml0
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyQTBCRTY2MjdDMjI3RTEwMDQ2NjExRSAvKiBKU0Zh
a2VYUkpvaW50U3RhdGVJbml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzNDQ0IzMjU2NDU3
NkYwMDg1MDAwNyAvKiBKU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1MjczQ0NCNDI1NjQ1NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJWaWV3SW5pdC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQlERTVGODYxMjFGQTIzOUU3MDA2REI2M0EgLyogSlNHQ09ic2Vy
dmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZv
cm1YUi5oCmluZGV4IDkzZDAzZjhhYzlhMjJlMzQ3YThiM2Y2NDAzZjEyZjg0YjE3YWVjNWYuLjRm
N2U1MGQxY2UxYzNjMWMxNGNjMWRmMTc4NDcwNTQwZjU4NzgzNzEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTE2Myw3ICsxNjMsNyBAQCBpbmxpbmUgU3RyaW5n
IHNlc3Npb25GZWF0dXJlRGVzY3JpcHRvcihTZXNzaW9uRmVhdHVyZSBzZXNzaW9uRmVhdHVyZSkK
ICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCiAKIGVudW0gY2xhc3MgSGFuZEpvaW50IDogdW5zaWdu
ZWQgewotICAgIFdyaXN0LAorICAgIFdyaXN0ID0gMCwKICAgICBUaHVtYk1ldGFjYXJwYWwsCiAg
ICAgVGh1bWJQaGFsYW54UHJveGltYWwsCiAgICAgVGh1bWJQaGFsYW54RGlzdGFsLApAQCAtMTg3
LDcgKzE4Nyw4IEBAIGVudW0gY2xhc3MgSGFuZEpvaW50IDogdW5zaWduZWQgewogICAgIFBpbmt5
RmluZ2VyUGhhbGFueFByb3hpbWFsLAogICAgIFBpbmt5RmluZ2VyUGhhbGFueEludGVybWVkaWF0
ZSwKICAgICBQaW5reUZpbmdlclBoYWxhbnhEaXN0YWwsCi0gICAgUGlua3lGaW5nZXJUaXAKKyAg
ICBQaW5reUZpbmdlclRpcCwKKyAgICBDb3VudAogfTsKIAogI2VuZGlmCkBAIC0zMTMsNiArMzE0
LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPElucHV0U291cmNlUG9zZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAg
ICAgfTsKIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAgICAgICAgc3RydWN0IElucHV0U291
cmNlSGFuZEpvaW50IHsKKyAgICAgICAgICAgIElucHV0U291cmNlUG9zZSBwb3NlOworICAgICAg
ICAgICAgZmxvYXQgcmFkaXVzIHsgMCB9OworCisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBF
bmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikgY29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0
ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnB1dFNvdXJjZUhhbmRKb2lu
dD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAgfTsKKworICAgICAgICB0eXBlZGVmIFZlY3Rv
cjxzdGQ6Om9wdGlvbmFsPElucHV0U291cmNlSGFuZEpvaW50Pj4gSGFuZEpvaW50c1ZlY3RvcjsK
KyNlbmRpZgorCiAgICAgICAgIHN0cnVjdCBJbnB1dFNvdXJjZSB7CiAgICAgICAgICAgICBJbnB1
dFNvdXJjZUhhbmRsZSBoYW5kbGUgeyAwIH07CiAgICAgICAgICAgICBYUkhhbmRlZG5lc3MgaGFu
ZGVuZXNzIHsgWFJIYW5kZWRuZXNzOjpOb25lIH07CkBAIC0zMjMsOCArMzM2LDcgQEAgcHVibGlj
OgogICAgICAgICAgICAgVmVjdG9yPElucHV0U291cmNlQnV0dG9uPiBidXR0b25zOwogICAgICAg
ICAgICAgVmVjdG9yPGZsb2F0PiBheGVzOwogI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICAg
ICAgICAgIC8vIEZJWE1FOiBBY3R1YWxseSBob2xkIHNvbWUgaGFuZCBkYXRhLgotICAgICAgICAg
ICAgYm9vbCBzaW11bGF0ZUhhbmQgeyBmYWxzZSB9OworICAgICAgICAgICAgc3RkOjpvcHRpb25h
bDxIYW5kSm9pbnRzVmVjdG9yPiBoYW5kSm9pbnRzOwogI2VuZGlmCiAKICAgICAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTYy
NCw2ICs2MzYsMjYgQEAgc3RkOjpvcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3Vy
Y2VQb3NlPiBEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UKICAgICByZXR1cm4gaW5wdXRT
b3VyY2VQb3NlOwogfQogCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQordGVtcGxhdGU8Y2xhc3Mg
RW5jb2Rlcj4KK3ZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlSGFuZEpvaW50Ojpl
bmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKK3sKKyAgICBlbmNvZGVyIDw8IHBvc2U7Cisg
ICAgZW5jb2RlciA8PCByYWRpdXM7Cit9CisKK3RlbXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6
Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4gRGV2aWNl
OjpGcmFtZURhdGE6OklucHV0U291cmNlSGFuZEpvaW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2Rl
cikKK3sKKyAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5k
Sm9pbnQgaGFuZEpvaW50OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFuZEpvaW50LnBvc2Up
KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUo
aGFuZEpvaW50LnJhZGl1cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0
dXJuIGhhbmRKb2ludDsKK30KKyNlbmRpZgorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9p
ZCBEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
KSBjb25zdAogewpAQCAtNjM1LDYgKzY2Nyw5IEBAIHZvaWQgRGV2aWNlOjpGcmFtZURhdGE6Oklu
cHV0U291cmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8
IGdyaXBPcmlnaW47CiAgICAgZW5jb2RlciA8PCBidXR0b25zOwogICAgIGVuY29kZXIgPDwgYXhl
czsKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCisgICAgZW5jb2RlciA8PCBoYW5kSm9pbnRzOwor
I2VuZGlmCiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC02NTcsNiArNjkyLDEwIEBA
IHN0ZDo6b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiBEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2U6OmRlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZShzb3VyY2UuYXhlcykpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUoc291cmNlLmhhbmRKb2ludHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworI2Vu
ZGlmCiAgICAgcmV0dXJuIHNvdXJjZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
RmFrZVhSSW5wdXRTb3VyY2VJbml0LmgKaW5kZXggMTYwNzYyZDdkNDc3YWJmNjRkMDUyNDY0ZmVi
OWRkMjA1NTA5ZGFhZS4uOWE0YWUzM2E2YmQ5MDhhNzRmYTcwM2YwZjUzYTRkYmFkZmU5NTY0MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5oCkBA
IC0zNCw2ICszNCwxMCBAQAogI2luY2x1ZGUgIlhSVGFyZ2V0UmF5TW9kZS5oIgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyNpbmNsdWRlICJGYWtl
WFJKb2ludFN0YXRlSW5pdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Ry
dWN0IEZha2VYUklucHV0U291cmNlSW5pdCB7CkBAIC00Niw3ICs1MCw3IEBAIHN0cnVjdCBGYWtl
WFJJbnB1dFNvdXJjZUluaXQgewogICAgIFZlY3RvcjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+IHN1
cHBvcnRlZEJ1dHRvbnM7CiAgICAgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW47
CiAjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQotICAgIGJvb2wgc2ltdWxhdGVIYW5kIHsgZmFsc2Ug
fTsKKyAgICBWZWN0b3I8RmFrZVhSSm9pbnRTdGF0ZUluaXQ+IGhhbmRKb2ludHM7CiAjZW5kaWYK
IH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3Vy
Y2VJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0
LmlkbAppbmRleCAxMDE2NjVjZGQzZjgyODY0ZTQ4Yzg1ZjMwZjMzNjRkZTY3YTI1NzVhLi5jNzUw
NjJiZWM3NzQ2MjI5M2UyYzVhY2Y2NzI5MmQ3MzZiMjNlMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsCkBAIC00Myw1ICs0Myw1IEBA
CiAgICAgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW47CiAgICAgLy8gT3B0aW9u
YWwgaGFuZCBpbnB1dC4gRm9yIG5vdyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBhY3R1YWwKICAg
ICAvLyBkYXRhLiBXZSdyZSBqdXN0IGNyZWF0aW5nIHRoZSBvYmplY3QgZm9yIHRlc3RpbmcuCi0g
ICAgW0NvbmRpdGlvbmFsPVdFQlhSX0hBTkRTXSBib29sZWFuIHNpbXVsYXRlSGFuZCA9IGZhbHNl
OworICAgIFtDb25kaXRpb25hbD1XRUJYUl9IQU5EU10gc2VxdWVuY2U8RmFrZVhSSm9pbnRTdGF0
ZUluaXQ+IGhhbmRKb2ludHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9GYWtlWFJKb2ludFN0YXRlSW5pdC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJK
b2ludFN0YXRlSW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZDIzNTE1MGI3NmRjZGQxNTEzMzIyYmU1MGQ2
MDU4M2I5OGEzZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zh
a2VYUkpvaW50U3RhdGVJbml0LmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAo
QykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVU
T1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBD
T05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFn
bWEgb25jZQorCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorCisjaW5jbHVkZSAiRmFrZVhSUmln
aWRUcmFuc2Zvcm1Jbml0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEZha2VY
UkpvaW50U3RhdGVJbml0IHsKKyAgICBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9zZTsKKyAg
ICBmbG9hdCByYWRpdXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAv
LyBFTkFCTEUoV0VCWFJfSEFORFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhS
Sm9pbnRTdGF0ZUluaXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMDE0MjA5ZmY4NGM5M2ZjZWExZDY2MzA1
NjEyNzhkYjM2OThiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
Ly8gVXNlZCB0byB1cGRhdGUgdGhlIHBvc2UgYW5kIHJhZGl1cyBvZiBhIGpvaW50CitbCisgICAg
RW5hYmxlZEJ5U2V0dGluZz1XZWJYUkVuYWJsZWQmV2ViWFJIYW5kSW5wdXRNb2R1bGVFbmFibGVk
LAorICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAorXSBkaWN0aW9uYXJ5IEZha2VYUkpvaW50
U3RhdGVJbml0IHsKKyAgICBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9zZTsKKyAgICBmbG9h
dCByYWRpdXMgPSAwLjA7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwCmluZGV4IDUyMjRkMjhlMDcyNjNkODhjM2JkYWM1ZGJk
OGJhZGY1MDA0OWQ5ZDMuLjdmMDEwYThmMWViYTVkNDMzNjg2MjZlMTc4NzI5ZDc1NmI1NzdkNjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJv
bGxlci5jcHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKICNpbmNsdWRl
ICJXZWJGYWtlWFJEZXZpY2UuaCIKKyNpbmNsdWRlICJYUkhhbmRKb2ludC5oIgogCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKQEAgLTM2LDYgKzM3LDExIEBAIHVzaW5nIElucHV0U291cmNlQnV0dG9u
ID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOwogdXNp
bmcgSW5wdXRTb3VyY2VQb3NlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0
U291cmNlUG9zZTsKIHVzaW5nIEJ1dHRvblR5cGUgPSBGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5
cGU7CiAKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCit1c2luZyBIYW5kSm9pbnRzVmVjdG9yID0g
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkhhbmRKb2ludHNWZWN0b3I7Cit1c2luZyBJ
bnB1dFNvdXJjZUhhbmRKb2ludCA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1
dFNvdXJjZUhhbmRKb2ludDsKKyNlbmRpZgorCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0
aHViLmlvL3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jeHItc3RhbmRhcmQtZ2FtZXBhZC1tYXBwaW5n
CiBjb25zdGV4cHIgc3RkOjphcnJheTxCdXR0b25UeXBlLCA1PiBYUl9TVEFOREFSRF9CVVRUT05T
ID0geyBCdXR0b25UeXBlOjpHcmlwLCBCdXR0b25UeXBlOjpUb3VjaHBhZCwgQnV0dG9uVHlwZTo6
VGh1bWJzdGljaywgQnV0dG9uVHlwZTo6T3B0aW9uYWxCdXR0b24sIEJ1dHRvblR5cGU6Ok9wdGlv
bmFsVGh1bWJzdGljayB9OwogCkBAIC01MSwxMyArNTcsMTMgQEAgV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VI
YW5kbGUKICAgICAsIG1fcHJvZmlsZXMoaW5pdC5wcm9maWxlcykKICAgICAsIG1fcHJpbWFyeVNl
bGVjdGVkKGluaXQuc2VsZWN0aW9uU3RhcnRlZCkKICAgICAsIG1fc2ltdWxhdGVTZWxlY3QoaW5p
dC5zZWxlY3Rpb25DbGlja2VkKQotI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICAsIG1fc2lt
dWxhdGVIYW5kKGluaXQuc2ltdWxhdGVIYW5kKQotI2VuZGlmCiB7CiAgICAgc2V0UG9pbnRlck9y
aWdpbihpbml0LnBvaW50ZXJPcmlnaW4sIGZhbHNlKTsKICAgICBzZXRHcmlwT3JpZ2luKGluaXQu
Z3JpcE9yaWdpbiwgZmFsc2UpOwogICAgIHNldFN1cHBvcnRlZEJ1dHRvbnMoaW5pdC5zdXBwb3J0
ZWRCdXR0b25zKTsKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCisgICAgdXBkYXRlSGFuZEpvaW50
cyhpbml0LmhhbmRKb2ludHMpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyOjpzZXRHcmlwT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2lu
LCBib29sIGVtdWxhdGVkUG9zaXRpb24pCkBAIC0xMTAsNyArMTE2LDcgQEAgSW5wdXRTb3VyY2Ug
V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpnZXRGcmFtZURhdGEoKQogICAgIHN0YXRlLnBvaW50
ZXJPcmlnaW4gPSBtX3BvaW50ZXJPcmlnaW47CiAgICAgc3RhdGUuZ3JpcE9yaWdpbiA9IG1fZ3Jp
cE9yaWdpbjsKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgc3RhdGUuc2ltdWxhdGVIYW5k
ID0gbV9zaW11bGF0ZUhhbmQ7CisgICAgc3RhdGUuaGFuZEpvaW50cyA9IG1faGFuZEpvaW50czsK
ICNlbmRpZgogCiAgICAgaWYgKG1fc2ltdWxhdGVTZWxlY3QpCkBAIC0xODIsNiArMTg4LDI4IEBA
IFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6QnV0dG9uT3JQbGFjZWhvbGRlciBXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OmdldEJ1dHRvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorI2lmIEVO
QUJMRShXRUJYUl9IQU5EUykKK3ZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjp1cGRhdGVI
YW5kSm9pbnRzKGNvbnN0IFZlY3RvcjxGYWtlWFJKb2ludFN0YXRlSW5pdD4mIGhhbmRKb2ludHMp
Cit7CisgICAgaWYgKGhhbmRKb2ludHMuaXNFbXB0eSgpIHx8IGhhbmRKb2ludHMuc2l6ZSgpICE9
IHN0YXRpY19jYXN0PHNpemVfdD4oWFJIYW5kSm9pbnQ6OkNvdW50KSkgeworICAgICAgICBtX2hh
bmRKb2ludHMgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBI
YW5kSm9pbnRzVmVjdG9yIHVwZGF0ZWRKb2ludHM7CisgICAgZm9yIChhdXRvIGhhbmRKb2ludCA6
IGhhbmRKb2ludHMpIHsKKyAgICAgICAgYXV0byB0cmFuc2Zvcm0gPSBXZWJGYWtlWFJEZXZpY2U6
OnBhcnNlUmlnaWRUcmFuc2Zvcm0oaGFuZEpvaW50LnBvc2UpOworICAgICAgICBpZiAodHJhbnNm
b3JtLmhhc0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICB1cGRhdGVkSm9pbnRzLmFwcGVuZChz
dGQ6Om51bGxvcHQpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAg
CisgICAgICAgIHVwZGF0ZWRKb2ludHMuYXBwZW5kKElucHV0U291cmNlSGFuZEpvaW50IHsgSW5w
dXRTb3VyY2VQb3NlIHsgdHJhbnNmb3JtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBmYWxzZSB9LCBo
YW5kSm9pbnQucmFkaXVzIH0pOworICAgIH0KKyAgICBtX2hhbmRKb2ludHMgPSB1cGRhdGVkSm9p
bnRzOworfQorI2VuZGlmIC8vIEVOQUJMRShXRUJYUl9IQU5EUykKKwogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKaW5kZXggNGQ2OTBmYTczZTUxZWQy
NjViOTk2OTk5YWFmN2M4NzZkNTk3YWMzYS4uY2EyMGE2OTQyOTZlZWVjMjg5ZjcyNjVkNjZmOTNm
NTU5ODg3ZWJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklu
cHV0Q29udHJvbGxlci5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZDb3Vu
dGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRT
KQorI2luY2x1ZGUgIkZha2VYUkpvaW50U3RhdGVJbml0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIgZmluYWwgOiBwdWJs
aWMgUmVmQ291bnRlZDxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IHsKQEAgLTU3LDYgKzYxLDEw
IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1cHBvcnRlZEJ1dHRvbnMoY29uc3QgVmVjdG9yPEZh
a2VYUkJ1dHRvblN0YXRlSW5pdD4mKTsKICAgICB2b2lkIHVwZGF0ZUJ1dHRvblN0YXRlKGNvbnN0
IEZha2VYUkJ1dHRvblN0YXRlSW5pdCYpOwogICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25zdCB7
IHJldHVybiBtX2Nvbm5lY3RlZDsgfQorICAgIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAg
ICB2b2lkIHVwZGF0ZUhhbmRKb2ludHMoY29uc3QgVmVjdG9yPEZha2VYUkpvaW50U3RhdGVJbml0
PiYpOworI2VuZGlmCiAKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRT
b3VyY2UgZ2V0RnJhbWVEYXRhKCk7CiAKQEAgLTgwLDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICBi
b29sIG1fcHJpbWFyeVNlbGVjdGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2ltdWxhdGVTZWxl
Y3QgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICBib29sIG1fc2ltdWxh
dGVIYW5kIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpIYW5kSm9pbnRzVmVjdG9yPiBtX2hhbmRKb2ludHM7CiAjZW5kaWYKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
LmlkbAppbmRleCBhOTlhMjYxZTg3N2Y4MGVmMGNiN2U4OGE1ZmE1OGFhMjE3ZjIyZjQ1Li5kOWM1
ODc5NWQwNGZjY2I3YmM4YzRjMDBhNDJhM2VhN2I5OGIwMmI2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsCkBAIC03Myw0ICs3
Myw2IEBACiAgICAgLy8gVXNlZCB0byB1cGRhdGUgdGhlIHN0YXRlIG9mIGEgYnV0dG9uIGN1cnJl
bnRseSBzdXBwb3J0ZWQgYnkgdGhlIGlucHV0IHNvdXJjZQogICAgIC8vIFdpbGwgbm90IGFkZCBz
dXBwb3J0IGZvciB0aGF0IGJ1dHRvbiBpZiBpdCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4K
ICAgICB1bmRlZmluZWQgdXBkYXRlQnV0dG9uU3RhdGUoRmFrZVhSQnV0dG9uU3RhdGVJbml0IGJ1
dHRvblN0YXRlKTsKKyAgICAKKyAgICBbQ29uZGl0aW9uYWw9V0VCWFJfSEFORFNdIHVuZGVmaW5l
ZCB1cGRhdGVIYW5kSm9pbnRzKHNlcXVlbmNlPEZha2VYUkpvaW50U3RhdGVJbml0PiBoYW5kSm9p
bnRzKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKaW5kZXggNTQ3Y2RiY2M3
ZjEwNzU1ZTdkYzYyYmY3ZjFhNDAzMzdkNTFmZTczOC4uM2Q2NjJmMTBjNDMyMjQ2MDY4MzY3NjFi
ZmEzOTg0NGJkNTIzYjJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJY
UlRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcApAQCAt
MzksNiArMzksMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJYUlRlc3Q6On5XZWJYUlRl
c3QoKSA9IGRlZmF1bHQ7CiAKK3N0YXRpYyBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZlYXR1cmVMaXN0
IHBhcnNlRmVhdHVyZXMoY29uc3QgVmVjdG9yPEpTQzo6SlNWYWx1ZT4mIGZlYXR1cmVMaXN0LCBT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQoreworICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGNv
bnRleHQuZ2xvYmFsT2JqZWN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogZmVh
dHVyZUxpc3QpIHsKKyAgICAgICAgICAgIGF1dG8gZmVhdHVyZVN0cmluZyA9IGZlYXR1cmUudG9X
VEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGlmIChhdXRvIHNlc3Npb25GZWF0
dXJlID0gUGxhdGZvcm1YUjo6cGFyc2VTZXNzaW9uRmVhdHVyZURlc2NyaXB0b3IoZmVhdHVyZVN0
cmluZykpCisgICAgICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCpzZXNzaW9uRmVhdHVyZSk7
CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZlYXR1cmVzOworfQorCiB2b2lkIFdlYlhS
VGVzdDo6c2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNv
bnRleHQsIGNvbnN0IEZha2VYUkRldmljZUluaXQmIGluaXQsIFdlYkZha2VYUkRldmljZVByb21p
c2UmJiBwcm9taXNlKQogewogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8v
d2VieHItdGVzdC1hcGkvI2RvbS14cnRlc3Qtc2ltdWxhdGVkZXZpY2Vjb25uZWN0aW9uCkBAIC00
OCwxNiArNjEsMTIgQEAgdm9pZCBXZWJYUlRlc3Q6OnNpbXVsYXRlRGV2aWNlQ29ubmVjdGlvbihT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdAogCiAgICAgICAgIGRldmljZS0+
c2V0Vmlld3MoaW5pdC52aWV3cyk7CiAKLSAgICAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0
dXJlTGlzdCBmZWF0dXJlczsKLSAgICAgICAgaWYgKGluaXQuc3VwcG9ydGVkRmVhdHVyZXMpIHsK
LSAgICAgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBjb250ZXh0Lmdsb2JhbE9iamVj
dCgpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogaW5pdC5zdXBwb3J0
ZWRGZWF0dXJlcy52YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZmVhdHVyZVN0
cmluZyA9IGZlYXR1cmUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAgICAg
ICAgICAgaWYgKGF1dG8gc2Vzc2lvbkZlYXR1cmUgPSBQbGF0Zm9ybVhSOjpwYXJzZVNlc3Npb25G
ZWF0dXJlRGVzY3JpcHRvcihmZWF0dXJlU3RyaW5nKSkKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZlYXR1cmVzLmFwcGVuZCgqc2Vzc2lvbkZlYXR1cmUpOwotICAgICAgICAgICAgICAgIH0KLSAg
ICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZlYXR1
cmVMaXN0IHN1cHBvcnRlZEZlYXR1cmVzOworICAgICAgICBpZiAoaW5pdC5zdXBwb3J0ZWRGZWF0
dXJlcykKKyAgICAgICAgICAgIHN1cHBvcnRlZEZlYXR1cmVzID0gcGFyc2VGZWF0dXJlcyhpbml0
LnN1cHBvcnRlZEZlYXR1cmVzLnZhbHVlKCksIGNvbnRleHQpOworICAgICAgICBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZlYXR1cmVMaXN0IGVuYWJsZWRGZWF0dXJlczsKKyAgICAgICAgaWYgKGluaXQu
ZW5hYmxlZEZlYXR1cmVzKQorICAgICAgICAgICAgZW5hYmxlZEZlYXR1cmVzID0gcGFyc2VGZWF0
dXJlcyhpbml0LmVuYWJsZWRGZWF0dXJlcy52YWx1ZSgpLCBjb250ZXh0KTsKIAogICAgICAgICBp
ZiAoaW5pdC5ib3VuZHNDb29yZGluYXRlcykgewogICAgICAgICAgICAgaWYgKGluaXQuYm91bmRz
Q29vcmRpbmF0ZXMtPnNpemUoKSA8IDMpIHsKQEAgLTg0LDggKzkzLDEwIEBAIHZvaWQgV2ViWFJU
ZXN0OjpzaW11bGF0ZURldmljZUNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29u
dGV4dCwgY29uc3QKICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRNb2Rlcy5hcHBlbmQoWFJTZXNz
aW9uTW9kZTo6SW1tZXJzaXZlVnIpOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yIChhdXRvJiBt
b2RlIDogc3VwcG9ydGVkTW9kZXMpCi0gICAgICAgICAgICBzaW11bGF0ZWREZXZpY2Uuc2V0U3Vw
cG9ydGVkRmVhdHVyZXMobW9kZSwgZmVhdHVyZXMpOworICAgICAgICBmb3IgKGF1dG8mIG1vZGUg
OiBzdXBwb3J0ZWRNb2RlcykgeworICAgICAgICAgICAgc2ltdWxhdGVkRGV2aWNlLnNldFN1cHBv
cnRlZEZlYXR1cmVzKG1vZGUsIHN1cHBvcnRlZEZlYXR1cmVzKTsKKyAgICAgICAgICAgIHNpbXVs
YXRlZERldmljZS5zZXRFbmFibGVkRmVhdHVyZXMobW9kZSwgZW5hYmxlZEZlYXR1cmVzKTsKKyAg
ICAgICAgfQogCiAgICAgICAgIG1fY29udGV4dC0+cmVnaXN0ZXJTaW11bGF0ZWRYUkRldmljZUZv
clRlc3Rpbmcoc2ltdWxhdGVkRGV2aWNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9XZWJYUlRlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmgK
aW5kZXggYjFjYzNkYjNhZTRmMzA5ZDE4ZTgwOGZkNzcxMmJhMWIyMmI3MDc1MS4uNjAyOTc1NWM5
YWE3ODBiNzVlMjNmYTZjMWE2MTViMWVmNjRiYzIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJYUlRlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhS
VGVzdC5oCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPEZha2VYUlZp
ZXdJbml0PiB2aWV3czsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxKU0M6OkpTVmFs
dWU+PiBzdXBwb3J0ZWRGZWF0dXJlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SlND
OjpKU1ZhbHVlPj4gZW5hYmxlZEZlYXR1cmVzOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPEZha2VYUkJvdW5kc1BvaW50Pj4gYm91bmRzQ29vcmRpbmF0ZXM7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvV2ViWFJUZXN0LmlkbAppbmRleCA4ZDBiMDZiMDNhZTY3YWE2NTRlMmVhYzE3OTgxOTg2
Mjk4OTZmOWJjLi5lNjY3MzliNjljZWI4MzJlN2NmOGI1ZTU3ZTkxYjZjOTk2ZDdkZjM0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5pZGwKKysrIGIvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaWRsCkBAIC02MSw2ICs2MSwxMCBAQAogICAgIC8v
IE5PVEU6IFRoaXMgaXMgbWVhbnQgdG8gZW11bGF0ZSBoYXJkd2FyZSBzdXBwb3J0LCBub3Qgd2hl
dGhlciBhIGZlYXR1cmUgaXMKICAgICAvLyBjdXJyZW50bHkgYXZhaWxhYmxlIChlLmcuIGJvdW5k
cyBub3QgYmVpbmcgdHJhY2tlZCBwZXIgYmVsb3cpCiAgICAgc2VxdWVuY2U8YW55PiBzdXBwb3J0
ZWRGZWF0dXJlczsKKyAgICAKKyAgICAvLyBUaGUgbGlzdCBvZiBmZWF0dXJlcyB0aGF0IGFyZSBh
dXRvbWF0aWNhbGx5IGVuYWJsZWQgYW5kIGRvCisgICAgLy8gbm90IG5lZWQgZnVydGhlciBleHBs
aWNpdCBjb25zZW50LgorICAgIHNlcXVlbmNlPGFueT4gZW5hYmxlZEZlYXR1cmVzOwogCiAgICAg
Ly8gVGhlIGJvdW5kcyBjb29yZGluYXRlcy4gSWYgZW1wdHksIG5vIGJvdW5kZWQgcmVmZXJlbmNl
IHNwYWNlIGlzIGN1cnJlbnRseSB0cmFja2VkLgogICAgIC8vIElmIG5vdCwgbXVzdCBoYXZlIGF0
IGxlYXN0IHRocmVlIGVsZW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQv
WFIvWFJEZXZpY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVBy
b3h5LmNwcAppbmRleCA4MGYwODUzMjEwYzZkNGJjMjQyZGEzYWFlOGZkZTBiMGIxZDZmZjdlLi4w
ZmE3NjBiOTJiODY3MmU0OTQ4N2M1NTgwNjdhZmYyZjNhZDNjODJjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcApAQCAtNjgsOCArNjgsMjEgQEAgdm9pZCBYUkRl
dmljZVByb3h5Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6U2Vz
c2lvbk1vZGUgc2Vzc2kKICAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vzc2lv
bk1vZGU6OkltbWVyc2l2ZVZyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV94clN5c3Rl
bSkKLSAgICAgICAgbV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7
CisgICAgaWYgKCFtX3hyU3lzdGVtKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3hyU3lzdGVt
LT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKworICAgIC8vIFRoaXMgaXMgY2Fs
bGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIG9mIFdlYlhSU2Vzc2lvbi4gU2luY2Ugc2Vzc2lvbkRp
ZEluaXRpYWxpemVJbnB1dFNvdXJjZXMoKQorICAgIC8vIGVuZHMgdXAgY2FsbGluZyBxdWV1ZVRh
c2tLZWVwaW5nT2JqZWN0QWxpdmUoKSB3aGljaCByZWZzIHRoZSBXZWJYUlNlc3Npb24gb2JqZWN0
LCB3ZQorICAgIC8vIHNob3VsZCBkZWxheSB0aGlzIGNhbGwgYWZ0ZXIgdGhlIFdlYlhSU2Vzc2lv
biBoYXMgZmluaXNoZWQgY29uc3RydWN0aW9uLgorICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0aGlz
LCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSgpIHsKKyAgICAgICAgaWYgKCF3ZWFrVGhp
cykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHJhY2tpbmdBbmRSZW5kZXJp
bmdDbGllbnQoKSkKKyAgICAgICAgICAgIHRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KCktPnNl
c3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzKHsgfSk7CisgICAgfSk7ICAgIAogfQogCiB2
b2lkIFhSRGV2aWNlUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDBlMTY0ZmVlOWM0MmNkYTAzYzlhOGM1MjlmNTEyNzI3MDZhYWE4MTMuLjIzNzJmZTI5MWVjMGM0
MTc0MmFhMmQyNjIyZjFlZjdkMTA5ZTZjNGMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAyMi0w
NC0wNyAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIElt
cGxlbWVudCB0aGUgV2ViWFIgSGFuZCBJbnB1dCBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBtb3JlIGNvbnN0YW50cyBmb3IgYSB2YWxp
ZCBqb2ludCB2YWx1ZSBhbmQgZGV2aWNlIGluaXQgZGljdGlvbmFyeQorICAgICAgICB0aGF0IHJl
cHJlc2VudHMgYSBkZXZpY2Ugd2l0aCBoYW5kIHRyYWNraW5nIHN1cHBvcnQgZW5hYmxlZC4KKwor
ICAgICAgICBBZGQgbmV3IHRlc3RzIGZvciB0ZXN0aW5nIGhhbmQgaW5wdXQgcmVsYXRlZCBtZXRo
b2RzIGluIFhSRnJhbWUuCisKKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2Vi
eHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanM6CisgICAgICAgICogaHR0cC93cHQvd2Vi
eHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50
X3Bvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZy
YW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9zZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9p
bnRfcG9zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hy
RnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS1leHBlY3RlZC50eHQ6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLmh0bWw6IEFk
ZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21pc3Np
bmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dl
YnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21pc3Npbmdfam9pbnRfcG9zZS5odG1sOiBBZGRlZC4K
KyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckhhbmQtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckhhbmQuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvd2VieHIveHJIYW5kSW5wdXRfZ2MuaHRtbDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW4v
VGVzdEV4cGVjdGF0aW9uczogU2tpcCBvdGhlciBmb2xkZXJzIHdpdGggV2ViWFIgdGVzdHMKKwog
MjAyMi0wNC0wNiAgSiBQYXNjb2UgIDxqX3Bhc2NvZUBhcHBsZS5jb20+CiAKICAgICAgICAgRml4
IGV4cGVjdGVkLCBhY3R1YWwgbGlua3MgZm9yIHZhcmlhbnQtYmFzZWQgaW1wb3J0ZWQgd3B0IHRl
c3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2Vi
eHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMKaW5kZXgg
Y2I4YmRmZDk5ZjFhMGIxMjIyMWU4MDRhODU0MTUwMzYwZjY3NjYzNi4uYTA5ZGNjMTQyODZiMTlm
MTJhOTc0NDRmMzk3MmRkYTY3ZjI4MmE2OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0
YW50c19zaW5nbGVfdmlldy5qcwpAQCAtNDcsNiArNDcsNzQgQEAgY29uc3QgVkFMSURfR1JJUF9U
UkFOU0ZPUk0gPSB7CiAgICAgb3JpZW50YXRpb246IFswLCAwLCAwLCAxXQogfTsKIAorY29uc3Qg
Sk9JTlRfQ09VTlQgPSAyNTsKK2NvbnN0IFRFU1RfSEFORF9KT0lOVF9SQURJVVMgPSAwLjAyOwor
Citjb25zdCBWQUxJRF9IQU5EX0pPSU5UID0geworICAgIHBvc2U6IFZBTElEX1BPU0VfVFJBTlNG
T1JNLAorICAgIHJhZGl1czogVEVTVF9IQU5EX0pPSU5UX1JBRElVUworfTsKKworY29uc3QgVkFM
SURfSEFORF9KT0lOVFMgPSBbCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5E
X0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAg
ICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFO
RF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisg
ICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hB
TkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAor
ICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9I
QU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwK
KyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURf
SEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQs
CisgICAgVkFMSURfSEFORF9KT0lOVAorXTsKKworY29uc3QgSU5WQUxJRF9IQU5EX0pPSU5UID0g
eworCit9OworCitjb25zdCBIQU5EX0pPSU5UU19XSVRIX09ORV9JTlZBTElEID0gWworICAgIFZB
TElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pP
SU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBW
QUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9K
T0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAg
VkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRf
Sk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAg
IFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5E
X0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAg
ICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFO
RF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIElOVkFMSURfSEFORF9KT0lOVAor
XTsKKwogLy8gQSB2YWxpZCBpbnB1dCBwb2ludGVyIG9mZnNldCBmb3IgIHdoZW4gd2UgZG9uJ3Qg
Y2FyZSBhYm91dCBzcGVjaWZpYyB2YWx1ZXMKIGNvbnN0IFZBTElEX1BPSU5URVIgPSBbMSwgMCwg
MCwgMCwKICAgICAgICAgICAgICAgICAgICAgICAgMCwgMSwgMCwgMCwKQEAgLTE2MCw2ICsyMjgs
MTcgQEAgY29uc3QgVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFID0gewogICAgIGludGVyYWN0aW9u
TW9kZTogIndvcmxkLXNwYWNlIgogfTsKIAorY29uc3QgVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNF
X1dJVEhfSEFORF9UUkFDS0lORyA9IHsKKyAgICBzdXBwb3J0c0ltbWVyc2l2ZTogdHJ1ZSwKKyAg
ICBzdXBwb3J0ZWRNb2RlczogWyAiaW5saW5lIiwgImltbWVyc2l2ZS12ciJdLAorICAgIHZpZXdz
OiBWQUxJRF9WSUVXUywKKyAgICB2aWV3ZXJPcmlnaW46IElERU5USVRZX1RSQU5TRk9STSwKKyAg
ICBzdXBwb3J0ZWRGZWF0dXJlczogQUxMX0ZFQVRVUkVTLAorICAgIGVuYWJsZWRGZWF0dXJlczog
WyAiaGFuZC10cmFja2luZyIgXSwKKyAgICBlbnZpcm9ubWVudEJsZW5kTW9kZTogIm9wYXF1ZSIs
CisgICAgaW50ZXJhY3Rpb25Nb2RlOiAid29ybGQtc3BhY2UiCit9OworCiBjb25zdCBUUkFDS0VE
X0lNTUVSU0lWRV9ERVZJQ0VfTk9fSEFORF9UUkFDS0lORyA9IHsKICAgICBzdXBwb3J0c0ltbWVy
c2l2ZTogdHJ1ZSwKICAgICBzdXBwb3J0ZWRNb2RlczogWyAiaW5saW5lIiwgImltbWVyc2l2ZS12
ciJdLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxs
Sm9pbnRSYWRpaS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZy
YW1lX2ZpbGxKb2ludFJhZGlpLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wMDJiYjAxYmJmZGJl
NzU0Mzk5NjQ5YjlhOTk3ZDMzY2EwZDQ1ZWU5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaS1leHBlY3RlZC50eHQKQEAg
LTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCBYUkZyYW1lLmZpbGxKb2ludFJhZGlpIC0gd2ViZ2wK
K1BBU1MgVGVzdCBYUkZyYW1lLmZpbGxKb2ludFJhZGlpIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNDVhYTI1OGNkYzYyMDBjMDFmMTM4NmQ2MDE0YTZkZDcxMzdhMThhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9p
bnRSYWRpaS5odG1sCkBAIC0wLDAgKzEsNTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii4uLy4uL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0
PgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIlRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRp
aSI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklD
RV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNz
aW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKKworICBsZXQg
aW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRyb2xsZXIuc2ltdWxhdGVJbnB1dFNvdXJjZUNv
bm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJub25lIiwKKyAgICB0YXJnZXRSYXlNb2RlOiAi
dHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5T
Rk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgaGFuZEpvaW50czogVkFMSURfSEFORF9KT0lO
VFMsCisgIH0pOworCisgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9j
YWwnKQorICAgIC50aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUp
ID0+IHsKKworICAgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAg
IGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7CisgICAg
ICAgIGxldCBoYW5kID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBhc3Nl
cnRfbm90X2VxdWFscyhoYW5kLCBudWxsKTsKKworICAgICAgICBhc3NlcnRfdGhyb3dzX2pzKFR5
cGVFcnJvciwgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBsZXQgcmFkaWlBcnJheVdpdGhXcm9u
Z1NpemUgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NPVU5UIC0gMSk7CisgICAgICAgICAgICB4
ckZyYW1lLmZpbGxKb2ludFJhZGlpKGhhbmQudmFsdWVzKCksIHJhZGlpQXJyYXlXaXRoV3JvbmdT
aXplKTsKKyAgICAgICAgfSk7CisKKyAgICAgICAgbGV0IHJhZGlpID0gbmV3IEZsb2F0MzJBcnJh
eShKT0lOVF9DT1VOVCk7CisgICAgICAgIGxldCBhbGxWYWxpZCA9IHhyRnJhbWUuZmlsbEpvaW50
UmFkaWkoaGFuZC52YWx1ZXMoKSwgcmFkaWkpOworICAgICAgICBhc3NlcnRfdHJ1ZShhbGxWYWxp
ZCk7CisgICAgICAgIGZvciAocmFkaXVzIG9mIHJhZGlpKSB7CisgICAgICAgICAgICBhc3NlcnRf
YXBwcm94X2VxdWFscyhyYWRpdXMsIFRFU1RfSEFORF9KT0lOVF9SQURJVVMsIEZMT0FUX0VQU0lM
T04pOworICAgICAgICB9CisKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAgc2Vz
c2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nl
c3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNl
SW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRy
YWNraW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRp
aV9taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjMWY3Y2QzN2M2
ZGJjYTg2ZjZiZjZiZjQxMmMyNDk5OTE1NDdjNTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRf
cG9zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCBYUkZyYW1lLmZp
bGxKb2ludFJhZGlpIHdoZXJlIHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBwb3NlIC0g
d2ViZ2wKK1BBU1MgVGVzdCBYUkZyYW1lLmZpbGxKb2ludFJhZGlpIHdoZXJlIHRoZSBoYW5kIGhh
cyBvbmUgbWlzc2luZyBqb2ludCBwb3NlIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWlfbWlzc2luZ19qb2ludF9w
b3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJh
ZGlpX21pc3Npbmdfam9pbnRfcG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwOTE1ZWM4MWI4OTNhNWFj
NTdkY2JmNWViYzgyNzY4ZTRmZmFjOTQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9zZS5o
dG1sCkBAIC0wLDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVz
dF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0PgorbGV0IHRlc3ROYW1lID0gIlRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSB3aGVyZSB0
aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSI7CisKK2xldCBmYWtlRGV2aWNlSW5p
dFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisK
K2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxl
ciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmlj
ZUNvbnRyb2xsZXIuc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5l
c3M6ICJub25lIiwKKyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBw
b2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10s
CisgICAgaGFuZEpvaW50czogSEFORF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCwKKyAgfSk7CisK
KyAgcmV0dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRo
ZW4oKHJlZmVyZW5jZVNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAg
ICBmdW5jdGlvbiBvbkZyYW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoc2Vzc2lvbi5pbnB1dFNvdXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQg
PSBzZXNzaW9uLmlucHV0U291cmNlc1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxz
KGhhbmQsIG51bGwpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGhhbmQuc2l6ZSwgSk9JTlRfQ09V
TlQpOworCisgICAgICAgIGxldCByYWRpaSA9IG5ldyBGbG9hdDMyQXJyYXkoSk9JTlRfQ09VTlQp
OworICAgICAgICBsZXQgYWxsVmFsaWQgPSB4ckZyYW1lLmZpbGxKb2ludFJhZGlpKGhhbmQudmFs
dWVzKCksIHJhZGlpKTsKKyAgICAgICAgYXNzZXJ0X2ZhbHNlKGFsbFZhbGlkKTsKKyAgICAgICAg
Zm9yIChyYWRpdXMgb2YgcmFkaWkpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMocmFkaXVz
LCBOYU4pOworICAgICAgICB9CisKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAg
c2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hy
X3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2
aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5k
LXRyYWNraW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE3MTAwYjI5MDkyNzQ3NDQ1N2RkODM4ZGZhZTc0NDUzYjYyY2RmNzYKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCBYUkZyYW1lLmZpbGxQb3NlcyAtIHdl
YmdsCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsUG9zZXMgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
Mzc3YjIxMjkxNzZlNzA5MGVmYmNhNjYyZGE0Y2Q1YjM4ZDI0YTJkNAotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwKQEAg
LTAsMCArMSw1NyBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0
aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0
YW50c19zaW5nbGVfdmlldy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vd2VieHIv
cmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+Cits
ZXQgdGVzdE5hbWUgPSAiVGVzdCBYUkZyYW1lLmZpbGxQb3NlcyI7CisKK2xldCBmYWtlRGV2aWNl
SW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7
CisKK2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJv
bGxlciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURl
dmljZUNvbnRyb2xsZXIuc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRl
ZG5lc3M6ICJub25lIiwKKyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAg
ICBwb2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczog
W10sCisgICAgaGFuZEpvaW50czogVkFMSURfSEFORF9KT0lOVFMsCisgIH0pOworCisgIHJldHVy
biBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50aGVuKChyZWZl
cmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKworICAgICAgZnVuY3Rp
b24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNl
c3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5kID0gc2Vzc2lv
bi5pbnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhoYW5kLCBu
dWxsKTsKKworICAgICAgICBjb25zdCBmbG9hdHNQZXJUcmFuc2Zvcm0gPSAxNjsKKyAgICAgICAg
YXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbGV0
IHRyYW5zZm9ybXNBcnJheVdpdGhXcm9uZ1NpemUgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NP
VU5UICogZmxvYXRzUGVyVHJhbnNmb3JtIC0gMSk7CisgICAgICAgICAgICB4ckZyYW1lLmZpbGxQ
b3NlcyhoYW5kLnZhbHVlcygpLCB0cmFuc2Zvcm1zQXJyYXlXaXRoV3JvbmdTaXplKTsKKyAgICAg
ICAgfSk7CisKKyAgICAgICAgbGV0IHRyYW5zZm9ybXMgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5U
X0NPVU5UICogZmxvYXRzUGVyVHJhbnNmb3JtKTsKKyAgICAgICAgbGV0IGFsbFZhbGlkID0geHJG
cmFtZS5maWxsUG9zZXMoaGFuZC52YWx1ZXMoKSwgcmVmZXJlbmNlU3BhY2UsIHRyYW5zZm9ybXMp
OworICAgICAgICBhc3NlcnRfdHJ1ZShhbGxWYWxpZCk7CisgICAgICAgIAorICAgICAgICBmb3Ig
KHZhciBpID0gMDsgaSA8IEpPSU5UX0NPVU5UOyArK2kpIHsKKyAgICAgICAgICAgIGxldCB0cmFu
c2Zvcm1TdGFydEluZGV4ID0gaSAqIGZsb2F0c1BlclRyYW5zZm9ybTsKKyAgICAgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgZmxvYXRzUGVyVHJhbnNmb3JtOyArK2opIHsKKyAgICAgICAgICAg
ICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyh0cmFuc2Zvcm1zW3RyYW5zZm9ybVN0YXJ0SW5kZXgg
KyBqXSwgVkFMSURfUE9TRV9NQVRSSVhbal0sIEZMT0FUX0VQU0lMT04pOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAgc2Vzc2lv
bi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nlc3Np
b25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5p
dFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRyYWNr
aW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VieHIveHJGcmFtZV9maWxsUG9zZXNfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9p
bnRfcG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQyOTQ0ODc0Zjg2NWNkNDYxZmJmYzVi
OGMxYmNjMjdkNDE0ODQxNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCBYUkZyYW1lLmZpbGxQb3NlcyB3aGVyZSB0aGUg
aGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSAtIHdlYmdsCitQQVNTIFRlc3QgWFJGcmFt
ZS5maWxsUG9zZXMgd2hlcmUgdGhlIGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UgLSB3
ZWJnbDIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9m
aWxsUG9zZXNfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li41M2U3NThlMDE4YWQzZjI0ZDNhOGI5MmE3ZjExNmQyNTAzNGY0YTY3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXNfbWlzc2lu
Z19qb2ludF9wb3NlLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2Ny
aXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50c19zaW5nbGVfdmlldy5qcyI+PC9zY3JpcHQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+PC9z
Y3JpcHQ+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAiVGVzdCBYUkZyYW1lLmZpbGxQb3Nl
cyB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSI7CisKK2xldCBmYWtl
RGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJB
Q0tJTkc7CisKK2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNl
Q29udHJvbGxlciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0g
ZmFrZURldmljZUNvbnRyb2xsZXIuc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAg
IGhhbmRlZG5lc3M6ICJub25lIiwKKyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVy
IiwKKyAgICBwb2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9m
aWxlczogW10sCisgICAgaGFuZEpvaW50czogSEFORF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCwK
KyAgfSk7CisKKyAgcmV0dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcp
CisgICAgLnRoZW4oKHJlZmVyZW5jZVNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4g
eworCisgICAgICBmdW5jdGlvbiBvbkZyYW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoc2Vzc2lvbi5pbnB1dFNvdXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAg
bGV0IGhhbmQgPSBzZXNzaW9uLmlucHV0U291cmNlc1swXS5oYW5kCisgICAgICAgIGFzc2VydF9u
b3RfZXF1YWxzKGhhbmQsIG51bGwpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGhhbmQuc2l6ZSwg
Sk9JTlRfQ09VTlQpOworCisgICAgICAgIGNvbnN0IGZsb2F0c1BlclRyYW5zZm9ybSA9IDE2Owor
ICAgICAgICBsZXQgdHJhbnNmb3JtcyA9IG5ldyBGbG9hdDMyQXJyYXkoSk9JTlRfQ09VTlQgKiBm
bG9hdHNQZXJUcmFuc2Zvcm0pOworICAgICAgICBsZXQgYWxsVmFsaWQgPSB4ckZyYW1lLmZpbGxQ
b3NlcyhoYW5kLnZhbHVlcygpLCByZWZlcmVuY2VTcGFjZSwgdHJhbnNmb3Jtcyk7CisgICAgICAg
IGFzc2VydF9mYWxzZShhbGxWYWxpZCk7CisgICAgICAgIAorICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IEpPSU5UX0NPVU5UICogZmxvYXRzUGVyVHJhbnNmb3JtOyArK2kpIHsKKyAgICAgICAg
ICAgIGFzc2VydF9lcXVhbHModHJhbnNmb3Jtc1tpXSwgTmFOKTsKKyAgICAgICAgfQorCisgICAg
ICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZy
YW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAg
dGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUt
dnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsiaGFuZC10cmFja2luZyJdIH0pOworCis8L3Njcmlw
dD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9p
bnRQb3NlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVf
Z2V0Sm9pbnRQb3NlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTI0ZjA1MWYyOWVhNTA3NjZl
OTlkNGFkMzU1Y2MwYmMzY2ZlYzZjCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5nZXRKb2ludFBvc2UgLSB3ZWJnbAorUEFTUyBUZXN0
IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUwNzhk
OGZmZDYxMjMzMTk1MDllZjgxYjNlZDg2OTUyMjJkYjkyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sCkBAIC0w
LDAgKzEsNDggQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGls
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFu
dHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3dlYnhyL3Jl
c291cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorbGV0
IHRlc3ROYW1lID0gIlRlc3QgWFJGcmFtZS5nZXRKb2ludFBvc2UiOworCitsZXQgZmFrZURldmlj
ZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5H
OworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRy
b2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VE
ZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5k
ZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisg
ICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6
IFtdLAorICAgIGhhbmRKb2ludHM6IFZBTElEX0hBTkRfSk9JTlRTLAorICB9KTsKKworICByZXR1
cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhlbigocmVm
ZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1bmN0
aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhz
ZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9IHNlc3Np
b24uaW5wdXRTb3VyY2VzWzBdLmhhbmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZCwg
bnVsbCk7CisgICAgICAgIAorICAgICAgICBsZXQgam9pbnRTcGFjZSA9IGhhbmQuZ2V0KCJ3cmlz
dCIpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhqb2ludFNwYWNlLCBudWxsKTsKKyAgICAg
ICAgCisgICAgICAgIGxldCBqb2ludFBvc2UgPSB4ckZyYW1lLmdldEpvaW50UG9zZShqb2ludFNw
YWNlLCByZWZlcmVuY2VTcGFjZSk7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGpvaW50UG9z
ZSwgbnVsbCk7CisgICAgICAgIGFzc2VydF9hcHByb3hfZXF1YWxzKGpvaW50UG9zZS5yYWRpdXMs
IFRFU1RfSEFORF9KT0lOVF9SQURJVVMsIEZMT0FUX0VQU0lMT04pOworICAgICAgICBhc3NlcnRf
bWF0cml4X2FwcHJveF9lcXVhbHMoam9pbnRQb3NlLnRyYW5zZm9ybS5tYXRyaXgsIFZBTElEX1BP
U0VfTUFUUklYLCBGTE9BVF9FUFNJTE9OKTsKKworICAgICAgICByZXNvbHZlKCk7CisgICAgICB9
CisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsKKyAgfSkpOwor
fTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24s
IGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJywgeyBvcHRpb25hbEZlYXR1cmVz
OiBbImhhbmQtdHJhY2tpbmciXSB9KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bv
c2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRK
b2ludFBvc2VfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMTlk
NzliMDNhM2U2ODk3NDhlZWNkNWJkN2JkMDU1MmNhNzY5ZWY2Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19q
b2ludF9wb3NlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBUZXN0IFhSRnJh
bWUuZ2V0Sm9pbnRQb3NlIHdoZXJlIHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBwb3Nl
IC0gd2ViZ2wKK1BBU1MgVGVzdCBYUkZyYW1lLmdldEpvaW50UG9zZSB3aGVyZSB0aGUgaGFuZCBo
YXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSAtIHdlYmdsMgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bv
c2UuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3Nl
X21pc3Npbmdfam9pbnRfcG9zZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzM2UxYjFlYjk2MjQ2Y2MwYzM3
NzhmNWU3NzZhZDk2YmU4ZTE4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApA
QCAtMCwwICsxLDQ5IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJf
dXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29u
c3RhbnRzX3NpbmdsZV92aWV3LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi93ZWJ4
ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4K
K2xldCB0ZXN0TmFtZSA9ICJUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIHdoZXJlIHRoZSBoYW5k
IGhhcyBvbmUgbWlzc2luZyBqb2ludCBwb3NlIjsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1z
ID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFX1dJVEhfSEFORF9UUkFDS0lORzsKKworbGV0IHRl
c3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0LCBz
ZXNzaW9uT2JqZWN0cykgeworCisgIGxldCBpbnB1dF9zb3VyY2UgPSBmYWtlRGV2aWNlQ29udHJv
bGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbih7CisgICAgaGFuZGVkbmVzczogIm5v
bmUiLAorICAgIHRhcmdldFJheU1vZGU6ICJ0cmFja2VkLXBvaW50ZXIiLAorICAgIHBvaW50ZXJP
cmlnaW46IFZBTElEX1BPSU5URVJfVFJBTlNGT1JNLAorICAgIHByb2ZpbGVzOiBbXSwKKyAgICBo
YW5kSm9pbnRzOiBIQU5EX0pPSU5UU19XSVRIX09ORV9JTlZBTElELAorICB9KTsKKworICByZXR1
cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhlbigocmVm
ZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1bmN0
aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhz
ZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9IHNlc3Np
b24uaW5wdXRTb3VyY2VzWzBdLmhhbmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZCwg
bnVsbCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaGFuZC5zaXplLCBKT0lOVF9DT1VOVCk7CisK
KyAgICAgICAgbGV0IHdyaXN0Sm9pbnRTcGFjZSA9IGhhbmQuZ2V0KCJ3cmlzdCIpOworICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyh3cmlzdEpvaW50U3BhY2UsIG51bGwpOworICAgICAgICBhc3Nl
cnRfZXF1YWxzKHhyRnJhbWUuZ2V0Sm9pbnRQb3NlKHdyaXN0Sm9pbnRTcGFjZSwgcmVmZXJlbmNl
U3BhY2UpLCBudWxsKTsKKworICAgICAgICBsZXQgcGlua3lUaXBKb2ludFNwYWNlID0gaGFuZC5n
ZXQoInBpbmt5LWZpbmdlci10aXAiKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMocGlua3lU
aXBKb2ludFNwYWNlLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh4ckZyYW1lLmdldEpv
aW50UG9zZShwaW5reVRpcEpvaW50U3BhY2UsIHJlZmVyZW5jZVNwYWNlKSwgbnVsbCk7CisKKyAg
ICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9u
RnJhbWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAor
ICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2
ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2Ny
aXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5kLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZC1leHBlY3RlZC50eHQK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uM2Q1YTBmMjQwNjVlOTY1NTU5M2RhOGViNmIxMmY4ZTA3ZGI0ZDc3MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZC1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCB0aGUgWFJIYW5kIEFQSSAtIHdlYmds
CitQQVNTIFRlc3QgdGhlIFhSSGFuZCBBUEkgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5kLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJ4ci94ckhhbmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYmYzNjI2ZTRiNzY2NmU2MzUxNTVjMzQ1ZTEz
OGE5N2VlMDA1OGI2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
eHIveHJIYW5kLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy93ZWJ4cl90ZXN0X2NvbnN0YW50c19zaW5nbGVfdmlldy5qcyI+PC9zY3JpcHQ+CisKKzxzY3Jp
cHQ+CitsZXQgdGVzdE5hbWUgPSAiVGVzdCB0aGUgWFJIYW5kIEFQSSI7CisKK2xldCBmYWtlRGV2
aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJ
Tkc7CisKK2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29u
dHJvbGxlciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFr
ZURldmljZUNvbnRyb2xsZXIuc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhh
bmRlZG5lc3M6ICJub25lIiwKKyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwK
KyAgICBwb2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxl
czogW10sCisgICAgaGFuZEpvaW50czogVkFMSURfSEFORF9KT0lOVFMsCisgIH0pOworCisgIHJl
dHVybiBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50aGVuKChy
ZWZlcmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKworICAgICAgZnVu
Y3Rpb24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxz
KHNlc3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5kID0gc2Vz
c2lvbi5pbnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhoYW5k
LCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhoYW5kLnNpemUsIDI1KTsKKyAgICAgICAg
CisgICAgICAgIGxldCB3cmlzdEpvaW50U3BhY2UgPSBoYW5kLmdldCgid3Jpc3QiKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyh3cmlzdEpvaW50U3BhY2Uuam9pbnROYW1lLCAid3Jpc3QiKTsKKwor
ICAgICAgICB2YXIgY291bnQgPSAwOworICAgICAgICBmb3IgKGNvbnN0IFtqb2ludE5hbWUsIGpv
aW50U3BhY2VdIG9mIGhhbmQpIHsKKyAgICAgICAgICAgIGFzc2VydF9lcXVhbHMoam9pbnRTcGFj
ZS5qb2ludE5hbWUsIGpvaW50TmFtZSk7CisgICAgICAgICAgICBjb3VudCsrOworICAgICAgICB9
CisgICAgICAgIGFzc2VydF9lcXVhbHMoY291bnQsIDI1KTsKKworICAgICAgICByZXNvbHZlKCk7
CisgICAgICB9CisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1lKTsK
KyAgfSkpOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0ZXN0
RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJywgeyBvcHRpb25h
bEZlYXR1cmVzOiBbImhhbmQtdHJhY2tpbmciXSB9KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmRJbnB1dF9nYy5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5kSW5wdXRfZ2MuaHRtbAppbmRleCA3NzI4MmY2ZjQx
NjYzODg1MzgyMTljMTQ0NjU2ZjBjMDliNmVkZjBlLi5iNTYxNTk0N2M1ZDBiYmYxOTI5ZTBkY2Ux
NGMwOWQ3ZDQ0MTdjOWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94
ckhhbmRJbnB1dF9nYy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFu
ZElucHV0X2djLmh0bWwKQEAgLTE3LDcgKzE3LDcgQEAgZnVuY3Rpb24gZ2MoKQogCiBsZXQgdGVz
dE5hbWUgPSAiVGVzdCBvYmplY3QgbGlmZXRpbWUgb2YgSGFuZCBJbnB1dCBtb2R1bGUiOwogCi1s
ZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9TSU5HTEVfVklFV0RF
VklDRTsKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklD
RV9XSVRIX0hBTkRfVFJBQ0tJTkc7CiAKIGxldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNz
aW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKIApAQCAtMjYs
NyArMjYsNyBAQCBsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmlj
ZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CiAgICAgdGFyZ2V0UmF5TW9kZTogInRy
YWNrZWQtcG9pbnRlciIsCiAgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZP
Uk0sCiAgICAgcHJvZmlsZXM6IFtdLAotICAgIHNpbXVsYXRlSGFuZDogdHJ1ZSwKKyAgICBoYW5k
Sm9pbnRzOiBWQUxJRF9IQU5EX0pPSU5UUywKICAgfSk7CiAKICAgcmV0dXJuIHNlc3Npb24ucmVx
dWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0
RXhwZWN0YXRpb25zCmluZGV4IGEzOGM0ZGI0YmE3ZGQzMmQ2YTQxOTJiOTIwNGNlOTZhNjdkZWFk
ZjIuLmFlMWM1YzMxOWQ2ZWY5Yjc3YjYwYjVjZTE2MDVmZjA4NThlOGQzNDYgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRl
c3RzL3BsYXRmb3JtL3dpbi9UZXN0RXhwZWN0YXRpb25zCkBAIC00OTAwLDYgKzQ5MDAsOCBAQCBz
dG9yYWdlL2luZGV4ZWRkYi9zdHJ1Y3R1cmVkLWNsb25lLWltYWdlLWRhdGEtZGlzcGxheS1wMy5o
dG1sIFsgU2tpcCBdCiAKICMgV2ViWFIgaXMgbm90IGVuYWJsZWQgb24gd2luZG93cy4KIHdlYnhy
IFsgU2tpcCBdCitpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3dlYnhyIFsgU2tpcCBd
CitodHRwL3dwdC93ZWJ4ciBbIFNraXAgXQogCiAjIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjY5NzAKIGZhc3QvY3NzL3BhcnNlLWJvcmRlci1pbWFnZS1yZXBlYXQt
bnVsbC1jcmFzaC5odG1sIFsgRmFpbHVyZSBdCg==
</data>
<flag name="commit-queue"
          id="485696"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457192</attachid>
            <date>2022-04-09 23:38:05 -0700</date>
            <delta_ts>2022-04-12 10:51:31 -0700</delta_ts>
            <desc>Patch for landing 3</desc>
            <filename>bug-238968-20220409233805.patch</filename>
            <type>text/plain</type>
            <size>82571</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzExZTBmZTlmZTRkYTBi
MjNlZWE2M2U5NGIyNzc2Y2U0YWYwMjE5YS4uYjlhOGZmMzA3NmVjNTdhYTUxYzMyZWI0NzRmNTVm
NGZhZjBlODljNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMi0wNC0wNyAgQWRh
IENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIEltcGxlbWVudCB0
aGUgV2ViWFIgSGFuZCBJbnB1dCBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRlc3RzOiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2lu
dFJhZGlpLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpv
aW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dl
YnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sCisgICAgICAgICAg
ICAgICBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bv
c2UuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2VieHIveHJIYW5kLmh0bWwKKworICAg
ICAgICAtIEltcGxlbWVudCB0aGUgbWV0aG9kcyBpbiBXZWJYUkZyYW1lIGZvciBnZXR0aW5nIGpv
aW50cycgcG9zZXMgYW5kIHJhZGlpLgorICAgICAgICAtIEFkZCBhIG5ldyBJbnB1dFNvdXJjZUhh
bmRKb2ludCBzdHJ1Y3QgdG8gcmVwcmVzZW50IGpvaW50IGRhdGEsIGFuZCBhZGQKKyAgICAgICAg
YSB2ZWN0b3Igb2YgSW5wdXRTb3VyY2VIYW5kSm9pbnQgaW4gUGxhdGZvcm1YUjo6RGV2aWNlOjpG
cmFtZURhdGE6OklucHV0U291cmNlCisgICAgICAgIHRvIHJlcHJlc2VudCB0aGUgam9pbnRzIGRh
dGEuCisgICAgICAgIC0gSW1wbGVtZW50IGxvZ2ljIGZvciBtYW5hZ2luZyBhIHZlY3RvciBvZiBX
ZWJYUkpvaW50U3BhY2VzIGluIFdlYlhSSGFuZCBhbmQKKyAgICAgICAgdXBkYXRpbmcgaXQgd2l0
aCBuZXcgaGFuZCBqb2ludHMgZGF0YSBmcm9tIFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRh
OjpJbnB1dFNvdXJjZS4KKworICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAg
ICogRGVyaXZlZFNvdXJjZXMubWFrZToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJh
bWUrSGFuZElucHV0LmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6cG9wdWxhdGVQb3NlKToKKyAgICAgICAg
VGhlcmUgYXJlIHZhbGlkIGNhc2VzIHdoZW4gdGhlIFdlYlhSU3BhY2UncyBlZmZlY3RpdmUgb3Jp
Z2luIGNhbiBiZSBudWxsLAorICAgICAgICBmb3IgZXhhbXBsZSwgYSBqb2ludCBwb3NlIGZyb20g
YSBoYW5kIHRoYXQgaGFzIG90aGVyIG1pc3Npbmcgam9pbnQgcG9zZXMuCisgICAgICAgIEp1c3Qg
cmV0dXJuIG51bGwgYW5kIG5vdCB0aHJvdyBhbiBleGNlcHRpb24gaW4gdGhhdCBjYXNlLiAKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmdldEpvaW50UG9zZSk6CisgICAgICAgIFBvcHVs
YXRlIHRoZSBqb2ludCdzIHBvc2UsIGFuZCBjcmVhdGUgYSBXZWJYUkpvaW50UG9zZSB3aXRoIHRo
ZSBwb3NlJ3MgCisgICAgICAgIHRyYW5zZm9ybSBhbmQgdGhlIGpvaW50J3MgcmFkaXVzLgorICAg
ICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6ZmlsbEpvaW50UmFkaWkpOgorICAgICAgICBWYWxp
ZGF0ZSB0aGUgaW5wdXRzIGFuZCBmaWxsIGluIHRoZSByYWRpaSBhcnJheS4gRmlsbCBpbiB3aXRo
IE5hTgorICAgICAgICBpZiB0aGUgaGFuZCBoYXMgbWlzc2luZyBqb2ludCBwb3Nlcy4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmZpbGxQb3Nlcyk6CisgICAgICAgIFZhbGlkYXRlIHRo
ZSBpbnB1dHMgYW5kIGZpbGwgaW4gdGhlIHRyYW5zZm9ybXMgYXJyYXkuIEZpbGwgaW4gd2l0aCBO
YU4KKyAgICAgICAgaWYgdGhlIGhhbmQgaGFzIG1pc3Npbmcgam9pbnQgcG9zZXMuCisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmg6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkhhbmQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5kOjpXZWJYUkhhbmQpOgor
ICAgICAgICBJbml0aWFsaXplIHRoZSBtX2pvaW50cyBhcnJheS4KKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSSGFuZDo6Z2V0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSGFuZDo6SXRlcmF0b3I6
Om5leHQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5kOjpzZXNzaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSSGFuZDo6dXBkYXRlRnJvbUlucHV0U291cmNlKToKKyAgICAgICAgVXBk
YXRlIG1fam9pbnRzIGFycmF5IGJhc2VkIG9uIHRoZSBsYXRlc3QgaGFuZHMgZGF0YSBmcm9tIElu
cHV0U291cmNlLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmg6CisgICAgICAg
IChXZWJDb3JlOjpXZWJYUkhhbmQ6OnNpemUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5k
OjpoYXNNaXNzaW5nUG9zZXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJJ
bnB1dFNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUklucHV0U291cmNlOjp1cGRh
dGUpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViWFJKb2ludFBvc2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50UG9zZTo6V2ViWFJKb2ludFBvc2UpOgorICAgICAgICBIYW5kbGUgam9pbnQgcmFk
aXVzLgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaDoKKyAgICAgICAg
KiBNb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dl
YnhyL1dlYlhSSm9pbnRTcGFjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkpvaW50U3Bh
Y2U6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkpvaW50U3BhY2U6OldlYlhSSm9p
bnRTcGFjZSk6CisgICAgICAgIEhhbmRsZSBqb2ludCBuYW1lIGFuZCB0aGUgYWN0dWFsIHBvc2Ug
ZGF0YS4gS2VlcCBhIHdlYWsgcHRyIHRvIHRoZSBXZWJYUkhhbmQuCisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUkpvaW50U3BhY2U6OnVwZGF0ZUZyb21Kb2ludCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50U3BhY2U6OmhhbmRIYXNNaXNzaW5nUG9zZXMgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViWFJKb2ludFNwYWNlOjpzZXNzaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OldlYlhSSm9pbnRTcGFjZTo6bmF0aXZlT3JpZ2luIGNvbnN0KToKKyAgICAgICAgUmV0dXJuIG51
bGwgcG9zZSB0cmFuc2Zvcm1zIGlmIHRoZXJlIGFyZSBtaXNzaW5nIGpvaW50IHBvc2VzLgorICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmg6CisgICAgICAgIChXZWJDb3Jl
OjpXZWJYUkpvaW50U3BhY2U6OmpvaW50TmFtZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50U3BhY2U6OnJhZGl1cyBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9X
ZWJYUkpvaW50U3BhY2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSU2Vzc2lvbjo6aXNIYW5kVHJhY2tpbmdFbmFi
bGVkIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oOgorICAg
ICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBwbGF0
Zm9ybS94ci9QbGF0Zm9ybVhSLmg6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ6OmVuY29kZSBjb25zdCk6CisgICAgICAgIChQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ6OmRlY29kZSk6
CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U6OmVu
Y29kZSBjb25zdCk6CisgICAgICAgIChQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2U6OmRlY29kZSk6CisgICAgICAgICogdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUlu
aXQuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGw6CisgICAg
ICAgIEFsbG93IHRlc3QgSW5wdXRTb3VyY2UgdG8gYmUgY3JlYXRlZCB3aXRoIGFuIGFycmF5IG9m
IGpvaW50cy4KKyAgICAgICAgKiB0ZXN0aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0Lmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaWRsLgor
ICAgICAgICAqIHRlc3RpbmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsOiBDb3BpZWQgZnJvbSBT
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbC4KKyAgICAgICAg
RGVmaW5lIGluaXQgZGljdGlvbmFyeSBmb3Igam9pbnQgZGF0YS4KKyAgICAgICAgKiB0ZXN0aW5n
L1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXI6OldlYkZha2VYUklucHV0Q29udHJvbGxlcik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSk6CisgICAgICAg
IChXZWJDb3JlOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OnVwZGF0ZUhhbmRKb2ludHMpOgor
ICAgICAgICBVcGRhdGUgbV9oYW5kSm9pbnRzIGJhc2VkIG9uIGpvaW50IGluaXQgZGljdGlvbmFy
aWVzLgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmg6CisgICAg
ICAgICogdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsOgorICAgICAgICAqIHRl
c3RpbmcvV2ViWFJUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlRmVhdHVyZXMpOgor
ICAgICAgICAoV2ViQ29yZTo6V2ViWFJUZXN0OjpzaW11bGF0ZURldmljZUNvbm5lY3Rpb24pOgor
ICAgICAgICBBbGxvdyB0ZXN0IGRldmljZSB0byBzcGVjaWZ5IGEgbGlzdCBvZiBlbmFibGVkIGZl
YXR1cmVzIHRoYXQgZG9uJ3QgbmVlZAorICAgICAgICBmdXJ0aGVyIGV4cGxpY2l0IGNvbnNlbnQu
CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYlhS
VGVzdC5pZGw6CisKIDIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4K
IAogICAgICAgICBEcm9wIHVubmVjZXNzYXJ5IEV4Y2VwdGlvbk9yPD4gcmV0dXJuIHR5cGVzCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCmluZGV4IDE5MjZiMTU1MzNkYTMwYmNmNDc3OTMwMzQ3NWFhY2E4ODQ4MzQ4NjcuLjI2YjJi
NTFhZTM5ZjRiMTlkM2Y2MDNiN2E1OGM0MDgxOTNmYTM0YmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMjItMDQtMDcgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgW1dlYlhSXSBJbXBsZW1lbnQgdGhlIFdlYlhSIEhhbmQgSW5wdXQgbW9kdWxlCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5NjgKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9YUi9YUkRl
dmljZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6WFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6
ZVRyYWNraW5nQW5kUmVuZGVyaW5nKToKKyAgICAgICAgSW5pdGlhbGl6ZSBpbnB1dCBzb3VyY2Vz
IG9uIHNlc3Npb24gc3RhcnQuCisKIDIwMjItMDQtMDYgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFw
cGxlLmNvbT4KIAogICAgICAgICBJbXByb3ZlIEFQSTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpk
ZXNlcmlhbGl6ZSB0byBub3QgYWxsb2NhdGUgYSBuZXcgSlNDb250ZXh0IGV2ZXJ5IHNlY29uZApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKaW5kZXgg
MDgzMTA1MTZhZjYyNTMyODg0ODJkMWY1MWMyZGQ3MzI5NzQ3MTFhYi4uMzk3YzZiYjA4YjE2ZDMx
ZmVmMWEyOGIyOTc1ZGEyNjE3ZDEzNGY2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVy
aXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNjIyLDYgKzE2MjIsNyBAQCAkKFBST0pFQ1Rf
RElSKS9zdmcveGxpbmthdHRycy5pbgogJChQUk9KRUNUX0RJUikvdGVzdGluZy9GYWtlWFJCb3Vu
ZHNQb2ludC5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvRmFrZVhSQnV0dG9uU3RhdGVJbml0
LmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsCisk
KFBST0pFQ1RfRElSKS90ZXN0aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbAogJChQUk9KRUNU
X0RJUikvdGVzdGluZy9GYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuaWRsCiAkKFBST0pFQ1RfRElS
KS90ZXN0aW5nL0Zha2VYUlZpZXdJbml0LmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9HQ09i
c2VydmF0aW9uLmlkbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMt
b3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdAppbmRleCA4ODdjNzY1OWU3Zjg2NDM2Y2QwMmRkODQ5M2JkOTM5MTY1MmZjYmM2
Li5hM2Q2OGFkZmUxMzFjNDg3Yzc5Y2M0YzJhZjFjOGE4NmU3MDgxMmI5IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtODM1LDYgKzgz
NSw4IEBAICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFr
ZVhSQnV0dG9uU3RhdGVJbml0LmNwcAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL1dlYkNvcmUvSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJJbnB1dFNvdXJjZUluaXQuY3BwCiAk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zha2VYUklucHV0
U291cmNlSW5pdC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29y
ZS9KU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5oCiAkKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5p
dC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRmFrZVhSVmlld0luaXQuY3BwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQppbmRleCA3MWE4Y2U3MDg2ZmE3OWRhYThiNzUxMzE1YmY0M2E0NDNhNjE5YWZiLi5kNjYz
YzMyMzY4NGQxYzBmODgwZmI3Y2Y5NjFmYzZmYTQyMTZlNDZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRT
b3VyY2VzLm1ha2UKQEAgLTE0NjIsNiArMTQ2Miw3IEBAIEpTX0JJTkRJTkdfSURMUyA6PSBcCiAg
ICAgJChXZWJDb3JlKS90ZXN0aW5nL0Zha2VYUkJvdW5kc1BvaW50LmlkbCBcCiAgICAgJChXZWJD
b3JlKS90ZXN0aW5nL0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkv
dGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsIFwKKyAgICAkKFdlYkNvcmUpL3Rlc3Rp
bmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL0Zha2VY
UlZpZXdJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL1dlYkZha2VYUkRldmljZS5p
ZGwgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
K0hhbmRJbnB1dC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUr
SGFuZElucHV0LmlkbAppbmRleCA0N2EzYmZiZTVhNmE4YTExZTUwZWJmMmU2ZjBlOTY0ZGI1OGE3
YWFhLi4wYjY4NDNjYjllMGM1ODViZDQwNWMzY2JkNDVkMTcxODFmMzkxOTkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUrSGFuZElucHV0LmlkbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUrSGFuZElucHV0Lmlk
bApAQCAtMjgsNyArMjgsNyBAQAogICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAogICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViWFJFbmFibGVkJldlYlhSSGFuZElucHV0TW9kdWxlRW5hYmxlZCwK
IF0gcGFydGlhbCBpbnRlcmZhY2UgV2ViWFJGcmFtZSB7Ci0gICAgV2ViWFJKb2ludFBvc2U/IGdl
dEpvaW50UG9zZShXZWJYUkpvaW50U3BhY2Ugam9pbnQsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsK
KyAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBXZWJYUkpvaW50UG9zZT8gZ2V0Sm9pbnRQ
b3NlKFdlYlhSSm9pbnRTcGFjZSBqb2ludCwgV2ViWFJTcGFjZSBiYXNlU3BhY2UpOwogICAgIGJv
b2xlYW4gZmlsbEpvaW50UmFkaWkoc2VxdWVuY2U8V2ViWFJKb2ludFNwYWNlPiBqb2ludFNwYWNl
cywgRmxvYXQzMkFycmF5IHJhZGlpKTsKLSAgICBib29sZWFuIGZpbGxQb3NlcyhzZXF1ZW5jZTxX
ZWJYUlNwYWNlPiBzcGFjZXMsIFdlYlhSU3BhY2UgYmFzZVNwYWNlLCBGbG9hdDMyQXJyYXkgdHJh
bnNmb3Jtcyk7CisgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVudF0gYm9vbGVhbiBmaWxsUG9z
ZXMoc2VxdWVuY2U8V2ViWFJTcGFjZT4gc3BhY2VzLCBXZWJYUlNwYWNlIGJhc2VTcGFjZSwgRmxv
YXQzMkFycmF5IHRyYW5zZm9ybXMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSRnJhbWUuY3BwCmluZGV4IGYxYWZkNDMzZTI1Y2MyNTM1Njg3NzJkNzQ2YjdlNzc3Yzhi
YTFlNjAuLjNhNzY4M2U3OGE5YjcwOTFhMjNmODZiMWQzODQ4YWI2NDE5ZTUzZWQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcApAQCAtMTM2LDggKzEzNiwx
MCBAQCBFeGNlcHRpb25PcjxzdGQ6Om9wdGlvbmFsPFdlYlhSRnJhbWU6OlBvcHVsYXRlZFBvc2U+
PiBXZWJYUkZyYW1lOjpwb3B1bGF0ZVBvc2UoYwogICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxv
cHQgfTsKIAogICAgIGF1dG8gZWZmZWN0aXZlT3JpZ2luID0gc3BhY2UuZWZmZWN0aXZlT3JpZ2lu
KCk7CisgICAgLy8gQSBzcGFjZSdzIGVmZmVjdGl2ZU9yaWdpbiBjYW4gYmUgbnVsbCwgc3VjaCBh
cyBhIGpvaW50IHBvc2UgZnJvbSBhIGhhbmQgdGhhdCBoYXMKKyAgICAvLyBvdGhlciBtaXNzaW5n
IGpvaW50IHBvc2VzLgogICAgIGlmICghZWZmZWN0aXZlT3JpZ2luKQotICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IgfTsKKyAgICAgICAgcmV0dXJuIHsgc3RkOjpu
dWxsb3B0IH07CiAKICAgICBhdXRvIHRyYW5zZm9ybSA9ICAqYmFzZVRyYW5zZm9ybS52YWx1ZSgp
LmludmVyc2UoKSAqIGVmZmVjdGl2ZU9yaWdpbi52YWx1ZSgpOwogCkBAIC0yNjMsMjMgKzI2NSwx
MTUgQEAgVHJhbnNmb3JtYXRpb25NYXRyaXggV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UoY29u
c3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZUQKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCiAK
IC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItaGFuZC1pbnB1dC8jZG9t
LXhyZnJhbWUtZ2V0am9pbnRwb3NlCi1FeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJKb2ludFBvc2U+
PiBXZWJYUkZyYW1lOjpnZXRKb2ludFBvc2UoY29uc3QgV2ViWFJKb2ludFNwYWNlJiBqb2ludCwg
Y29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlKQorRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSSm9p
bnRQb3NlPj4gV2ViWFJGcmFtZTo6Z2V0Sm9pbnRQb3NlKGNvbnN0IERvY3VtZW50JiBkb2N1bWVu
dCwgY29uc3QgV2ViWFJKb2ludFNwYWNlJiBqb2ludFNwYWNlLCBjb25zdCBXZWJYUlNwYWNlJiBi
YXNlU3BhY2UpCiB7Ci0gICAgVU5VU0VEX1BBUkFNKGpvaW50KTsKLSAgICBVTlVTRURfUEFSQU0o
YmFzZVNwYWNlKTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBhdXRvIHBvcHVsYXRlUG9zZVJl
c3VsdCA9IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgam9pbnRTcGFjZSwgYmFzZVNwYWNlKTsKKyAg
ICBpZiAocG9wdWxhdGVQb3NlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAgICAgICByZXR1cm4g
cG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKworICAgIGF1dG8gcG9wdWxh
dGVWYWx1ZSA9IHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICBp
ZiAoIXBvcHVsYXRlVmFsdWUpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJu
IFJlZlB0cjxXZWJYUkpvaW50UG9zZT4oV2ViWFJKb2ludFBvc2U6OmNyZWF0ZShXZWJYUlJpZ2lk
VHJhbnNmb3JtOjpjcmVhdGUocG9wdWxhdGVWYWx1ZS0+dHJhbnNmb3JtKSwgcG9wdWxhdGVWYWx1
ZS0+ZW11bGF0ZWRQb3NpdGlvbiwgam9pbnRTcGFjZS5yYWRpdXMoKSkpOwogfQogCiAvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWhhbmQtaW5wdXQvI2RvbS14cmZyYW1l
LWZpbGxqb2ludHJhZGlpCi1FeGNlcHRpb25Pcjxib29sPiBXZWJYUkZyYW1lOjpmaWxsSm9pbnRS
YWRpaShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+LCBjb25zdCBGbG9hdDMy
QXJyYXkmKQorRXhjZXB0aW9uT3I8Ym9vbD4gV2ViWFJGcmFtZTo6ZmlsbEpvaW50UmFkaWkoY29u
c3QgVmVjdG9yPFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+PiYgam9pbnRTcGFjZXMsIEZsb2F0MzJB
cnJheSYgcmFkaWkpCiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gSWYgZnJhbWXigJlzIGFj
dGl2ZSBib29sZWFuIGlzIGZhbHNlLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJv
cnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCFtX2FjdGl2ZSkKKyAgICAgICAgcmV0dXJuIEV4Y2Vw
dGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRnJhbWUgaXMgbm90IGFjdGl2ZSJfcyB9OworCisg
ICAgLy8gRm9yIGVhY2ggam9pbnQgaW4gdGhlIGpvaW50U3BhY2VzOgorICAgIC8vIElmIGpvaW50
4oCZcyBzZXNzaW9uIGlzIGRpZmZlcmVudCBmcm9tIHNlc3Npb24sIHRocm93IGFuIEludmFsaWRT
dGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBmb3IgKGNvbnN0IGF1dG8mIGpv
aW50U3BhY2UgOiBqb2ludFNwYWNlcykgeworICAgICAgICBpZiAoIWpvaW50U3BhY2UgfHwgam9p
bnRTcGFjZS0+c2Vzc2lvbigpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICAgICAgICAgIHJldHVy
biBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkpvaW50IHNwYWNlJ3Mgc2Vzc2lvbiBk
b2VzIG5vdCBtYXRjaCBmcmFtZSdzIHNlc3Npb24iX3MgfTsKKyAgICB9CisKKyAgICAvLyBJZiB0
aGUgbGVuZ3RoIG9mIGpvaW50U3BhY2VzIGlzIGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgZWxl
bWVudHMgaW4gcmFkaWksIHRocm93IGEgVHlwZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4K
KyAgICBpZiAoam9pbnRTcGFjZXMuc2l6ZSgpID4gcmFkaWkubGVuZ3RoKCkpCisgICAgICAgIHJl
dHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmV4cGVjdGVkIGxlbmd0aCBvZiByYWRpaSBh
cnJheSJfcyB9OworCisgICAgLy8gTGV0IGFsbFZhbGlkIGJlIHRydWUuCisgICAgYm9vbCBhbGxW
YWxpZCA9IHRydWU7CisKKyAgICAvLyBGb3IgZWFjaCBqb2ludCBpbiB0aGUgam9pbnRTcGFjZXM6
CisgICAgLy8gMS4gU2V0IHRoZSBmbG9hdCB2YWx1ZSBvZiByYWRpaSBhdCBvZmZzZXQgYXMgZm9s
bG93czoKKyAgICAvLyBJZiB0aGUgdXNlciBhZ2VudCBjYW4gZGV0ZXJtaW5lIHRoZSBwb3NlcyBv
ZiBhbGwgdGhlIGpvaW50cyBiZWxvbmdpbmcgdG8gdGhlIGpvaW504oCZcyBoYW5kOgorICAgIC8v
ICAgICBTZXQgdGhlIGZsb2F0IHZhbHVlIG9mIHJhZGlpIGF0IG9mZnNldCB0byB0aGF0IHJhZGl1
cy4KKyAgICAvLyBPdGhlcndpc2UKKyAgICAvLyAgICAgU2V0IHRoZSBmbG9hdCB2YWx1ZSBvZiBy
YWRpaSBhdCBvZmZzZXQgdG8gTmFOLgorICAgIC8vICAgICBTZXQgYWxsVmFsaWQgdG8gZmFsc2Uu
CisgICAgLy8gMi4gSW5jcmVhc2Ugb2Zmc2V0IGJ5IDEuCisgICAgZm9yIChzaXplX3QgaSA9IDA7
IGkgPCBqb2ludFNwYWNlcy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoam9pbnRTcGFjZXNb
aV0tPmhhbmRIYXNNaXNzaW5nUG9zZXMoKSkgeworICAgICAgICAgICAgcmFkaWkuc2V0KGksIHN0
ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjpxdWlldF9OYU4oKSk7CisgICAgICAgICAgICBhbGxW
YWxpZCA9IGZhbHNlOworICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHJhZGlpLnNldChpLCBq
b2ludFNwYWNlc1tpXS0+cmFkaXVzKCkpOworICAgIH0KKworICAgIHJldHVybiBhbGxWYWxpZDsK
IH0KIAogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1oYW5kLWlucHV0
LyNkb20teHJmcmFtZS1maWxscG9zZXMKLUV4Y2VwdGlvbk9yPGJvb2w+IFdlYlhSRnJhbWU6OmZp
bGxQb3Nlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSU3BhY2U+PiwgY29uc3QgV2ViWFJTcGFj
ZSYsIGNvbnN0IEZsb2F0MzJBcnJheSYpCitFeGNlcHRpb25Pcjxib29sPiBXZWJYUkZyYW1lOjpm
aWxsUG9zZXMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBWZWN0b3I8UmVmUHRyPFdl
YlhSU3BhY2U+PiYgc3BhY2VzLCBjb25zdCBXZWJYUlNwYWNlJiBiYXNlU3BhY2UsIEZsb2F0MzJB
cnJheSYgdHJhbnNmb3JtcykKIHsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBJZiBmcmFtZeKA
mXMgYWN0aXZlIGJvb2xlYW4gaXMgZmFsc2UsIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFu
ZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fYWN0aXZlKQorICAgICAgICByZXR1cm4g
RXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJGcmFtZSBpcyBub3QgYWN0aXZlIl9zIH07
CisKKyAgICAvLyBGb3IgZWFjaCBzcGFjZSBpbiB0aGUgc3BhY2VzIHNlcXVlbmNlOgorICAgIC8v
IElmIHNwYWNl4oCZcyBzZXNzaW9uIGlzIGRpZmZlcmVudCBmcm9tIHNlc3Npb24sIHRocm93IGFu
IEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBmb3IgKGNvbnN0
IGF1dG8mIHNwYWNlIDogc3BhY2VzKSB7CisgICAgICAgIGlmICghc3BhY2UgfHwgc3BhY2UtPnNl
c3Npb24oKSAhPSBtX3Nlc3Npb24ucHRyKCkpCisgICAgICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJTcGFjZSdzIHNlc3Npb24gZG9lcyBub3QgbWF0Y2ggZnJh
bWUncyBzZXNzaW9uIl9zIH07CisgICAgfQorCisgICAgLy8gSWYgYmFzZVNwYWNl4oCZcyBzZXNz
aW9uIGlzIGRpZmZlcmVudCBmcm9tIHNlc3Npb24sIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9y
IGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoYmFzZVNwYWNlLnNlc3Npb24oKSAhPSBt
X3Nlc3Npb24ucHRyKCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJbnZhbGlkU3RhdGVF
cnJvciwgIkJhc2Ugc3BhY2UncyBzZXNzaW9uIGRvZXMgbm90IG1hdGNoIGZyYW1lJ3Mgc2Vzc2lv
biJfcyB9OworCisgICAgLy8gSWYgdGhlIGxlbmd0aCBvZiBzcGFjZXMgbXVsdGlwbGllZCBieSAx
NiBpcyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGluIHRyYW5zZm9ybXMsCisg
ICAgLy8gdGhyb3cgYSBUeXBlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGNvbnN0
IHNpemVfdCBudW1iZXJPZkZsb2F0c1BlclRyYW5zZm9ybSA9IDE2OworICAgIGlmIChzcGFjZXMu
c2l6ZSgpICogbnVtYmVyT2ZGbG9hdHNQZXJUcmFuc2Zvcm0gPiB0cmFuc2Zvcm1zLmxlbmd0aCgp
KQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVW5leHBlY3RlZCBsZW5n
dGggb2YgdHJhbnNmb3JtcyBhcnJheSJfcyB9OworCisgICAgLy8gQ2hlY2sgaWYgcG9zZXMgbWF5
IGJlIHJlcG9ydGVkIGFuZCwgaWYgbm90LCB0aHJvdyBhIFNlY3VyaXR5RXJyb3IgYW5kIGFib3J0
IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9zZXNzaW9uLT5wb3Nlc0NhbkJlUmVwb3J0ZWQoZG9j
dW1lbnQpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgU2VjdXJpdHlFcnJvciwgIlBvc2Vz
IGNhbm5vdCBiZSByZXBvcnRlZCJfcyB9OworCisgICAgLy8gTGV0IGFsbFZhbGlkIGJlIHRydWUu
CisgICAgYm9vbCBhbGxWYWxpZCA9IHRydWU7CisKKyAgICAvLyBGb3IgZWFjaCBzcGFjZSBpbiB0
aGUgc3BhY2VzIHNlcXVlbmNlOgorICAgIGZvciAoc2l6ZV90IHNwYWNlSW5kZXggPSAwOyBzcGFj
ZUluZGV4IDwgc3BhY2VzLnNpemUoKTsgKytzcGFjZUluZGV4KSB7CisgICAgICAgIC8vIDEuIFBv
cHVsYXRlIHRoZSBwb3NlIG9mIHNwYWNlIGluIGJhc2VTcGFjZSBhdCB0aGUgdGltZSByZXByZXNl
bnRlZCBieSBmcmFtZSBpbnRvIHBvc2UuCisgICAgICAgIGF1dG8gcG9wdWxhdGVQb3NlUmVzdWx0
ID0gcG9wdWxhdGVQb3NlKGRvY3VtZW50LCAqKHNwYWNlc1tzcGFjZUluZGV4XSksIGJhc2VTcGFj
ZSk7CisgICAgICAgIGlmIChwb3B1bGF0ZVBvc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAg
ICAgICAgICByZXR1cm4gcG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKKwor
ICAgICAgICAvLyAyLiBJZiBwb3NlIGlzIG51bGwsIHBlcmZvcm0gdGhlIGZvbGxvd2luZyBzdGVw
czoKKyAgICAgICAgLy8gMy4gU2V0IDE2IGNvbnNlY3V0aXZlIGVsZW1lbnRzIG9mIHRoZSB0cmFu
c2Zvcm1zIGFycmF5IHN0YXJ0aW5nIGF0IG9mZnNldCB0byBOYU4uCisgICAgICAgIC8vIDQuIFNl
dCBhbGxWYWxpZCB0byBmYWxzZS4KKyAgICAgICAgYXV0byBwb3B1bGF0ZVZhbHVlID0gcG9wdWxh
dGVQb3NlUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgICAgICBpZiAoIXBvcHVsYXRl
VmFsdWUpIHsKKyAgICAgICAgICAgIGZvciAoc2l6ZV90IHRyYW5zZm9ybUluZGV4ID0gMDsgdHJh
bnNmb3JtSW5kZXggPCBudW1iZXJPZkZsb2F0c1BlclRyYW5zZm9ybTsgKyt0cmFuc2Zvcm1JbmRl
eCkKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1zLnNldChzcGFjZUluZGV4ICogbnVtYmVyT2ZG
bG9hdHNQZXJUcmFuc2Zvcm0gKyB0cmFuc2Zvcm1JbmRleCwgc3RkOjpudW1lcmljX2xpbWl0czxm
bG9hdD46OnF1aWV0X05hTigpKTsKKyAgICAgICAgICAgIGFsbFZhbGlkID0gZmFsc2U7CisgICAg
ICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyA1LiBJZiBwb3NlIGlzIG5vdCBudWxsLCBjb3B5
IGFsbCBlbGVtZW50cyBmcm9tIHBvc2XigJlzIG1hdHJpeCBtZW1iZXIgdG8gdGhlIHRyYW5zZm9y
bXMgYXJyYXkgc3RhcnRpbmcgYXQgb2Zmc2V0LgorICAgICAgICAgICAgLy8gNi4gSW5jcmVhc2Ug
b2Zmc2V0IGJ5IDE2LgorICAgICAgICAgICAgYXV0byBtYXRyaXggPSBwb3B1bGF0ZVZhbHVlLT50
cmFuc2Zvcm0udG9Db2x1bW5NYWpvckZsb2F0QXJyYXkoKTsKKyAgICAgICAgICAgIGZvciAoc2l6
ZV90IHRyYW5zZm9ybUluZGV4ID0gMDsgdHJhbnNmb3JtSW5kZXggPCBudW1iZXJPZkZsb2F0c1Bl
clRyYW5zZm9ybTsgKyt0cmFuc2Zvcm1JbmRleCkKKyAgICAgICAgICAgICAgICB0cmFuc2Zvcm1z
LnNldChzcGFjZUluZGV4ICogbnVtYmVyT2ZGbG9hdHNQZXJUcmFuc2Zvcm0gKyB0cmFuc2Zvcm1J
bmRleCwgbWF0cml4W3RyYW5zZm9ybUluZGV4XSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBy
ZXR1cm4gYWxsVmFsaWQ7CiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSRnJhbWUuaAppbmRleCBiYmFhMmNkZDhlOWZjYjhlZjA2NGQ1NDc0ODEyNDRkOWQ0MTIz
OGY2Li4xNWY1N2ZmMjhiYTdiNmViNmZmNGYzNmMzODczN2I0OGYxODA4ZDk1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuaApAQCAtNjAsOSArNjAsOSBAQCBwdWJs
aWM6CiAgICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSUG9zZT4+IGdldFBvc2UoY29uc3QgRG9j
dW1lbnQmLCBjb25zdCBXZWJYUlNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpOwogCiAjaWYgRU5B
QkxFKFdFQlhSX0hBTkRTKQotICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUkpvaW50UG9zZT4+
IGdldEpvaW50UG9zZShjb25zdCBXZWJYUkpvaW50U3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7
Ci0gICAgRXhjZXB0aW9uT3I8Ym9vbD4gZmlsbEpvaW50UmFkaWkoY29uc3QgVmVjdG9yPFJlZlB0
cjxXZWJYUkpvaW50U3BhY2U+PiwgY29uc3QgRmxvYXQzMkFycmF5Jik7Ci0gICAgRXhjZXB0aW9u
T3I8Ym9vbD4gZmlsbFBvc2VzKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJTcGFjZT4+LCBjb25z
dCBXZWJYUlNwYWNlJiwgY29uc3QgRmxvYXQzMkFycmF5Jik7CisgICAgRXhjZXB0aW9uT3I8UmVm
UHRyPFdlYlhSSm9pbnRQb3NlPj4gZ2V0Sm9pbnRQb3NlKGNvbnN0IERvY3VtZW50JiwgY29uc3Qg
V2ViWFJKb2ludFNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYpOworICAgIEV4Y2VwdGlvbk9yPGJv
b2w+IGZpbGxKb2ludFJhZGlpKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4m
LCBGbG9hdDMyQXJyYXkmKTsKKyAgICBFeGNlcHRpb25Pcjxib29sPiBmaWxsUG9zZXMoY29uc3Qg
RG9jdW1lbnQmLCBjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSU3BhY2U+PiYsIGNvbnN0IFdlYlhS
U3BhY2UmLCBGbG9hdDMyQXJyYXkmKTsKICNlbmRpZgogCiAgICAgdm9pZCBzZXRUaW1lKERPTUhp
Z2hSZXNUaW1lU3RhbXAgdGltZSkgeyBtX3RpbWUgPSB0aW1lOyB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAKaW5kZXggZjUzZTQxYmZkMmVmNWFkNTk5NzJiMzRl
ZDdhNmYzMzU1OWMxYzM5MS4uODU5OWI1ZjM0NDg1Njc1MWQwNTMyOTg1MDM4NjVmYWU5ODkwODAx
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmNwcApAQCAtNDMs
MTQgKzQzLDI4IEBAIFJlZjxXZWJYUkhhbmQ+IFdlYlhSSGFuZDo6Y3JlYXRlKGNvbnN0IFdlYlhS
SW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQogV2ViWFJIYW5kOjpXZWJYUkhhbmQoY29uc3QgV2Vi
WFJJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiAgICAgOiBtX2lucHV0U291cmNlKGlucHV0U291
cmNlKQogeworICAgIGF1dG8qIHNlc3Npb24gPSB0aGlzLT5zZXNzaW9uKCk7CisgICAgYXV0byog
ZG9jdW1lbnQgPSBzZXNzaW9uID8gZG93bmNhc3Q8RG9jdW1lbnQ+KHNlc3Npb24tPnNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQoKSkgOiBudWxscHRyOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAg
IHJldHVybjsKKworICAgIHNpemVfdCBqb2ludENvdW50ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihY
UkhhbmRKb2ludDo6Q291bnQpOworICAgIFZlY3RvcjxSZWY8V2ViWFJKb2ludFNwYWNlPj4gam9p
bnRzOworICAgIGpvaW50cy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGpvaW50Q291bnQpOworICAg
IGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgam9pbnRDb3VudDsgKytpKQorICAgICAgICBqb2ludHMu
YXBwZW5kKFdlYlhSSm9pbnRTcGFjZTo6Y3JlYXRlKCpkb2N1bWVudCwgKnRoaXMsIHN0YXRpY19j
YXN0PFhSSGFuZEpvaW50PihpKSkpOworICAgIG1fam9pbnRzID0gV1RGTW92ZShqb2ludHMpOwog
fQogCiBXZWJYUkhhbmQ6On5XZWJYUkhhbmQoKSA9IGRlZmF1bHQ7CiAKIFJlZlB0cjxXZWJYUkpv
aW50U3BhY2U+IFdlYlhSSGFuZDo6Z2V0KGNvbnN0IFhSSGFuZEpvaW50JiBrZXkpCiB7Ci0gICAg
VU5VU0VEX1BBUkFNKGtleSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgc2l6ZV90IGpvaW50
SW5kZXggPSBzdGF0aWNfY2FzdDxzaXplX3Q+KGtleSk7CisgICAgaWYgKGpvaW50SW5kZXggPj0g
bV9qb2ludHMuc2l6ZSgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVybiBt
X2pvaW50c1tqb2ludEluZGV4XS5wdHIoKTsKIH0KIAogV2ViWFJIYW5kOjpJdGVyYXRvcjo6SXRl
cmF0b3IoV2ViWFJIYW5kJiBoYW5kKQpAQCAtNjAsMTkgKzc0LDQ0IEBAIFdlYlhSSGFuZDo6SXRl
cmF0b3I6Okl0ZXJhdG9yKFdlYlhSSGFuZCYgaGFuZCkKIAogc3RkOjpvcHRpb25hbDxLZXlWYWx1
ZVBhaXI8WFJIYW5kSm9pbnQsIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+Pj4gV2ViWFJIYW5kOjpJ
dGVyYXRvcjo6bmV4dCgpCiB7Ci0gICAgaWYgKG1faW5kZXggPiBtX2hhbmQtPm1fam9pbnRzLnNp
emUoKSkKKyAgICBpZiAobV9pbmRleCA+PSBtX2hhbmQtPm1fam9pbnRzLnNpemUoKSkKICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
c2l6ZV90IGluZGV4ID0gbV9pbmRleCsrOworICAgIHJldHVybiBLZXlWYWx1ZVBhaXI8WFJIYW5k
Sm9pbnQsIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+PiB7IHN0YXRpY19jYXN0PFhSSGFuZEpvaW50
PihpbmRleCksIG1faGFuZC0+bV9qb2ludHNbaW5kZXhdLnB0cigpIH07CiB9CiAKIFdlYlhSU2Vz
c2lvbiogV2ViWFJIYW5kOjpzZXNzaW9uKCkKIHsKICAgICBpZiAoIW1faW5wdXRTb3VyY2UpCiAg
ICAgICAgIHJldHVybiBudWxscHRyOworCiAgICAgcmV0dXJuIG1faW5wdXRTb3VyY2UuZ2V0KCkt
PnNlc3Npb24oKTsKIH0KIAordm9pZCBXZWJYUkhhbmQ6OnVwZGF0ZUZyb21JbnB1dFNvdXJjZShj
b25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UmIGlucHV0U291
cmNlKQoreworICAgIGlmICghaW5wdXRTb3VyY2UuaGFuZEpvaW50cykgeworICAgICAgICBtX2hh
c01pc3NpbmdQb3NlcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRv
JiBoYW5kSm9pbnRzID0gKihpbnB1dFNvdXJjZS5oYW5kSm9pbnRzKTsKKyAgICBpZiAoaGFuZEpv
aW50cy5zaXplKCkgIT0gbV9qb2ludHMuc2l6ZSgpKSB7CisgICAgICAgIG1faGFzTWlzc2luZ1Bv
c2VzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGJvb2wgaGFzTWlzc2lu
Z1Bvc2VzID0gZmFsc2U7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBoYW5kSm9pbnRzLnNp
emUoKTsgKytpKSB7CisgICAgICAgIGlmICghaGFuZEpvaW50c1tpXSkKKyAgICAgICAgICAgIGhh
c01pc3NpbmdQb3NlcyA9IHRydWU7CisKKyAgICAgICAgbV9qb2ludHNbaV0tPnVwZGF0ZUZyb21K
b2ludChoYW5kSm9pbnRzW2ldKTsKKyAgICB9CisgICAgbV9oYXNNaXNzaW5nUG9zZXMgPSBoYXNN
aXNzaW5nUG9zZXM7Cit9CisKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkhhbmQuaAppbmRleCBkYmUxMTQzMjUzZDU3MDc5MWFmYzdiZDg2ODhjOTkyZGMzZmJi
YWZlLi5hMGRkMWI1MTIwYjFmZTZlYzA2OGYzMWNhMTRkODY3M2Q0NDgxNjNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmgKQEAgLTM2LDE3ICszNiwxOCBAQAogI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLWNsYXNzIFdlYlhSSGFuZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSGFuZD4g
eworY2xhc3MgV2ViWFJIYW5kIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJIYW5kPiwgcHVibGlj
IENhbk1ha2VXZWFrUHRyPFdlYlhSSGFuZD4gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQo
V2ViWFJIYW5kKTsKIHB1YmxpYzoKIAogICAgIHN0YXRpYyBSZWY8V2ViWFJIYW5kPiBjcmVhdGUo
Y29uc3QgV2ViWFJJbnB1dFNvdXJjZSYpOwogICAgIH5XZWJYUkhhbmQoKTsKIAotICAgIHVuc2ln
bmVkIHNpemUoKSB7IHJldHVybiBtX3NpemU7IH0KKyAgICB1bnNpZ25lZCBzaXplKCkgY29uc3Qg
eyByZXR1cm4gbV9qb2ludHMuc2l6ZSgpOyB9CiAKICAgICBSZWZQdHI8V2ViWFJKb2ludFNwYWNl
PiBnZXQoY29uc3QgWFJIYW5kSm9pbnQmIGtleSk7CiAKQEAgLTYxLDE2ICs2MiwxNyBAQCBwdWJs
aWM6CiAgICAgfTsKICAgICBJdGVyYXRvciBjcmVhdGVJdGVyYXRvcigpIHsgcmV0dXJuIEl0ZXJh
dG9yKCp0aGlzKTsgfQogCi0gICAgLy8gRm9yIEdDIHJlYWNoYWJsaXRpeS4KKyAgICAvLyBGb3Ig
R0MgcmVhY2hhYmlsaXR5LgogICAgIFdlYlhSU2Vzc2lvbiogc2Vzc2lvbigpOwogCisgICAgYm9v
bCBoYXNNaXNzaW5nUG9zZXMoKSBjb25zdCB7IHJldHVybiBtX2hhc01pc3NpbmdQb3NlczsgfQor
ICAgIHZvaWQgdXBkYXRlRnJvbUlucHV0U291cmNlKGNvbnN0IFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYpOworCiBwcml2YXRlOgogICAgIFdlYlhSSGFuZChjb25z
dCBXZWJYUklucHV0U291cmNlJik7CiAKLSAgICB1bnNpZ25lZCBtX3NpemUgeyAwIH07Ci0gICAg
dXNpbmcgSGFuZEpvaW50VG9TcGFjZU1hcCA9IEhhc2hNYXA8WFJIYW5kSm9pbnQsIFJlZjxXZWJY
UkpvaW50U3BhY2U+LCBEZWZhdWx0SGFzaDx1bnNpZ25lZD4sIFdURjo6VW5zaWduZWRXaXRoWmVy
b0tleUhhc2hUcmFpdHM8dW5zaWduZWQ+PjsKLSAgICBIYW5kSm9pbnRUb1NwYWNlTWFwIG1fam9p
bnRzOwotCisgICAgRml4ZWRWZWN0b3I8UmVmPFdlYlhSSm9pbnRTcGFjZT4+IG1fam9pbnRzOwor
ICAgIGJvb2wgbV9oYXNNaXNzaW5nUG9zZXMgeyB0cnVlIH07CiAgICAgV2Vha1B0cjxXZWJYUklu
cHV0U291cmNlPiBtX2lucHV0U291cmNlOwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKaW5kZXggNWY1NjkzZTMwMTAzZDJmZTcz
NTg0ZTEyODFkZTA3NjhiYWI4N2Y1MC4uMGFhODlkMWVlN2MyNDU3MDhmZDkwZWM0MjgyMzEwMWJm
NDljMzY0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUklu
cHV0U291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5w
dXRTb3VyY2UuY3BwCkBAIC04OCwxNiArODgsMTkgQEAgdm9pZCBXZWJYUklucHV0U291cmNlOjp1
cGRhdGUoZG91YmxlIHRpbWVzdGFtcCwgY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZUQK
ICNlbmRpZgogCiAjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQotICAgIGlmIChzb3VyY2Uuc2ltdWxh
dGVIYW5kKSB7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGlzIGN1cnJlbnRseSBjcmVhdGVzIGFuIG9i
amVjdCBqdXN0IGZvciB1c2UgaW4gdGVzdGluZy4KLSAgICAgICAgLy8gVGhlIHJlYWwgaW1wbGVt
ZW50YXRpb24gd2lsbCB1c2UgYWN0dWFsIGRhdGEgYW5kIG9ubHkgYmUgdmlzaWJsZQotICAgICAg
ICAvLyBpZiBoYW5kLXRyYWNraW5nIHdhcyByZXF1ZXN0ZWQgYXQgc2Vzc2lvbiBzdGFydC4KLSAg
ICAgICAgaWYgKCFtX2hhbmQpCisgICAgaWYgKHNvdXJjZS5oYW5kSm9pbnRzKSB7CisgICAgICAg
IC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi93ZWJ4ci1oYW5kLWlucHV0LTEvI3hyaW5wdXRzb3Vy
Y2UtaW50ZXJmYWNlCisgICAgICAgIC8vIElmIHRoZSBYUklucHV0U291cmNlIGJlbG9uZ3MgdG8g
YW4gWFJTZXNzaW9uIHRoYXQgaGFzIG5vdCBiZWVuIHJlcXVlc3RlZAorICAgICAgICAvLyB3aXRo
IHRoZSAiaGFuZC10cmFja2luZyIgZmVhdHVyZSBkZXNjcmlwdG9yLCBoYW5kIE1VU1QgYmUgbnVs
bC4KKyAgICAgICAgaWYgKCFtX2hhbmQgJiYgc2Vzc2lvbi0+aXNIYW5kVHJhY2tpbmdFbmFibGVk
KCkpCiAgICAgICAgICAgICBtX2hhbmQgPSBXZWJYUkhhbmQ6OmNyZWF0ZSgqdGhpcyk7Ci0gICAg
fSBlbHNlCi0gICAgICAgIG1faGFuZCA9IG51bGxwdHI7Ci0jZW5kaWYKIAorICAgICAgICBpZiAo
bV9oYW5kKQorICAgICAgICAgICAgbV9oYW5kLT51cGRhdGVGcm9tSW5wdXRTb3VyY2Uoc291cmNl
KTsKKworICAgICAgICByZXR1cm47CisgICAgfQorI2VuZGlmCiB9CiAKIGJvb2wgV2ViWFJJbnB1
dFNvdXJjZTo6cmVxdWlyZXNJbnB1dFNvdXJjZUNoYW5nZShjb25zdCBJbnB1dFNvdXJjZSYgc291
cmNlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50
UG9zZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmNw
cAppbmRleCA0Yjc4M2IwYzY2YmNkZDc1OTY5MDk4YTEyZTFkYTI3Yjc3MTIxYTYzLi5lZDA0NWJi
NzQ2YjZlMmQ3NGZlMzhlNWU3ZDUyYTFkYTMxOGZmMjdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmNwcApAQCAtMzQsMTMgKzM0LDE0IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSm9p
bnRQb3NlKTsKIAotUmVmPFdlYlhSSm9pbnRQb3NlPiBXZWJYUkpvaW50UG9zZTo6Y3JlYXRlKFJl
ZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9vbCBlbXVsYXRlZFBvc2l0aW9u
KQorUmVmPFdlYlhSSm9pbnRQb3NlPiBXZWJYUkpvaW50UG9zZTo6Y3JlYXRlKFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uLCBmbG9hdCBy
YWRpdXMpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJKb2ludFBvc2UoV1RGTW92
ZSh0cmFuc2Zvcm0pLCBlbXVsYXRlZFBvc2l0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgV2ViWFJKb2ludFBvc2UoV1RGTW92ZSh0cmFuc2Zvcm0pLCBlbXVsYXRlZFBvc2l0aW9uLCBy
YWRpdXMpKTsKIH0KIAotV2ViWFJKb2ludFBvc2U6OldlYlhSSm9pbnRQb3NlKFJlZjxXZWJYUlJp
Z2lkVHJhbnNmb3JtPiYmIHRyYW5zZm9ybSwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKQorV2ViWFJK
b2ludFBvc2U6OldlYlhSSm9pbnRQb3NlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmIHRyYW5z
Zm9ybSwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uLCBmbG9hdCByYWRpdXMpCiAgICAgOiBXZWJYUlBv
c2UoV1RGTW92ZSh0cmFuc2Zvcm0pLCBlbXVsYXRlZFBvc2l0aW9uKQorICAgICwgbV9yYWRpdXMo
cmFkaXVzKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSSm9pbnRQb3NlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9p
bnRQb3NlLmgKaW5kZXggMWQ3Yzc0MWEzYWE2NGE1Zjk4NTk4NWVjYWQ3ZTI4ZmZlYTc2ODk5ZC4u
N2VhMTVjYjU1YWRkYzNkYzVmMmMyYzE3YTZiYTUxMjBiMDM3ODM1MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaApAQCAtMzksMTMgKzM5LDEzIEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdlYlhSSm9pbnRQb3NlIDogcHVibGljIFdlYlhS
UG9zZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJYUkpvaW50UG9zZSk7CiBwdWJs
aWM6Ci0gICAgc3RhdGljIFJlZjxXZWJYUkpvaW50UG9zZT4gY3JlYXRlKFJlZjxXZWJYUlJpZ2lk
VHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRpb24pOworICAgIHN0YXRpYyBSZWY8V2Vi
WFJKb2ludFBvc2U+IGNyZWF0ZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVs
YXRlZFBvc2l0aW9uLCBmbG9hdCByYWRpdXMpOwogICAgIH5XZWJYUkpvaW50UG9zZSgpID0gZGVm
YXVsdDsKIAogICAgIGZsb2F0IHJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fcmFkaXVzOyB9CiAK
IHByaXZhdGU6Ci0gICAgV2ViWFJKb2ludFBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYs
IGJvb2wgZW11bGF0ZWRQb3NpdGlvbik7CisgICAgV2ViWFJKb2ludFBvc2UoUmVmPFdlYlhSUmln
aWRUcmFuc2Zvcm0+JiYsIGJvb2wgZW11bGF0ZWRQb3NpdGlvbiwgZmxvYXQgcmFkaXVzKTsKIAog
ICAgIGZsb2F0IG1fcmFkaXVzIHsgMCB9OwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5pZGwKaW5kZXggOWViZDhiZjUzYjJmOTg1OWU5OTBiOWVk
ZjQ1NWE5YWM0ODM3NTk2YS4uNzNlY2FlYzI0MGQwZjJiOTc3MmVmMTRiNWU4YzA3ZjljZDczMDkz
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9z
ZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5p
ZGwKQEAgLTI2LDYgKzI2LDggQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJYUl9IQU5EUywKICAg
ICBFbmFibGVkQnlTZXR0aW5nPVdlYlhSRW5hYmxlZCZXZWJYUkhhbmRJbnB1dE1vZHVsZUVuYWJs
ZWQsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCisgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2Jq
ZWN0LAogICAgIFNlY3VyZUNvbnRleHQsCiAgICAgRXhwb3NlZD1XaW5kb3csCiAgICAgSW50ZXJm
YWNlTmFtZT1YUkpvaW50UG9zZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkpvaW50U3BhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUkpvaW50U3BhY2UuY3BwCmluZGV4IDllZTY1MGZlMDkwOGNiYzUzN2E4ZWM3OTMzZGE2ZjBl
NDhmMzUwZjAuLjM4ZDIyOWNiNjgyNGNkZjk3ZDliNzlhYTM2YWFkYmEzZjBiNmQ3OWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFjZS5jcHAKQEAg
LTI4LDYgKzI4LDggQEAKIAogI2lmIEVOQUJMRShXRUJYUikgJiYgRU5BQkxFKFdFQlhSX0hBTkRT
KQogCisjaW5jbHVkZSAiV2ViWFJGcmFtZS5oIgorI2luY2x1ZGUgIldlYlhSSGFuZC5oIgogI2lu
Y2x1ZGUgIldlYlhSUmlnaWRUcmFuc2Zvcm0uaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5s
aW5lcy5oPgogCkBAIC0zNSwyMiArMzcsNDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZf
TUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJKb2ludFNwYWNlKTsKIAotUmVmPFdlYlhSSm9p
bnRTcGFjZT4gV2ViWFJKb2ludFNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJY
UlNlc3Npb24mIHNlc3Npb24pCitSZWY8V2ViWFJKb2ludFNwYWNlPiBXZWJYUkpvaW50U3BhY2U6
OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSSGFuZCYgaGFuZCwgWFJIYW5kSm9pbnQg
am9pbnROYW1lLCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJ
bnB1dFNvdXJjZUhhbmRKb2ludD4mJiBqb2ludCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBXZWJYUkpvaW50U3BhY2UoZG9jdW1lbnQsIHNlc3Npb24pKTsKKyAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBXZWJYUkpvaW50U3BhY2UoZG9jdW1lbnQsIGhhbmQsIGpvaW50TmFtZSwgV1RGTW92
ZShqb2ludCkpKTsKIH0KIAotV2ViWFJKb2ludFNwYWNlOjpXZWJYUkpvaW50U3BhY2UoRG9jdW1l
bnQmIGRvY3VtZW50LCBXZWJYUlNlc3Npb24mIHNlc3Npb24pCitXZWJYUkpvaW50U3BhY2U6Oldl
YlhSSm9pbnRTcGFjZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSSGFuZCYgaGFuZCwgWFJIYW5k
Sm9pbnQgam9pbnROYW1lLCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVE
YXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4mJiBqb2ludCkKICAgICA6IFdlYlhSU3BhY2UoZG9j
dW1lbnQsIFdlYlhSUmlnaWRUcmFuc2Zvcm06OmNyZWF0ZSgpKQotICAgICwgbV9zZXNzaW9uKHNl
c3Npb24pCisgICAgLCBtX2hhbmQoaGFuZCkKKyAgICAsIG1fam9pbnROYW1lKGpvaW50TmFtZSkK
KyAgICAsIG1fam9pbnQoV1RGTW92ZShqb2ludCkpCiB7CiB9CiAKIFdlYlhSSm9pbnRTcGFjZTo6
fldlYlhSSm9pbnRTcGFjZSgpID0gZGVmYXVsdDsKIAordm9pZCBXZWJYUkpvaW50U3BhY2U6OnVw
ZGF0ZUZyb21Kb2ludChjb25zdCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4mIGpvaW50KQoreworICAgIG1fam9pbnQgPSBq
b2ludDsKK30KKworYm9vbCBXZWJYUkpvaW50U3BhY2U6OmhhbmRIYXNNaXNzaW5nUG9zZXMoKSBj
b25zdAoreworICAgIHJldHVybiAhbV9oYW5kIHx8IG1faGFuZC0+aGFzTWlzc2luZ1Bvc2VzKCk7
Cit9CisKK1dlYlhSU2Vzc2lvbiogV2ViWFJKb2ludFNwYWNlOjpzZXNzaW9uKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9oYW5kID8gbV9oYW5kLT5zZXNzaW9uKCkgOiBudWxscHRyOworfQorCiBz
dGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBXZWJYUkpvaW50U3BhY2U6Om5hdGl2
ZU9yaWdpbigpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAvLyBodHRw
czovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWhhbmQtaW5wdXQvI3hyam9pbnRzcGFj
ZS1pbnRlcmZhY2UKKyAgICAvLyBUaGUgbmF0aXZlIG9yaWdpbiBvZiB0aGUgWFJKb2ludFNwYWNl
IG1heSBvbmx5IGJlIHJlcG9ydGVkIHdoZW4gbmF0aXZlIG9yaWdpbnMgb2YKKyAgICAvLyBhbGwg
b3RoZXIgWFJKb2ludFNwYWNlcyBvbiB0aGUgc2FtZSBoYW5kIGFyZSBiZWluZyByZXBvcnRlZC4g
V2hlbiBhIGhhbmQgaXMgcGFydGlhbGx5CisgICAgLy8gb2JzY3VyZWQgdGhlIHVzZXIgYWdlbnQg
TVVTVCBlaXRoZXIgZW11bGF0ZSB0aGUgb2JzY3VyZWQgam9pbnRzLCBvciByZXBvcnQgbnVsbCBw
b3NlcworICAgIC8vIGZvciBhbGwgb2YgdGhlIGpvaW50cy4KKyAgICBpZiAoaGFuZEhhc01pc3Np
bmdQb3NlcygpIHx8ICFtX2pvaW50KQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgcmV0dXJuIFdlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKG1fam9pbnQtPnBvc2UucG9zZSk7
CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJK
b2ludFNwYWNlLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFj
ZS5oCmluZGV4IDUxMjU3YmNjNWU0YjY0NGUyYjM1MmZmZjM3MTk2NjliODg3Nzk2NWYuLmFlMDAx
MjQ1MmE3ZTdmNWEyOGYxN2ZiNzUyOWRiZDA0ZjVkNjBmOTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuaApAQCAtMjksMzEgKzI5LDM5IEBACiAK
ICNpbmNsdWRlICJEb2N1bWVudC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtWFIuaCIKLSNpbmNsdWRl
ICJXZWJYUlNlc3Npb24uaCIKICNpbmNsdWRlICJXZWJYUlNwYWNlLmgiCiAjaW5jbHVkZSAiWFJI
YW5kSm9pbnQuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
Zi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFz
cyBXZWJYUkpvaW50U3BhY2UgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUkpvaW50U3BhY2U+LCBw
dWJsaWMgV2ViWFJTcGFjZSB7CitjbGFzcyBXZWJYUkhhbmQ7CitjbGFzcyBXZWJYUlNlc3Npb247
CisKK2NsYXNzIFdlYlhSSm9pbnRTcGFjZSBmaW5hbDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJK
b2ludFNwYWNlPiwgcHVibGljIFdlYlhSU3BhY2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FU
RUQoV2ViWFJKb2ludFNwYWNlKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFdlYlhSSm9pbnRT
cGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJik7CisgICAgc3RhdGljIFJlZjxX
ZWJYUkpvaW50U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYlhSSGFuZCYsIFhSSGFuZEpvaW50
LCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZUhhbmRKb2ludD4mJiA9IHN0ZDo6bnVsbG9wdCk7CiAgICAgdmlydHVhbCB+V2ViWFJKb2ludFNw
YWNlKCk7CiAKICAgICB1c2luZyBSZWZDb3VudGVkPFdlYlhSSm9pbnRTcGFjZT46OnJlZjsKICAg
ICB1c2luZyBSZWZDb3VudGVkPFdlYlhSSm9pbnRTcGFjZT46OmRlcmVmOwogCi0gICAgWFJIYW5k
Sm9pbnQgam9pbnROYW1lKCkgY29uc3QgeyByZXR1cm4gWFJIYW5kSm9pbnQ6OldyaXN0OyB9Cisg
ICAgWFJIYW5kSm9pbnQgam9pbnROYW1lKCkgY29uc3QgeyByZXR1cm4gbV9qb2ludE5hbWU7IH0K
KworICAgIGZsb2F0IHJhZGl1cygpIGNvbnN0IHsgcmV0dXJuIG1fam9pbnQgPyBtX2pvaW50LT5y
YWRpdXMgOiAwOyB9CisgICAgdm9pZCB1cGRhdGVGcm9tSm9pbnQoY29uc3Qgc3RkOjpvcHRpb25h
bDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ+Jik7
CisgICAgYm9vbCBoYW5kSGFzTWlzc2luZ1Bvc2VzKCkgY29uc3Q7CisKKyAgICBXZWJYUlNlc3Np
b24qIHNlc3Npb24oKSBjb25zdCBmaW5hbDsKIAogcHJpdmF0ZToKLSAgICBXZWJYUkpvaW50U3Bh
Y2UoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mKTsKKyAgICBXZWJYUkpvaW50U3BhY2UoRG9jdW1l
bnQmLCBXZWJYUkhhbmQmLCBYUkhhbmRKb2ludCwgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ+JiYpOwogCi0gICAgV2ViWFJT
ZXNzaW9uKiBzZXNzaW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9zZXNzaW9uLmdldCgpOyB9
OwogICAgIHN0ZDo6b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IG5hdGl2ZU9yaWdpbigp
IGNvbnN0IGZpbmFsOwogCiAgICAgdm9pZCByZWZFdmVudFRhcmdldCgpIGZpbmFsIHsgcmVmKCk7
IH0KQEAgLTYxLDcgKzY5LDkgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgaXNKb2ludFNwYWNlKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgV2Vha1B0cjxXZWJYUlNlc3Npb24+
IG1fc2Vzc2lvbjsKKyAgICBXZWFrUHRyPFdlYlhSSGFuZD4gbV9oYW5kOworICAgIFhSSGFuZEpv
aW50IG1fam9pbnROYW1lIHsgWFJIYW5kSm9pbnQ6OldyaXN0IH07CisgICAgc3RkOjpvcHRpb25h
bDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ+IG1f
am9pbnQ7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSSm9pbnRTcGFjZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Sm9pbnRTcGFjZS5pZGwKaW5kZXggMDI0MTdlNTZhYzJmZWUyOGU3NDdkZGQ4YTkwZjE1MjM0ZGRl
ZWJiYy4uYTk4ZWMwODNjMWRmMDE3ODUzYTA3MmYxMmRjNzBkN2Y4YjQxNjhiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmlkbApAQCAtMjYs
NiArMjYsNyBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAogICAgIEVuYWJsZWRC
eVNldHRpbmc9V2ViWFJFbmFibGVkJldlYlhSSGFuZElucHV0TW9kdWxlRW5hYmxlZCwKKyAgICBK
U0dlbmVyYXRlVG9KU09iamVjdCwKICAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3QsCiAgICAg
U2VjdXJlQ29udGV4dCwKICAgICBFeHBvc2VkPVdpbmRvdywKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNwcAppbmRleCBmMGNlNThjYzIyNTBmZjdkMWY0ZjA0
YjM5ZjMwYmJmOWYwMmUyM2JiLi4yYjg0ZTBlOTg3MTIwMDc1MDk4YzljMzhmODQ0ZDc4ZmE0OWU0
ZWQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lv
bi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3Bw
CkBAIC02NDUsNiArNjQ1LDE0IEBAIGJvb2wgV2ViWFJTZXNzaW9uOjpwb3Nlc0NhbkJlUmVwb3J0
ZWQoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KSBjb25zdAogICAgIHJldHVybiB0cnVlOwogfQog
CisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorYm9vbCBXZWJYUlNlc3Npb246OmlzSGFuZFRyYWNr
aW5nRW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVxdWVzdGVkRmVhdHVyZXMuY29u
dGFpbnMoUGxhdGZvcm1YUjo6U2Vzc2lvbkZlYXR1cmU6OkhhbmRUcmFja2luZyk7Cit9CisjZW5k
aWYKKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5o
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAppbmRleCA4NjBj
NmY1YmI4MTFkYjQ3MTU4ZDQ1OTM5NWZhNjQzZGE5ZGMwNDMzLi5hNmNmYTg0ZWFhMmViYjE3NGZm
ZTgwYTAzMTdlYTk5NzhkZTdkNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVz
L3dlYnhyL1dlYlhSU2Vzc2lvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJTZXNzaW9uLmgKQEAgLTk4LDYgKzk4LDEwIEBAIHB1YmxpYzoKICAgICBjb25zdCBQbGF0
Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YSYgZnJhbWVEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9m
cmFtZURhdGE7IH0KICAgICBjb25zdCBXZWJYUlZpZXdlclNwYWNlJiB2aWV3ZXJSZWZlcmVuY2VT
cGFjZSgpIGNvbnN0IHsgcmV0dXJuICptX3ZpZXdlclJlZmVyZW5jZVNwYWNlOyB9CiAgICAgYm9v
bCBwb3Nlc0NhbkJlUmVwb3J0ZWQoY29uc3QgRG9jdW1lbnQmKSBjb25zdDsKKyAgICAKKyNpZiBF
TkFCTEUoV0VCWFJfSEFORFMpCisgICAgYm9vbCBpc0hhbmRUcmFja2luZ0VuYWJsZWQoKSBjb25z
dDsKKyNlbmRpZgogCiBwcml2YXRlOgogICAgIFdlYlhSU2Vzc2lvbihEb2N1bWVudCYsIFdlYlhS
U3lzdGVtJiwgWFJTZXNzaW9uTW9kZSwgUGxhdGZvcm1YUjo6RGV2aWNlJiwgRmVhdHVyZUxpc3Qm
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oKaW5kZXggNjdkNmNjMTNkMjgyYjVlYjczNzIzYjk4ZjM2YzUzN2I3ZTNhMjYxYS4uMmM4YWE5
YTM0YTE1MGQ5ZmUyYjU4NDMwYTBjMjBjZWQ3MDM5MGY5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTc0Nyw2ICsxNzQ3LDcg
QEAKIAkJNTI3M0NDQjIyNTY0NTc2RjAwODUwMDA3IC8qIEpTRmFrZVhSQnV0dG9uU3RhdGVJbml0
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzND
Q0FEMjU2NDU3NkMwMDg1MDAwNyAvKiBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHAgKi87IH07
CiAJCTUyNzNDQ0IzMjU2NDU3NkYwMDg1MDAwNyAvKiBKU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5p
dC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Mjcz
Q0NBRTI1NjQ1NzZEMDA4NTAwMDcgLyogSlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuY3BwICov
OyB9OwogCQk1MjczQ0NCNDI1NjQ1NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJWaWV3SW5pdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjczQ0NBRjI1
NjQ1NzZFMDA4NTAwMDcgLyogSlNGYWtlWFJWaWV3SW5pdC5jcHAgKi87IH07CisJCTUyQTBCRTY2
MjdDMjI3RTEwMDQ2NjExRSAvKiBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQTBCRTY1MjdDMjI3RTAwMDQ2
NjExRSAvKiBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcCAqLzsgfTsKIAkJNTJCMEQ0QkUxQzU3
RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCMEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3Jt
Vmlldy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUyQjBENEMwMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZl
ci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCMEQ0
QkYxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmggKi87
IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJCMEQ0QzIx
QzU3RkY5MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJCMEQ0QzExQzU3RkY5MTAw
NzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMDA3Miw2ICsxMDA3Myw4IEBACiAJ
CTUxRkI2N0Q5MUFFNkI1RTQwMEQwNkM1QSAvKiBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9u
U3R5bGVTaGVldC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUxRkI2N0RBMUFF
NkI1RTQwMEQwNkM1QSAvKiBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBDb250ZW50RXh0ZW5zaW9uU3R5bGVTaGVldC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjEzMUU1QTFDNEYxNTYxMDAzM0Y4MDIgLyogVmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQk1MjYzQkYyMDI3QzFCNTM4MDA4NTI1MEMgLyogRmFrZVhSSm9pbnRT
dGF0ZUluaXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFrZVhSSm9pbnRTdGF0ZUluaXQuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2M0JGMjIyN0MxQjUzQjAwODUyNTBDIC8qIEZha2VY
UkpvaW50U3RhdGVJbml0LmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IHBhdGggPSBGYWtlWFJKb2ludFN0YXRlSW5pdC5pZGw7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjcyNEYxMUNCMkZERjYwMDc1OTc0RCAvKiBUZXh0
VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzI0RjIxQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFja1Jl
cHJlc2VudGF0aW9uQ29jb2EuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVGV4
dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MjY4OEFBMzI3RDZBN0RBMDAzNTc3QTIgLyogUmVzaWRlbnRLZXlSZXF1aXJlbWVudC5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBSZXNpZGVudEtleVJlcXVpcmVtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CkBAIC0xMDA4Nyw2ICsxMDA5MCw3IEBACiAJCTUyNzNDQ0FEMjU2NDU3NkMwMDg1
MDAwNyAvKiBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTUyNzNDQ0FFMjU2NDU3NkQwMDg1MDAwNyAvKiBKU0Zha2VYUlJp
Z2lkVHJhbnNmb3JtSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGgg
PSBKU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRmFrZVhSVmlld0luaXQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MkEwQkU2NTI3QzIyN0UwMDA0NjYxMUUg
LyogSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IG5hbWUgPSBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcDsgcGF0aCA9IEpTRmFrZVhSSm9p
bnRTdGF0ZUluaXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkIwRDRCRDFD
NTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFBsYXRmb3JtVmlldy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MkIwRDRCRjFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTJCMEQ0QzExQzU3RkY5
MTAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIxMTg5LDYgKzIxMTkzLDggQEAKIAkJCQlFMThEODNF
MzI0M0Y3MUNGMDA5MjQ3RDYgLyogRmFrZVhSQnV0dG9uU3RhdGVJbml0LmlkbCAqLywKIAkJCQlF
MThEODNFQTI0M0Y3MUQ0MDA5MjQ3RDYgLyogRmFrZVhSSW5wdXRTb3VyY2VJbml0LmggKi8sCiAJ
CQkJRTE4RDgzREMyNDNGNzFDQjAwOTI0N0Q2IC8qIEZha2VYUklucHV0U291cmNlSW5pdC5pZGwg
Ki8sCisJCQkJNTI2M0JGMjAyN0MxQjUzODAwODUyNTBDIC8qIEZha2VYUkpvaW50U3RhdGVJbml0
LmggKi8sCisJCQkJNTI2M0JGMjIyN0MxQjUzQjAwODUyNTBDIC8qIEZha2VYUkpvaW50U3RhdGVJ
bml0LmlkbCAqLywKIAkJCQlFMThEODNFNTI0M0Y3MUQxMDA5MjQ3RDYgLyogRmFrZVhSUmlnaWRU
cmFuc2Zvcm1Jbml0LmggKi8sCiAJCQkJRTE4RDgzRTYyNDNGNzFEMTAwOTI0N0Q2IC8qIEZha2VY
UlJpZ2lkVHJhbnNmb3JtSW5pdC5pZGwgKi8sCiAJCQkJRTE4RDgzREYyNDNGNzFDRDAwOTI0N0Q2
IC8qIEZha2VYUlZpZXdJbml0LmggKi8sCkBAIC0yMTI4NCw2ICsyMTI5MCw3IEBACiAJCQkJNTI3
M0NDQUMyNTY0NTc2QzAwODUwMDA3IC8qIEpTRmFrZVhSQm91bmRzUG9pbnQuY3BwICovLAogCQkJ
CTUyNzNDQ0FEMjU2NDU3NkMwMDg1MDAwNyAvKiBKU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHAg
Ki8sCiAJCQkJNTI3M0NDQUEyNTY0NTc2QjAwODUwMDA3IC8qIEpTRmFrZVhSSW5wdXRTb3VyY2VJ
bml0LmNwcCAqLywKKwkJCQk1MkEwQkU2NTI3QzIyN0UwMDA0NjYxMUUgLyogSlNGYWtlWFJKb2lu
dFN0YXRlSW5pdC5jcHAgKi8sCiAJCQkJNTI3M0NDQUUyNTY0NTc2RDAwODUwMDA3IC8qIEpTRmFr
ZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNwcCAqLywKIAkJCQk1MjczQ0NBRjI1NjQ1NzZFMDA4NTAw
MDcgLyogSlNGYWtlWFJWaWV3SW5pdC5jcHAgKi8sCiAJCQkJNTE3MTRFQUUxQ0Y2NjU0QTAwNDcy
M0M0IC8qIEpTR0NPYnNlcnZhdGlvbi5jcHAgKi8sCkBAIC0zODg3Miw2ICszODg3OSw3IEBACiAJ
CQkJNTI3M0NDQjEyNTY0NTc2RjAwODUwMDA3IC8qIEpTRmFrZVhSQm91bmRzUG9pbnQuY3BwIGlu
IFNvdXJjZXMgKi8sCiAJCQkJNTI3M0NDQjIyNTY0NTc2RjAwODUwMDA3IC8qIEpTRmFrZVhSQnV0
dG9uU3RhdGVJbml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzNDQ0IwMjU2NDU3NkYwMDg1
MDAwNyAvKiBKU0Zha2VYUklucHV0U291cmNlSW5pdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1
MkEwQkU2NjI3QzIyN0UxMDA0NjYxMUUgLyogSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk1MjczQ0NCMzI1NjQ1NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJSaWdp
ZFRyYW5zZm9ybUluaXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI3M0NDQjQyNTY0NTc2RjAw
ODUwMDA3IC8qIEpTRmFrZVhSVmlld0luaXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJREU1Rjg2
MTIxRkEyMzlFNzAwNkRCNjNBIC8qIEpTR0NPYnNlcnZhdGlvbi5jcHAgaW4gU291cmNlcyAqLywK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaAppbmRleCA5M2QwM2Y4YWM5YTIy
ZTM0N2E4YjNmNjQwM2YxMmY4NGIxN2FlYzVmLi41NGQyZWI3MjgyYzM5NDg3NTZiZDg1MmFhOTZi
ZTMxM2IxNzQ5N2Q3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0
Zm9ybVhSLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCkBA
IC0xNjMsNyArMTYzLDcgQEAgaW5saW5lIFN0cmluZyBzZXNzaW9uRmVhdHVyZURlc2NyaXB0b3Io
U2Vzc2lvbkZlYXR1cmUgc2Vzc2lvbkZlYXR1cmUpCiAjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQog
CiBlbnVtIGNsYXNzIEhhbmRKb2ludCA6IHVuc2lnbmVkIHsKLSAgICBXcmlzdCwKKyAgICBXcmlz
dCA9IDAsCiAgICAgVGh1bWJNZXRhY2FycGFsLAogICAgIFRodW1iUGhhbGFueFByb3hpbWFsLAog
ICAgIFRodW1iUGhhbGFueERpc3RhbCwKQEAgLTE4Nyw3ICsxODcsOCBAQCBlbnVtIGNsYXNzIEhh
bmRKb2ludCA6IHVuc2lnbmVkIHsKICAgICBQaW5reUZpbmdlclBoYWxhbnhQcm94aW1hbCwKICAg
ICBQaW5reUZpbmdlclBoYWxhbnhJbnRlcm1lZGlhdGUsCiAgICAgUGlua3lGaW5nZXJQaGFsYW54
RGlzdGFsLAotICAgIFBpbmt5RmluZ2VyVGlwCisgICAgUGlua3lGaW5nZXJUaXAsCisgICAgQ291
bnQKIH07CiAKICNlbmRpZgpAQCAtMzEzLDYgKzMxNCwxOCBAQCBwdWJsaWM6CiAgICAgICAgICAg
ICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpvcHRpb25hbDxJbnB1dFNvdXJj
ZVBvc2U+IGRlY29kZShEZWNvZGVyJik7CiAgICAgICAgIH07CiAKKyNpZiBFTkFCTEUoV0VCWFJf
SEFORFMpCisgICAgICAgIHN0cnVjdCBJbnB1dFNvdXJjZUhhbmRKb2ludCB7CisgICAgICAgICAg
ICBJbnB1dFNvdXJjZVBvc2UgcG9zZTsKKyAgICAgICAgICAgIGZsb2F0IHJhZGl1cyB7IDAgfTsK
KworICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2Rl
ciYpIGNvbnN0OworICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0
ZDo6b3B0aW9uYWw8SW5wdXRTb3VyY2VIYW5kSm9pbnQ+IGRlY29kZShEZWNvZGVyJik7CisgICAg
ICAgIH07CisKKyAgICAgICAgdXNpbmcgSGFuZEpvaW50c1ZlY3RvciA9IFZlY3RvcjxzdGQ6Om9w
dGlvbmFsPElucHV0U291cmNlSGFuZEpvaW50Pj47CisjZW5kaWYKKwogICAgICAgICBzdHJ1Y3Qg
SW5wdXRTb3VyY2UgewogICAgICAgICAgICAgSW5wdXRTb3VyY2VIYW5kbGUgaGFuZGxlIHsgMCB9
OwogICAgICAgICAgICAgWFJIYW5kZWRuZXNzIGhhbmRlbmVzcyB7IFhSSGFuZGVkbmVzczo6Tm9u
ZSB9OwpAQCAtMzIzLDggKzMzNiw3IEBAIHB1YmxpYzoKICAgICAgICAgICAgIFZlY3RvcjxJbnB1
dFNvdXJjZUJ1dHRvbj4gYnV0dG9uczsKICAgICAgICAgICAgIFZlY3RvcjxmbG9hdD4gYXhlczsK
ICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgICAgICAgICAvLyBGSVhNRTogQWN0dWFsbHkg
aG9sZCBzb21lIGhhbmQgZGF0YS4KLSAgICAgICAgICAgIGJvb2wgc2ltdWxhdGVIYW5kIHsgZmFs
c2UgfTsKKyAgICAgICAgICAgIHN0ZDo6b3B0aW9uYWw8SGFuZEpvaW50c1ZlY3Rvcj4gaGFuZEpv
aW50czsKICNlbmRpZgogCiAgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lk
IGVuY29kZShFbmNvZGVyJikgY29uc3Q7CkBAIC02MjQsNiArNjM2LDI5IEBAIHN0ZDo6b3B0aW9u
YWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlUG9zZT4gRGV2aWNlOjpGcmFtZURhdGE6
OklucHV0U291cmNlCiAgICAgcmV0dXJuIGlucHV0U291cmNlUG9zZTsKIH0KIAorI2lmIEVOQUJM
RShXRUJYUl9IQU5EUykKK3RlbXBsYXRlPGNsYXNzIEVuY29kZXI+Cit2b2lkIERldmljZTo6RnJh
bWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludDo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNv
bnN0Cit7CisgICAgZW5jb2RlciA8PCBwb3NlOworICAgIGVuY29kZXIgPDwgcmFkaXVzOworfQor
Cit0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgorc3RkOjpvcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0
YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ+IERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhh
bmRKb2ludDo6ZGVjb2RlKERlY29kZXImIGRlY29kZXIpCit7CisgICAgc3RkOjpvcHRpb25hbDxJ
bnB1dFNvdXJjZVBvc2U+IHBvc2U7CisgICAgZGVjb2RlciA+PiBwb3NlOworICAgIGlmICghcG9z
ZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzdGQ6Om9wdGlvbmFsPGZsb2F0
PiByYWRpdXM7CisgICAgZGVjb2RlciA+PiByYWRpdXM7CisgICAgaWYgKCFyYWRpdXMpCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgcmV0dXJuIHsgeyBXVEZNb3ZlKCpwb3NlKSwg
KnJhZGl1cyB9IH07Cit9CisjZW5kaWYKKwogdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KIHZvaWQg
RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2Rlcikg
Y29uc3QKIHsKQEAgLTYzNSw2ICs2NzAsOSBAQCB2b2lkIERldmljZTo6RnJhbWVEYXRhOjpJbnB1
dFNvdXJjZTo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIpIGNvbnN0CiAgICAgZW5jb2RlciA8PCBn
cmlwT3JpZ2luOwogICAgIGVuY29kZXIgPDwgYnV0dG9uczsKICAgICBlbmNvZGVyIDw8IGF4ZXM7
CisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorICAgIGVuY29kZXIgPDwgaGFuZEpvaW50czsKKyNl
bmRpZgogfQogCiB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPgpAQCAtNjU3LDYgKzY5NSwxMCBAQCBz
dGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZT4gRGV2aWNlOjpGcmFt
ZURhdGE6OklucHV0U291cmNlOjpkZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
IGlmICghZGVjb2Rlci5kZWNvZGUoc291cmNlLmF4ZXMpKQogICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHNvdXJjZS5oYW5kSm9pbnRzKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyNlbmRp
ZgogICAgIHJldHVybiBzb3VyY2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zh
a2VYUklucHV0U291cmNlSW5pdC5oCmluZGV4IDE2MDc2MmQ3ZDQ3N2FiZjY0ZDA1MjQ2NGZlYjlk
ZDIwNTUwOWRhYWUuLjlhNGFlMzNhNmJkOTA4YTc0ZmE3MDNmMGY1M2E0ZGJhZGZlOTU2NDAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaApAQCAt
MzQsNiArMzQsMTAgQEAKICNpbmNsdWRlICJYUlRhcmdldFJheU1vZGUuaCIKICNpbmNsdWRlIDx3
dGYvVmVjdG9yLmg+CiAKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCisjaW5jbHVkZSAiRmFrZVhS
Sm9pbnRTdGF0ZUluaXQuaCIKKyNlbmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0cnVj
dCBGYWtlWFJJbnB1dFNvdXJjZUluaXQgewpAQCAtNDYsNyArNTAsNyBAQCBzdHJ1Y3QgRmFrZVhS
SW5wdXRTb3VyY2VJbml0IHsKICAgICBWZWN0b3I8RmFrZVhSQnV0dG9uU3RhdGVJbml0PiBzdXBw
b3J0ZWRCdXR0b25zOwogICAgIEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2luOwog
I2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICBib29sIHNpbXVsYXRlSGFuZCB7IGZhbHNlIH07
CisgICAgVmVjdG9yPEZha2VYUkpvaW50U3RhdGVJbml0PiBoYW5kSm9pbnRzOwogI2VuZGlmCiB9
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNl
SW5pdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5p
ZGwKaW5kZXggMTAxNjY1Y2RkM2Y4Mjg2NGU0OGM4NWYzMGYzMzY0ZGU2N2EyNTc1YS4uYzc1MDYy
YmVjNzc0NjIyOTNlMmM1YWNmNjcyOTJkNzM2YjIzZTExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0LmlkbApAQCAtNDMsNSArNDMsNSBAQAog
ICAgIEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2luOwogICAgIC8vIE9wdGlvbmFs
IGhhbmQgaW5wdXQuIEZvciBub3cgd2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgYWN0dWFsCiAgICAg
Ly8gZGF0YS4gV2UncmUganVzdCBjcmVhdGluZyB0aGUgb2JqZWN0IGZvciB0ZXN0aW5nLgotICAg
IFtDb25kaXRpb25hbD1XRUJYUl9IQU5EU10gYm9vbGVhbiBzaW11bGF0ZUhhbmQgPSBmYWxzZTsK
KyAgICBbQ29uZGl0aW9uYWw9V0VCWFJfSEFORFNdIHNlcXVlbmNlPEZha2VYUkpvaW50U3RhdGVJ
bml0PiBoYW5kSm9pbnRzOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
RmFrZVhSSm9pbnRTdGF0ZUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSm9p
bnRTdGF0ZUluaXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MWQyMzUxNTBiNzZkY2RkMTUxMzMyMmJlNTBkNjA1
ODNiOThhM2YxCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtl
WFJKb2ludFN0YXRlSW5pdC5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKworI2luY2x1ZGUgIkZha2VYUlJpZ2lk
VHJhbnNmb3JtSW5pdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK3N0cnVjdCBGYWtlWFJK
b2ludFN0YXRlSW5pdCB7CisgICAgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IHBvc2U7CisgICAg
ZmxvYXQgcmFkaXVzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYgLy8g
RU5BQkxFKFdFQlhSX0hBTkRTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9G
YWtlWFJKb2ludFN0YXRlSW5pdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUkpv
aW50U3RhdGVJbml0LmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjAxNDIwOWZmODRjOTNmY2VhMWQ2NjMwNTYx
Mjc4ZGIzNjk4YjU2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9G
YWtlWFJKb2ludFN0YXRlSW5pdC5pZGwKQEAgLTAsMCArMSwzMyBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKy8v
IFVzZWQgdG8gdXBkYXRlIHRoZSBwb3NlIGFuZCByYWRpdXMgb2YgYSBqb2ludAorWworICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViWFJFbmFibGVkJldlYlhSSGFuZElucHV0TW9kdWxlRW5hYmxlZCwK
KyAgICBDb25kaXRpb25hbD1XRUJYUl9IQU5EUywKK10gZGljdGlvbmFyeSBGYWtlWFJKb2ludFN0
YXRlSW5pdCB7CisgICAgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IHBvc2U7CisgICAgZmxvYXQg
cmFkaXVzID0gMC4wOworfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFr
ZVhSSW5wdXRDb250cm9sbGVyLmNwcAppbmRleCA1MjI0ZDI4ZTA3MjYzZDg4YzNiZGFjNWRiZDhi
YWRmNTAwNDlkOWQzLi4yNmQ0MzVhMzM4MjA2YTNjYWE2NDZmNWU5NTA1MzEwZjA0ODg5ZjUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xs
ZXIuY3BwCkBAIC0yOCw2ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpCiAjaW5jbHVkZSAi
V2ViRmFrZVhSRGV2aWNlLmgiCisjaW5jbHVkZSAiWFJIYW5kSm9pbnQuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCkBAIC0zNiw2ICszNywxMSBAQCB1c2luZyBJbnB1dFNvdXJjZUJ1dHRvbiA9
IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUJ1dHRvbjsKIHVzaW5n
IElucHV0U291cmNlUG9zZSA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNv
dXJjZVBvc2U7CiB1c2luZyBCdXR0b25UeXBlID0gRmFrZVhSQnV0dG9uU3RhdGVJbml0OjpUeXBl
OwogCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQordXNpbmcgSGFuZEpvaW50c1ZlY3RvciA9IFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpIYW5kSm9pbnRzVmVjdG9yOwordXNpbmcgSW5w
dXRTb3VyY2VIYW5kSm9pbnQgPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRT
b3VyY2VIYW5kSm9pbnQ7CisjZW5kaWYKKwogLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1
Yi5pby93ZWJ4ci1nYW1lcGFkcy1tb2R1bGUvI3hyLXN0YW5kYXJkLWdhbWVwYWQtbWFwcGluZwog
Y29uc3RleHByIHN0ZDo6YXJyYXk8QnV0dG9uVHlwZSwgNT4gWFJfU1RBTkRBUkRfQlVUVE9OUyA9
IHsgQnV0dG9uVHlwZTo6R3JpcCwgQnV0dG9uVHlwZTo6VG91Y2hwYWQsIEJ1dHRvblR5cGU6OlRo
dW1ic3RpY2ssIEJ1dHRvblR5cGU6Ok9wdGlvbmFsQnV0dG9uLCBCdXR0b25UeXBlOjpPcHRpb25h
bFRodW1ic3RpY2sgfTsKIApAQCAtNTEsMTMgKzU3LDEzIEBAIFdlYkZha2VYUklucHV0Q29udHJv
bGxlcjo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyKFBsYXRmb3JtWFI6OklucHV0U291cmNlSGFu
ZGxlCiAgICAgLCBtX3Byb2ZpbGVzKGluaXQucHJvZmlsZXMpCiAgICAgLCBtX3ByaW1hcnlTZWxl
Y3RlZChpbml0LnNlbGVjdGlvblN0YXJ0ZWQpCiAgICAgLCBtX3NpbXVsYXRlU2VsZWN0KGluaXQu
c2VsZWN0aW9uQ2xpY2tlZCkKLSNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgLCBtX3NpbXVs
YXRlSGFuZChpbml0LnNpbXVsYXRlSGFuZCkKLSNlbmRpZgogewogICAgIHNldFBvaW50ZXJPcmln
aW4oaW5pdC5wb2ludGVyT3JpZ2luLCBmYWxzZSk7CiAgICAgc2V0R3JpcE9yaWdpbihpbml0Lmdy
aXBPcmlnaW4sIGZhbHNlKTsKICAgICBzZXRTdXBwb3J0ZWRCdXR0b25zKGluaXQuc3VwcG9ydGVk
QnV0dG9ucyk7CisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorICAgIHVwZGF0ZUhhbmRKb2ludHMo
aW5pdC5oYW5kSm9pbnRzKTsKKyNlbmRpZgogfQogCiB2b2lkIFdlYkZha2VYUklucHV0Q29udHJv
bGxlcjo6c2V0R3JpcE9yaWdpbihGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgZ3JpcE9yaWdpbiwg
Ym9vbCBlbXVsYXRlZFBvc2l0aW9uKQpAQCAtMTEwLDcgKzExNiw3IEBAIElucHV0U291cmNlIFdl
YkZha2VYUklucHV0Q29udHJvbGxlcjo6Z2V0RnJhbWVEYXRhKCkKICAgICBzdGF0ZS5wb2ludGVy
T3JpZ2luID0gbV9wb2ludGVyT3JpZ2luOwogICAgIHN0YXRlLmdyaXBPcmlnaW4gPSBtX2dyaXBP
cmlnaW47CiAjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQotICAgIHN0YXRlLnNpbXVsYXRlSGFuZCA9
IG1fc2ltdWxhdGVIYW5kOworICAgIHN0YXRlLmhhbmRKb2ludHMgPSBtX2hhbmRKb2ludHM7CiAj
ZW5kaWYKIAogICAgIGlmIChtX3NpbXVsYXRlU2VsZWN0KQpAQCAtMTgyLDYgKzE4OCwyOCBAQCBX
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OkJ1dHRvbk9yUGxhY2Vob2xkZXIgV2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyOjpnZXRCdXR0bwogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKyNpZiBFTkFC
TEUoV0VCWFJfSEFORFMpCit2b2lkIFdlYkZha2VYUklucHV0Q29udHJvbGxlcjo6dXBkYXRlSGFu
ZEpvaW50cyhjb25zdCBWZWN0b3I8RmFrZVhSSm9pbnRTdGF0ZUluaXQ+JiBoYW5kSm9pbnRzKQor
eworICAgIGlmIChoYW5kSm9pbnRzLmlzRW1wdHkoKSB8fCBoYW5kSm9pbnRzLnNpemUoKSAhPSBz
dGF0aWNfY2FzdDxzaXplX3Q+KFhSSGFuZEpvaW50OjpDb3VudCkpIHsKKyAgICAgICAgbV9oYW5k
Sm9pbnRzID0gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgSGFu
ZEpvaW50c1ZlY3RvciB1cGRhdGVkSm9pbnRzOworICAgIGZvciAoYXV0byBoYW5kSm9pbnQgOiBo
YW5kSm9pbnRzKSB7CisgICAgICAgIGF1dG8gdHJhbnNmb3JtID0gV2ViRmFrZVhSRGV2aWNlOjpw
YXJzZVJpZ2lkVHJhbnNmb3JtKGhhbmRKb2ludC5wb3NlKTsKKyAgICAgICAgaWYgKHRyYW5zZm9y
bS5oYXNFeGNlcHRpb24oKSkgeworICAgICAgICAgICAgdXBkYXRlZEpvaW50cy5hcHBlbmQoc3Rk
OjpudWxsb3B0KTsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIAor
ICAgICAgICB1cGRhdGVkSm9pbnRzLmFwcGVuZChJbnB1dFNvdXJjZUhhbmRKb2ludCB7IElucHV0
U291cmNlUG9zZSB7IHRyYW5zZm9ybS5yZWxlYXNlUmV0dXJuVmFsdWUoKSwgZmFsc2UgfSwgaGFu
ZEpvaW50LnJhZGl1cyB9KTsKKyAgICB9CisgICAgbV9oYW5kSm9pbnRzID0gV1RGTW92ZSh1cGRh
dGVkSm9pbnRzKTsKK30KKyNlbmRpZiAvLyBFTkFCTEUoV0VCWFJfSEFORFMpCisKIH0gLy8gbmFt
ZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oCmluZGV4IDRkNjkwZmE3
M2U1MWVkMjY1Yjk5Njk5OWFhZjdjODc2ZDU5N2FjM2EuLmNhMjBhNjk0Mjk2ZWVlYzI4OWY3MjY1
ZDY2ZjkzZjU1OTg4N2ViYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2Vi
RmFrZVhSSW5wdXRDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXIuaApAQCAtMzcsNiArMzcsMTAgQEAKICNpbmNsdWRlIDx3dGYv
UmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAorI2lmIEVOQUJMRShXRUJY
Ul9IQU5EUykKKyNpbmNsdWRlICJGYWtlWFJKb2ludFN0YXRlSW5pdC5oIgorI2VuZGlmCisKIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyIGZpbmFs
IDogcHVibGljIFJlZkNvdW50ZWQ8V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyPiB7CkBAIC01Nyw2
ICs2MSwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRTdXBwb3J0ZWRCdXR0b25zKGNvbnN0IFZl
Y3RvcjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+Jik7CiAgICAgdm9pZCB1cGRhdGVCdXR0b25TdGF0
ZShjb25zdCBGYWtlWFJCdXR0b25TdGF0ZUluaXQmKTsKICAgICBib29sIGlzQ29ubmVjdGVkKCkg
Y29uc3QgeyByZXR1cm4gbV9jb25uZWN0ZWQ7IH0KKyAgICAKKyNpZiBFTkFCTEUoV0VCWFJfSEFO
RFMpCisgICAgdm9pZCB1cGRhdGVIYW5kSm9pbnRzKGNvbnN0IFZlY3RvcjxGYWtlWFJKb2ludFN0
YXRlSW5pdD4mKTsKKyNlbmRpZgogCiAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OklucHV0U291cmNlIGdldEZyYW1lRGF0YSgpOwogCkBAIC04MCw3ICs4OCw3IEBAIHByaXZhdGU6
CiAgICAgYm9vbCBtX3ByaW1hcnlTZWxlY3RlZCB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3NpbXVs
YXRlU2VsZWN0IHsgZmFsc2UgfTsKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgYm9vbCBt
X3NpbXVsYXRlSGFuZCB7IGZhbHNlIH07CisgICAgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6SGFuZEpvaW50c1ZlY3Rvcj4gbV9oYW5kSm9pbnRzOwogI2VuZGlm
CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0
Q29udHJvbGxlci5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29u
dHJvbGxlci5pZGwKaW5kZXggYTk5YTI2MWU4NzdmODBlZjBjYjdlODhhNWZhNThhYTIxN2YyMmY0
NS4uZDljNTg3OTVkMDRmY2NiN2JjOGM0YzAwYTQyYTNlYTdiOThiMDJiNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmlkbApAQCAt
NzMsNCArNzMsNiBAQAogICAgIC8vIFVzZWQgdG8gdXBkYXRlIHRoZSBzdGF0ZSBvZiBhIGJ1dHRv
biBjdXJyZW50bHkgc3VwcG9ydGVkIGJ5IHRoZSBpbnB1dCBzb3VyY2UKICAgICAvLyBXaWxsIG5v
dCBhZGQgc3VwcG9ydCBmb3IgdGhhdCBidXR0b24gaWYgaXQgaXMgbm90IGN1cnJlbnRseSBzdXBw
b3J0ZWQuCiAgICAgdW5kZWZpbmVkIHVwZGF0ZUJ1dHRvblN0YXRlKEZha2VYUkJ1dHRvblN0YXRl
SW5pdCBidXR0b25TdGF0ZSk7CisgICAgCisgICAgW0NvbmRpdGlvbmFsPVdFQlhSX0hBTkRTXSB1
bmRlZmluZWQgdXBkYXRlSGFuZEpvaW50cyhzZXF1ZW5jZTxGYWtlWFJKb2ludFN0YXRlSW5pdD4g
aGFuZEpvaW50cyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJY
UlRlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuY3BwCmluZGV4IDU0
N2NkYmNjN2YxMDc1NWU3ZGM2MmJmN2YxYTQwMzM3ZDUxZmU3MzguLjNkNjYyZjEwYzQzMjI0NjA2
ODM2NzYxYmZhMzk4NDRiZDUyM2IyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvV2ViWFJUZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5j
cHAKQEAgLTM5LDYgKzM5LDE5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV2ViWFJUZXN0Ojp+
V2ViWFJUZXN0KCkgPSBkZWZhdWx0OwogCitzdGF0aWMgUGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0
dXJlTGlzdCBwYXJzZUZlYXR1cmVzKGNvbnN0IFZlY3RvcjxKU0M6OkpTVmFsdWU+JiBmZWF0dXJl
TGlzdCwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZlYXR1cmVMaXN0IGZlYXR1cmVzOworICAgIGlmIChhdXRvKiBnbG9iYWxPYmpl
Y3QgPSBjb250ZXh0Lmdsb2JhbE9iamVjdCgpKSB7CisgICAgICAgIGZvciAoYXV0byYgZmVhdHVy
ZSA6IGZlYXR1cmVMaXN0KSB7CisgICAgICAgICAgICBhdXRvIGZlYXR1cmVTdHJpbmcgPSBmZWF0
dXJlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBpZiAoYXV0byBzZXNz
aW9uRmVhdHVyZSA9IFBsYXRmb3JtWFI6OnBhcnNlU2Vzc2lvbkZlYXR1cmVEZXNjcmlwdG9yKGZl
YXR1cmVTdHJpbmcpKQorICAgICAgICAgICAgICAgIGZlYXR1cmVzLmFwcGVuZCgqc2Vzc2lvbkZl
YXR1cmUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBmZWF0dXJlczsKK30KKwogdm9p
ZCBXZWJYUlRlc3Q6OnNpbXVsYXRlRGV2aWNlQ29ubmVjdGlvbihTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBGYWtlWFJEZXZpY2VJbml0JiBpbml0LCBXZWJGYWtlWFJEZXZp
Y2VQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0
aHViLmlvL3dlYnhyLXRlc3QtYXBpLyNkb20teHJ0ZXN0LXNpbXVsYXRlZGV2aWNlY29ubmVjdGlv
bgpAQCAtNDgsMTYgKzYxLDEyIEBAIHZvaWQgV2ViWFJUZXN0OjpzaW11bGF0ZURldmljZUNvbm5l
Y3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QKIAogICAgICAgICBk
ZXZpY2UtPnNldFZpZXdzKGluaXQudmlld3MpOwogCi0gICAgICAgIFBsYXRmb3JtWFI6OkRldmlj
ZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7Ci0gICAgICAgIGlmIChpbml0LnN1cHBvcnRlZEZlYXR1
cmVzKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogZ2xvYmFsT2JqZWN0ID0gY29udGV4dC5nbG9i
YWxPYmplY3QoKSkgewotICAgICAgICAgICAgICAgIGZvciAoYXV0byYgZmVhdHVyZSA6IGluaXQu
c3VwcG9ydGVkRmVhdHVyZXMudmFsdWUoKSkgewotICAgICAgICAgICAgICAgICAgICBhdXRvIGZl
YXR1cmVTdHJpbmcgPSBmZWF0dXJlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7Ci0gICAgICAg
ICAgICAgICAgICAgIGlmIChhdXRvIHNlc3Npb25GZWF0dXJlID0gUGxhdGZvcm1YUjo6cGFyc2VT
ZXNzaW9uRmVhdHVyZURlc2NyaXB0b3IoZmVhdHVyZVN0cmluZykpCi0gICAgICAgICAgICAgICAg
ICAgICAgICBmZWF0dXJlcy5hcHBlbmQoKnNlc3Npb25GZWF0dXJlKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KKyAgICAgICAgUGxhdGZvcm1YUjo6RGV2aWNl
OjpGZWF0dXJlTGlzdCBzdXBwb3J0ZWRGZWF0dXJlczsKKyAgICAgICAgaWYgKGluaXQuc3VwcG9y
dGVkRmVhdHVyZXMpCisgICAgICAgICAgICBzdXBwb3J0ZWRGZWF0dXJlcyA9IHBhcnNlRmVhdHVy
ZXMoaW5pdC5zdXBwb3J0ZWRGZWF0dXJlcy52YWx1ZSgpLCBjb250ZXh0KTsKKyAgICAgICAgUGxh
dGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlzdCBlbmFibGVkRmVhdHVyZXM7CisgICAgICAgIGlm
IChpbml0LmVuYWJsZWRGZWF0dXJlcykKKyAgICAgICAgICAgIGVuYWJsZWRGZWF0dXJlcyA9IHBh
cnNlRmVhdHVyZXMoaW5pdC5lbmFibGVkRmVhdHVyZXMudmFsdWUoKSwgY29udGV4dCk7CiAKICAg
ICAgICAgaWYgKGluaXQuYm91bmRzQ29vcmRpbmF0ZXMpIHsKICAgICAgICAgICAgIGlmIChpbml0
LmJvdW5kc0Nvb3JkaW5hdGVzLT5zaXplKCkgPCAzKSB7CkBAIC04NCw4ICs5MywxMCBAQCB2b2lk
IFdlYlhSVGVzdDo6c2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0CiAgICAgICAgICAgICAgICAgc3VwcG9ydGVkTW9kZXMuYXBwZW5k
KFhSU2Vzc2lvbk1vZGU6OkltbWVyc2l2ZVZyKTsKICAgICAgICAgfQogCi0gICAgICAgIGZvciAo
YXV0byYgbW9kZSA6IHN1cHBvcnRlZE1vZGVzKQotICAgICAgICAgICAgc2ltdWxhdGVkRGV2aWNl
LnNldFN1cHBvcnRlZEZlYXR1cmVzKG1vZGUsIGZlYXR1cmVzKTsKKyAgICAgICAgZm9yIChhdXRv
JiBtb2RlIDogc3VwcG9ydGVkTW9kZXMpIHsKKyAgICAgICAgICAgIHNpbXVsYXRlZERldmljZS5z
ZXRTdXBwb3J0ZWRGZWF0dXJlcyhtb2RlLCBzdXBwb3J0ZWRGZWF0dXJlcyk7CisgICAgICAgICAg
ICBzaW11bGF0ZWREZXZpY2Uuc2V0RW5hYmxlZEZlYXR1cmVzKG1vZGUsIGVuYWJsZWRGZWF0dXJl
cyk7CisgICAgICAgIH0KIAogICAgICAgICBtX2NvbnRleHQtPnJlZ2lzdGVyU2ltdWxhdGVkWFJE
ZXZpY2VGb3JUZXN0aW5nKHNpbXVsYXRlZERldmljZSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhS
VGVzdC5oCmluZGV4IGIxY2MzZGIzYWU0ZjMwOWQxOGU4MDhmZDc3MTJiYTFiMjJiNzA3NTEuLjYw
Mjk3NTVjOWFhNzgwYjc1ZTIzZmE2YzFhNjE1YjFlZjY0YmMyMmYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9XZWJYUlRlc3QuaApAQCAtNDYsNiArNDYsNyBAQCBwdWJsaWM6CiAgICAgICAgIFZlY3RvcjxG
YWtlWFJWaWV3SW5pdD4gdmlld3M7CiAKICAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8SlND
OjpKU1ZhbHVlPj4gc3VwcG9ydGVkRmVhdHVyZXM7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VmVj
dG9yPEpTQzo6SlNWYWx1ZT4+IGVuYWJsZWRGZWF0dXJlczsKIAogICAgICAgICBzdGQ6Om9wdGlv
bmFsPFZlY3RvcjxGYWtlWFJCb3VuZHNQb2ludD4+IGJvdW5kc0Nvb3JkaW5hdGVzOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5pZGwgYi9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYlhSVGVzdC5pZGwKaW5kZXggOGQwYjA2YjAzYWU2N2FhNjU0ZTJlYWMx
Nzk4MTk4NjI5ODk2ZjliYy4uZTY2NzM5YjY5Y2ViODMyZTdjZjhiNWU1N2U5MWI2Yzk5NmQ3ZGYz
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmlkbApAQCAtNjEsNiArNjEsMTAgQEAK
ICAgICAvLyBOT1RFOiBUaGlzIGlzIG1lYW50IHRvIGVtdWxhdGUgaGFyZHdhcmUgc3VwcG9ydCwg
bm90IHdoZXRoZXIgYSBmZWF0dXJlIGlzCiAgICAgLy8gY3VycmVudGx5IGF2YWlsYWJsZSAoZS5n
LiBib3VuZHMgbm90IGJlaW5nIHRyYWNrZWQgcGVyIGJlbG93KQogICAgIHNlcXVlbmNlPGFueT4g
c3VwcG9ydGVkRmVhdHVyZXM7CisgICAgCisgICAgLy8gVGhlIGxpc3Qgb2YgZmVhdHVyZXMgdGhh
dCBhcmUgYXV0b21hdGljYWxseSBlbmFibGVkIGFuZCBkbworICAgIC8vIG5vdCBuZWVkIGZ1cnRo
ZXIgZXhwbGljaXQgY29uc2VudC4KKyAgICBzZXF1ZW5jZTxhbnk+IGVuYWJsZWRGZWF0dXJlczsK
IAogICAgIC8vIFRoZSBib3VuZHMgY29vcmRpbmF0ZXMuIElmIGVtcHR5LCBubyBib3VuZGVkIHJl
ZmVyZW5jZSBzcGFjZSBpcyBjdXJyZW50bHkgdHJhY2tlZC4KICAgICAvLyBJZiBub3QsIG11c3Qg
aGF2ZSBhdCBsZWFzdCB0aHJlZSBlbGVtZW50cy4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
U2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJE
ZXZpY2VQcm94eS5jcHAKaW5kZXggODBmMDg1MzIxMGM2ZDRiYzI0MmRhM2FhZThmZGUwYjBiMWQ2
ZmY3ZS4uMGZhNzYwYjkyYjg2NzJlNDk0ODdjNTU4MDY3YWZmMmYzYWQzYzgyYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQcm94eS5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9TaGFyZWQvWFIvWFJEZXZpY2VQcm94eS5jcHAKQEAgLTY4LDggKzY4LDIxIEBAIHZv
aWQgWFJEZXZpY2VQcm94eTo6aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKFBsYXRmb3Jt
WFI6OlNlc3Npb25Nb2RlIHNlc3NpCiAgICAgaWYgKHNlc3Npb25Nb2RlICE9IFBsYXRmb3JtWFI6
OlNlc3Npb25Nb2RlOjpJbW1lcnNpdmVWcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1f
eHJTeXN0ZW0pCi0gICAgICAgIG1feHJTeXN0ZW0tPmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRl
cmluZygpOworICAgIGlmICghbV94clN5c3RlbSkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV94
clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5nKCk7CisKKyAgICAvLyBUaGlz
IGlzIGNhbGxlZCBmcm9tIHRoZSBjb25zdHJ1Y3RvciBvZiBXZWJYUlNlc3Npb24uIFNpbmNlIHNl
c3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzKCkKKyAgICAvLyBlbmRzIHVwIGNhbGxpbmcg
cXVldWVUYXNrS2VlcGluZ09iamVjdEFsaXZlKCkgd2hpY2ggcmVmcyB0aGUgV2ViWFJTZXNzaW9u
IG9iamVjdCwgd2UKKyAgICAvLyBzaG91bGQgZGVsYXkgdGhpcyBjYWxsIGFmdGVyIHRoZSBXZWJY
UlNlc3Npb24gaGFzIGZpbmlzaGVkIGNvbnN0cnVjdGlvbi4KKyAgICBjYWxsT25NYWluUnVuTG9v
cChbdGhpcywgd2Vha1RoaXMgPSBXZWFrUHRyIHsgKnRoaXMgfV0oKSB7CisgICAgICAgIGlmICgh
d2Vha1RoaXMpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRyYWNraW5nQW5k
UmVuZGVyaW5nQ2xpZW50KCkpCisgICAgICAgICAgICB0cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVu
dCgpLT5zZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcyh7IH0pOworICAgIH0pOyAgICAK
IH0KIAogdm9pZCBYUkRldmljZVByb3h5OjpzaHV0RG93blRyYWNraW5nQW5kUmVuZGVyaW5nKCkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwZTE2NGZlZTljNDJjZGEwM2M5YThjNTI5ZjUxMjcyNzA2YWFhODEzLi4yMzcyZmUy
OTFlYzBjNDE3NDJhYTJkMjYyMmYxZWY3ZDEwOWU2YzRjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzMgQEAK
KzIwMjItMDQtMDcgIEFkYSBDaGFuICA8YWRhY2hhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW1dl
YlhSXSBJbXBsZW1lbnQgdGhlIFdlYlhSIEhhbmQgSW5wdXQgbW9kdWxlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5NjgKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgbW9yZSBjb25zdGFudHMgZm9y
IGEgdmFsaWQgam9pbnQgdmFsdWUgYW5kIGRldmljZSBpbml0IGRpY3Rpb25hcnkKKyAgICAgICAg
dGhhdCByZXByZXNlbnRzIGEgZGV2aWNlIHdpdGggaGFuZCB0cmFja2luZyBzdXBwb3J0IGVuYWJs
ZWQuCisKKyAgICAgICAgQWRkIG5ldyB0ZXN0cyBmb3IgdGVzdGluZyBoYW5kIGlucHV0IHJlbGF0
ZWQgbWV0aG9kcyBpbiBYUkZyYW1lLgorCisgICAgICAgICogaHR0cC93cHQvd2VieHIvcmVzb3Vy
Y2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzOgorICAgICAgICAqIGh0dHAv
d3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpLmh0bWw6IEFkZGVk
LgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWlfbWlzc2lu
Z19qb2ludF9wb3NlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2Vi
eHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXMtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy5odG1s
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNz
aW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93
ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pvaW50X3Bvc2UuaHRtbDogQWRkZWQuCisg
ICAgICAgICogaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2UtZXhwZWN0ZWQudHh0
OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9z
ZV9taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbDog
QWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2VieHIveHJIYW5kLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvd2VieHIveHJIYW5kLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvd3B0L3dlYnhyL3hySGFuZElucHV0X2djLmh0bWw6CisgICAgICAgICogcGxhdGZv
cm0vd2luL1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAgb3RoZXIgZm9sZGVycyB3aXRoIFdlYlhSIHRl
c3RzCisKIDIwMjItMDQtMDYgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgogCiAgICAg
ICAgIEZpeCBleHBlY3RlZCwgYWN0dWFsIGxpbmtzIGZvciB2YXJpYW50LWJhc2VkIGltcG9ydGVk
IHdwdCB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIvcmVzb3Vy
Y2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3Lmpz
CmluZGV4IGNiOGJkZmQ5OWYxYTBiMTIyMjFlODA0YTg1NDE1MDM2MGY2NzY2MzYuLmEwOWRjYzE0
Mjg2YjE5ZjEyYTk3NDQ0ZjM5NzJkZGE2N2YyODJhNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50c19zaW5nbGVfdmll
dy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVz
dF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMKQEAgLTQ3LDYgKzQ3LDc0IEBAIGNvbnN0IFZBTElE
X0dSSVBfVFJBTlNGT1JNID0gewogICAgIG9yaWVudGF0aW9uOiBbMCwgMCwgMCwgMV0KIH07CiAK
K2NvbnN0IEpPSU5UX0NPVU5UID0gMjU7Citjb25zdCBURVNUX0hBTkRfSk9JTlRfUkFESVVTID0g
MC4wMjsKKworY29uc3QgVkFMSURfSEFORF9KT0lOVCA9IHsKKyAgICBwb3NlOiBWQUxJRF9QT1NF
X1RSQU5TRk9STSwKKyAgICByYWRpdXM6IFRFU1RfSEFORF9KT0lOVF9SQURJVVMKK307CisKK2Nv
bnN0IFZBTElEX0hBTkRfSk9JTlRTID0gWworICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFM
SURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9J
TlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZB
TElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pP
SU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBW
QUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9K
T0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAg
VkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRf
Sk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAg
IFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5E
X0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQKK107CisKK2NvbnN0IElOVkFMSURfSEFORF9K
T0lOVCA9IHsKKworfTsKKworY29uc3QgSEFORF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCA9IFsK
KyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURf
SEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQs
CisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElE
X0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5U
LAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJ
RF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lO
VCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFM
SURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9J
TlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZB
TElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBJTlZBTElEX0hBTkRf
Sk9JTlQKK107CisKIC8vIEEgdmFsaWQgaW5wdXQgcG9pbnRlciBvZmZzZXQgZm9yICB3aGVuIHdl
IGRvbid0IGNhcmUgYWJvdXQgc3BlY2lmaWMgdmFsdWVzCiBjb25zdCBWQUxJRF9QT0lOVEVSID0g
WzEsIDAsIDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDAsCkBAIC0xNjAs
NiArMjI4LDE3IEBAIGNvbnN0IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRSA9IHsKICAgICBpbnRl
cmFjdGlvbk1vZGU6ICJ3b3JsZC1zcGFjZSIKIH07CiAKK2NvbnN0IFRSQUNLRURfSU1NRVJTSVZF
X0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkcgPSB7CisgICAgc3VwcG9ydHNJbW1lcnNpdmU6IHRy
dWUsCisgICAgc3VwcG9ydGVkTW9kZXM6IFsgImlubGluZSIsICJpbW1lcnNpdmUtdnIiXSwKKyAg
ICB2aWV3czogVkFMSURfVklFV1MsCisgICAgdmlld2VyT3JpZ2luOiBJREVOVElUWV9UUkFOU0ZP
Uk0sCisgICAgc3VwcG9ydGVkRmVhdHVyZXM6IEFMTF9GRUFUVVJFUywKKyAgICBlbmFibGVkRmVh
dHVyZXM6IFsgImhhbmQtdHJhY2tpbmciIF0sCisgICAgZW52aXJvbm1lbnRCbGVuZE1vZGU6ICJv
cGFxdWUiLAorICAgIGludGVyYWN0aW9uTW9kZTogIndvcmxkLXNwYWNlIgorfTsKKwogY29uc3Qg
VFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFX05PX0hBTkRfVFJBQ0tJTkcgPSB7CiAgICAgc3VwcG9y
dHNJbW1lcnNpdmU6IHRydWUsCiAgICAgc3VwcG9ydGVkTW9kZXM6IFsgImlubGluZSIsICJpbW1l
cnNpdmUtdnIiXSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJh
bWVfZmlsbEpvaW50UmFkaWktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
eHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAyYmIw
MWJiZmRiZTc1NDM5OTY0OWI5YTk5N2QzM2NhMGQ0NWVlOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWktZXhwZWN0ZWQu
dHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSAt
IHdlYmdsCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSAtIHdlYmdsMgorCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlp
Lmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlp
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMzQ1YWEyNThjZGM2MjAwYzAxZjEzODZkNjAxNGE2ZGQ3MTM3YTE4
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVf
ZmlsbEpvaW50UmFkaWkuaHRtbApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVz
b3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzIj48L3NjcmlwdD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48
L3NjcmlwdD4KKworPHNjcmlwdD4KK2xldCB0ZXN0TmFtZSA9ICJUZXN0IFhSRnJhbWUuZmlsbEpv
aW50UmFkaWkiOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lW
RV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5HOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rp
b24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisK
KyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRT
b3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5kZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5
TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRF
Ul9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdLAorICAgIGhhbmRKb2ludHM6IFZBTElEX0hB
TkRfSk9JTlRTLAorICB9KTsKKworICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3Bh
Y2UoJ2xvY2FsJykKKyAgICAudGhlbigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9taXNlKChy
ZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkgewor
ICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDAp
OworICAgICAgICBsZXQgaGFuZCA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdLmhhbmQKKyAgICAg
ICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZCwgbnVsbCk7CisKKyAgICAgICAgYXNzZXJ0X3Rocm93
c19qcyhUeXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbGV0IHJhZGlpQXJyYXlX
aXRoV3JvbmdTaXplID0gbmV3IEZsb2F0MzJBcnJheShKT0lOVF9DT1VOVCAtIDEpOworICAgICAg
ICAgICAgeHJGcmFtZS5maWxsSm9pbnRSYWRpaShoYW5kLnZhbHVlcygpLCByYWRpaUFycmF5V2l0
aFdyb25nU2l6ZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGxldCByYWRpaSA9IG5ldyBGbG9h
dDMyQXJyYXkoSk9JTlRfQ09VTlQpOworICAgICAgICBsZXQgYWxsVmFsaWQgPSB4ckZyYW1lLmZp
bGxKb2ludFJhZGlpKGhhbmQudmFsdWVzKCksIHJhZGlpKTsKKyAgICAgICAgYXNzZXJ0X3RydWUo
YWxsVmFsaWQpOworICAgICAgICBmb3IgKHJhZGl1cyBvZiByYWRpaSkgeworICAgICAgICAgICAg
YXNzZXJ0X2FwcHJveF9lcXVhbHMocmFkaXVzLCBURVNUX0hBTkRfSk9JTlRfUkFESVVTLCBGTE9B
VF9FUFNJTE9OKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAg
ICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9Owor
Cit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFr
ZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsi
aGFuZC10cmFja2luZyJdIH0pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3Nl
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpv
aW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzFm
N2NkMzdjNmRiY2E4NmY2YmY2YmY0MTJjMjQ5OTkxNTQ3YzU1Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5n
X2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJG
cmFtZS5maWxsSm9pbnRSYWRpaSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQg
cG9zZSAtIHdlYmdsCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSB3aGVyZSB0aGUg
aGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSAtIHdlYmdsMgorCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdf
am9pbnRfcG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxs
Sm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDkxNWVjODFi
ODkzYTVhYzU3ZGNiZjVlYmM4Mjc2OGU0ZmZhYzk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50
X3Bvc2UuaHRtbApAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dl
YnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIuLi8uLi93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4K
KworPHNjcmlwdD4KK2xldCB0ZXN0TmFtZSA9ICJUZXN0IFhSRnJhbWUuZmlsbEpvaW50UmFkaWkg
d2hlcmUgdGhlIGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UiOworCitsZXQgZmFrZURl
dmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNL
SU5HOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNv
bnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZh
a2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBo
YW5kZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIs
CisgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmls
ZXM6IFtdLAorICAgIGhhbmRKb2ludHM6IEhBTkRfSk9JTlRTX1dJVEhfT05FX0lOVkFMSUQsCisg
IH0pOworCisgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQor
ICAgIC50aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsK
KworICAgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIGFzc2Vy
dF9ub3RfZXF1YWxzKHNlc3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7CisgICAgICAgIGxl
dCBoYW5kID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyhoYW5kLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhoYW5kLnNpemUsIEpP
SU5UX0NPVU5UKTsKKworICAgICAgICBsZXQgcmFkaWkgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5U
X0NPVU5UKTsKKyAgICAgICAgbGV0IGFsbFZhbGlkID0geHJGcmFtZS5maWxsSm9pbnRSYWRpaSho
YW5kLnZhbHVlcygpLCByYWRpaSk7CisgICAgICAgIGFzc2VydF9mYWxzZShhbGxWYWxpZCk7Cisg
ICAgICAgIGZvciAocmFkaXVzIG9mIHJhZGlpKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxz
KHJhZGl1cywgTmFOKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0K
KyAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9
OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwg
ZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6
IFsiaGFuZC10cmFja2luZyJdIH0pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4xNzEwMGIyOTA5Mjc0NzQ0NTdkZDgzOGRmYWU3NDQ1M2I2MmNkZjc2Ci0tLSAvZGV2
L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsUG9z
ZXMgLSB3ZWJnbAorUEFTUyBUZXN0IFhSRnJhbWUuZmlsbFBvc2VzIC0gd2ViZ2wyCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLjM3N2IyMTI5MTc2ZTcwOTBlZmJjYTY2MmRhNGNkNWIzOGQyNGEyZDQKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy5o
dG1sCkBAIC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVz
dF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4u
L3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0PgorbGV0IHRlc3ROYW1lID0gIlRlc3QgWFJGcmFtZS5maWxsUG9zZXMiOworCitsZXQgZmFr
ZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RS
QUNLSU5HOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmlj
ZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9
IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAg
ICBoYW5kZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRl
ciIsCisgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJv
ZmlsZXM6IFtdLAorICAgIGhhbmRKb2ludHM6IFZBTElEX0hBTkRfSk9JTlRTLAorICB9KTsKKwor
ICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhl
bigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAg
IGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2Vx
dWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9
IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdLmhhbmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMo
aGFuZCwgbnVsbCk7CisKKyAgICAgICAgY29uc3QgZmxvYXRzUGVyVHJhbnNmb3JtID0gMTY7Cisg
ICAgICAgIGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgIGxldCB0cmFuc2Zvcm1zQXJyYXlXaXRoV3JvbmdTaXplID0gbmV3IEZsb2F0MzJBcnJheShK
T0lOVF9DT1VOVCAqIGZsb2F0c1BlclRyYW5zZm9ybSAtIDEpOworICAgICAgICAgICAgeHJGcmFt
ZS5maWxsUG9zZXMoaGFuZC52YWx1ZXMoKSwgdHJhbnNmb3Jtc0FycmF5V2l0aFdyb25nU2l6ZSk7
CisgICAgICAgIH0pOworCisgICAgICAgIGxldCB0cmFuc2Zvcm1zID0gbmV3IEZsb2F0MzJBcnJh
eShKT0lOVF9DT1VOVCAqIGZsb2F0c1BlclRyYW5zZm9ybSk7CisgICAgICAgIGxldCBhbGxWYWxp
ZCA9IHhyRnJhbWUuZmlsbFBvc2VzKGhhbmQudmFsdWVzKCksIHJlZmVyZW5jZVNwYWNlLCB0cmFu
c2Zvcm1zKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYWxsVmFsaWQpOworICAgICAgICAKKyAgICAg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCBKT0lOVF9DT1VOVDsgKytpKSB7CisgICAgICAgICAgICBs
ZXQgdHJhbnNmb3JtU3RhcnRJbmRleCA9IGkgKiBmbG9hdHNQZXJUcmFuc2Zvcm07CisgICAgICAg
ICAgICBmb3IgKHZhciBqID0gMDsgaiA8IGZsb2F0c1BlclRyYW5zZm9ybTsgKytqKSB7CisgICAg
ICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHModHJhbnNmb3Jtc1t0cmFuc2Zvcm1TdGFy
dEluZGV4ICsgal0sIFZBTElEX1BPU0VfTUFUUklYW2pdLCBGTE9BVF9FUFNJTE9OKTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICAg
IHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4
cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURl
dmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsiaGFu
ZC10cmFja2luZyJdIH0pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNz
aW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0Mjk0NDg3NGY4NjVjZDQ2
MWZiZmM1YjhjMWJjYzI3ZDQxNDg0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsUG9zZXMgd2hl
cmUgdGhlIGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UgLSB3ZWJnbAorUEFTUyBUZXN0
IFhSRnJhbWUuZmlsbFBvc2VzIHdoZXJlIHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBw
b3NlIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hy
RnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXNfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uNTNlNzU4ZTAxOGFkM2YyNGQzYThiOTJhN2YxMTZkMjUwMzRmNGE2NwotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2Vz
X21pc3Npbmdfam9pbnRfcG9zZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1s
PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0
PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMu
anMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIlRlc3QgWFJGcmFtZS5m
aWxsUG9zZXMgd2hlcmUgdGhlIGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UiOworCits
ZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9I
QU5EX1RSQUNLSU5HOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFr
ZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3Nv
dXJjZSA9IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9u
KHsKKyAgICBoYW5kZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQt
cG9pbnRlciIsCisgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisg
ICAgcHJvZmlsZXM6IFtdLAorICAgIGhhbmRKb2ludHM6IEhBTkRfSk9JTlRTX1dJVEhfT05FX0lO
VkFMSUQsCisgIH0pOworCisgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgn
bG9jYWwnKQorICAgIC50aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29s
dmUpID0+IHsKKworICAgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAg
ICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlc3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7Cisg
ICAgICAgIGxldCBoYW5kID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBh
c3NlcnRfbm90X2VxdWFscyhoYW5kLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhoYW5k
LnNpemUsIEpPSU5UX0NPVU5UKTsKKworICAgICAgICBjb25zdCBmbG9hdHNQZXJUcmFuc2Zvcm0g
PSAxNjsKKyAgICAgICAgbGV0IHRyYW5zZm9ybXMgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NP
VU5UICogZmxvYXRzUGVyVHJhbnNmb3JtKTsKKyAgICAgICAgbGV0IGFsbFZhbGlkID0geHJGcmFt
ZS5maWxsUG9zZXMoaGFuZC52YWx1ZXMoKSwgcmVmZXJlbmNlU3BhY2UsIHRyYW5zZm9ybXMpOwor
ICAgICAgICBhc3NlcnRfZmFsc2UoYWxsVmFsaWQpOworICAgICAgICAKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBKT0lOVF9DT1VOVCAqIGZsb2F0c1BlclRyYW5zZm9ybTsgKytpKSB7Cisg
ICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHRyYW5zZm9ybXNbaV0sIE5hTik7CisgICAgICAgIH0K
KworICAgICAgICByZXNvbHZlKCk7CisgICAgICB9CisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmlt
YXRpb25GcmFtZShvbkZyYW1lKTsKKyAgfSkpOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rl
c3QoCisgIHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1t
ZXJzaXZlLXZyJywgeyBvcHRpb25hbEZlYXR1cmVzOiBbImhhbmQtdHJhY2tpbmciXSB9KTsKKwor
PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1l
X2dldEpvaW50UG9zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94
ckZyYW1lX2dldEpvaW50UG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkyNGYwNTFmMjll
YTUwNzY2ZTk5ZDRhZDM1NWNjMGJjM2NmZWM2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDQgQEAKKworUEFTUyBUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIC0gd2ViZ2wKK1BB
U1MgVGVzdCBYUkZyYW1lLmdldEpvaW50UG9zZSAtIHdlYmdsMgorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2UuaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5lMDc4ZDhmZmQ2MTIzMzE5NTA5ZWY4MWIzZWQ4Njk1MjIyZGI5Mjk5Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2UuaHRt
bApAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2Vi
eHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3Rf
Y29uc3RhbnRzX3NpbmdsZV92aWV3LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi93
ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dD4KK2xldCB0ZXN0TmFtZSA9ICJUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIjsKKworbGV0IGZh
a2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFX1dJVEhfSEFORF9U
UkFDS0lORzsKKworbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VEZXZp
Y2VDb250cm9sbGVyLCB0LCBzZXNzaW9uT2JqZWN0cykgeworCisgIGxldCBpbnB1dF9zb3VyY2Ug
PSBmYWtlRGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbih7Cisg
ICAgaGFuZGVkbmVzczogIm5vbmUiLAorICAgIHRhcmdldFJheU1vZGU6ICJ0cmFja2VkLXBvaW50
ZXIiLAorICAgIHBvaW50ZXJPcmlnaW46IFZBTElEX1BPSU5URVJfVFJBTlNGT1JNLAorICAgIHBy
b2ZpbGVzOiBbXSwKKyAgICBoYW5kSm9pbnRzOiBWQUxJRF9IQU5EX0pPSU5UUywKKyAgfSk7CisK
KyAgcmV0dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRo
ZW4oKHJlZmVyZW5jZVNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAg
ICBmdW5jdGlvbiBvbkZyYW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoc2Vzc2lvbi5pbnB1dFNvdXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQg
PSBzZXNzaW9uLmlucHV0U291cmNlc1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxz
KGhhbmQsIG51bGwpOworICAgICAgICAKKyAgICAgICAgbGV0IGpvaW50U3BhY2UgPSBoYW5kLmdl
dCgid3Jpc3QiKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoam9pbnRTcGFjZSwgbnVsbCk7
CisgICAgICAgIAorICAgICAgICBsZXQgam9pbnRQb3NlID0geHJGcmFtZS5nZXRKb2ludFBvc2Uo
am9pbnRTcGFjZSwgcmVmZXJlbmNlU3BhY2UpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhq
b2ludFBvc2UsIG51bGwpOworICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhqb2ludFBvc2Uu
cmFkaXVzLCBURVNUX0hBTkRfSk9JTlRfUkFESVVTLCBGTE9BVF9FUFNJTE9OKTsKKyAgICAgICAg
YXNzZXJ0X21hdHJpeF9hcHByb3hfZXF1YWxzKGpvaW50UG9zZS50cmFuc2Zvcm0ubWF0cml4LCBW
QUxJRF9QT1NFX01BVFJJWCwgRkxPQVRfRVBTSUxPTik7CisKKyAgICAgICAgcmVzb2x2ZSgpOwor
ICAgICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7Cisg
IH0pKTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1
bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgb3B0aW9uYWxG
ZWF0dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19q
b2ludF9wb3NlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJh
bWVfZ2V0Sm9pbnRQb3NlX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMjE5ZDc5YjAzYTNlNjg5NzQ4ZWVjZDViZDdiZDA1NTJjYTc2OWVmNgotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21p
c3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVGVz
dCBYUkZyYW1lLmdldEpvaW50UG9zZSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9p
bnQgcG9zZSAtIHdlYmdsCitQQVNTIFRlc3QgWFJGcmFtZS5nZXRKb2ludFBvc2Ugd2hlcmUgdGhl
IGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19q
b2ludF9wb3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpv
aW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzNlMWIxZWI5NjI0
NmNjMGMzNzc4ZjVlNzc2YWQ5NmJlOGUxODM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2ludF9wb3Nl
Lmh0bWwKQEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jl
c291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3dlYnhyX3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90
ZXN0X2NvbnN0YW50c19zaW5nbGVfdmlldy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4v
Li4vd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+PC9zY3JpcHQ+CisKKzxz
Y3JpcHQ+CitsZXQgdGVzdE5hbWUgPSAiVGVzdCBYUkZyYW1lLmdldEpvaW50UG9zZSB3aGVyZSB0
aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSI7CisKK2xldCBmYWtlRGV2aWNlSW5p
dFBhcmFtcyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisK
K2xldCB0ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxl
ciwgdCwgc2Vzc2lvbk9iamVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmlj
ZUNvbnRyb2xsZXIuc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5l
c3M6ICJub25lIiwKKyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBw
b2ludGVyT3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10s
CisgICAgaGFuZEpvaW50czogSEFORF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCwKKyAgfSk7CisK
KyAgcmV0dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRo
ZW4oKHJlZmVyZW5jZVNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAg
ICBmdW5jdGlvbiBvbkZyYW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9l
cXVhbHMoc2Vzc2lvbi5pbnB1dFNvdXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQg
PSBzZXNzaW9uLmlucHV0U291cmNlc1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxz
KGhhbmQsIG51bGwpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGhhbmQuc2l6ZSwgSk9JTlRfQ09V
TlQpOworCisgICAgICAgIGxldCB3cmlzdEpvaW50U3BhY2UgPSBoYW5kLmdldCgid3Jpc3QiKTsK
KyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMod3Jpc3RKb2ludFNwYWNlLCBudWxsKTsKKyAgICAg
ICAgYXNzZXJ0X2VxdWFscyh4ckZyYW1lLmdldEpvaW50UG9zZSh3cmlzdEpvaW50U3BhY2UsIHJl
ZmVyZW5jZVNwYWNlKSwgbnVsbCk7CisKKyAgICAgICAgbGV0IHBpbmt5VGlwSm9pbnRTcGFjZSA9
IGhhbmQuZ2V0KCJwaW5reS1maW5nZXItdGlwIik7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxz
KHBpbmt5VGlwSm9pbnRTcGFjZSwgbnVsbCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoeHJGcmFt
ZS5nZXRKb2ludFBvc2UocGlua3lUaXBKb2ludFNwYWNlLCByZWZlcmVuY2VTcGFjZSksIG51bGwp
OworCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICAgIHNlc3Npb24ucmVxdWVzdEFu
aW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2Vf
dGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMsICdp
bW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsiaGFuZC10cmFja2luZyJdIH0pOwor
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFu
ZC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmQtZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjNkNWEwZjI0MDY1ZTk2NTU1OTNkYThlYjZiMTJmOGUwN2RiNGQ3
NzEKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmQt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgdGhlIFhSSGFuZCBBUEkg
LSB3ZWJnbAorUEFTUyBUZXN0IHRoZSBYUkhhbmQgQVBJIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VieHIveHJIYW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJmMzYyNmU0Yjc2NjZlNjM1MTU1
YzM0NWUxMzhhOTdlZTAwNThiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnhyL3hySGFuZC5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlw
dCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0Pgor
Cis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIlRlc3QgdGhlIFhSSGFuZCBBUEkiOworCitsZXQg
ZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5E
X1RSQUNLSU5HOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURl
dmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJj
ZSA9IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsK
KyAgICBoYW5kZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9p
bnRlciIsCisgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAg
cHJvZmlsZXM6IFtdLAorICAgIGhhbmRKb2ludHM6IFZBTElEX0hBTkRfSk9JTlRTLAorICB9KTsK
KworICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAu
dGhlbigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAg
ICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDApOworICAgICAgICBsZXQgaGFu
ZCA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdLmhhbmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVh
bHMoaGFuZCwgbnVsbCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaGFuZC5zaXplLCAyNSk7Cisg
ICAgICAgIAorICAgICAgICBsZXQgd3Jpc3RKb2ludFNwYWNlID0gaGFuZC5nZXQoIndyaXN0Iik7
CisgICAgICAgIGFzc2VydF9lcXVhbHMod3Jpc3RKb2ludFNwYWNlLmpvaW50TmFtZSwgIndyaXN0
Iik7CisKKyAgICAgICAgdmFyIGNvdW50ID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBbam9pbnRO
YW1lLCBqb2ludFNwYWNlXSBvZiBoYW5kKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGpv
aW50U3BhY2Uuam9pbnROYW1lLCBqb2ludE5hbWUpOworICAgICAgICAgICAgY291bnQrKzsKKyAg
ICAgICAgfQorICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50LCAyNSk7CisKKyAgICAgICAgcmVz
b2x2ZSgpOworICAgICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25G
cmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFt
ZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsg
b3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5kSW5wdXRfZ2MuaHRtbCBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZElucHV0X2djLmh0bWwKaW5kZXggNzcy
ODJmNmY0MTY2Mzg4NTM4MjE5YzE0NDY1NmYwYzA5YjZlZGYwZS4uYjU2MTU5NDdjNWQwYmJmMTky
OWUwZGNlMTRjMDlkN2Q0NDE3YzllOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VieHIveHJIYW5kSW5wdXRfZ2MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4
ci94ckhhbmRJbnB1dF9nYy5odG1sCkBAIC0xNyw3ICsxNyw3IEBAIGZ1bmN0aW9uIGdjKCkKIAog
bGV0IHRlc3ROYW1lID0gIlRlc3Qgb2JqZWN0IGxpZmV0aW1lIG9mIEhhbmQgSW5wdXQgbW9kdWxl
IjsKIAotbGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfU0lOR0xF
X1ZJRVdERVZJQ0U7CitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lW
RV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5HOwogCiBsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rp
b24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CiAK
QEAgLTI2LDcgKzI2LDcgQEAgbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZh
a2VEZXZpY2VDb250cm9sbGVyLCB0LCBzZXNzaW9uT2JqZWN0cykgewogICAgIHRhcmdldFJheU1v
ZGU6ICJ0cmFja2VkLXBvaW50ZXIiLAogICAgIHBvaW50ZXJPcmlnaW46IFZBTElEX1BPSU5URVJf
VFJBTlNGT1JNLAogICAgIHByb2ZpbGVzOiBbXSwKLSAgICBzaW11bGF0ZUhhbmQ6IHRydWUsCisg
ICAgaGFuZEpvaW50czogVkFMSURfSEFORF9KT0lOVFMsCiAgIH0pOwogCiAgIHJldHVybiBzZXNz
aW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93
aW4vVGVzdEV4cGVjdGF0aW9ucwppbmRleCBhMzhjNGRiNGJhN2RkMzJkNmE0MTkyYjkyMDRjZTk2
YTY3ZGVhZGYyLi5hZTFjNWMzMTlkNmVmOWI3N2I2MGI1Y2UxNjA1ZmYwODU4ZThkMzQ2IDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDkwMCw2ICs0OTAw
LDggQEAgc3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS1pbWFnZS1kYXRhLWRpc3Bs
YXktcDMuaHRtbCBbIFNraXAgXQogCiAjIFdlYlhSIGlzIG5vdCBlbmFibGVkIG9uIHdpbmRvd3Mu
CiB3ZWJ4ciBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ciBb
IFNraXAgXQoraHR0cC93cHQvd2VieHIgWyBTa2lwIF0KIAogIyBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI2OTcwCiBmYXN0L2Nzcy9wYXJzZS1ib3JkZXItaW1hZ2Ut
cmVwZWF0LW51bGwtY3Jhc2guaHRtbCBbIEZhaWx1cmUgXQo=
</data>
<flag name="commit-queue"
          id="485853"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457301</attachid>
            <date>2022-04-11 17:13:47 -0700</date>
            <delta_ts>2022-04-11 17:13:47 -0700</delta_ts>
            <desc>Patch for landing 4</desc>
            <filename>bug-238968-20220411171346.patch</filename>
            <type>text/plain</type>
            <size>82565</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzExZTBmZTlmZTRkYTBi
MjNlZWE2M2U5NGIyNzc2Y2U0YWYwMjE5YS4uYWY0ZWUyMWE0YTNlZTM3NTAwMWY5ZGIyNDU3NGE2
ZWUzN2FjMWYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMi0wNC0wNyAgQWRh
IENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIEltcGxlbWVudCB0
aGUgV2ViWFIgSGFuZCBJbnB1dCBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFj
a3Nvbi4KKworICAgICAgICBUZXN0czogaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRS
YWRpaS5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2lu
dFJhZGlpX21pc3Npbmdfam9pbnRfcG9zZS5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93
ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC93ZWJ4
ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pvaW50X3Bvc2UuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2UuaHRtbAorICAgICAgICAgICAg
ICAgaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2ludF9wb3Nl
Lmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYnhyL3hySGFuZC5odG1sCisKKyAgICAg
ICAgLSBJbXBsZW1lbnQgdGhlIG1ldGhvZHMgaW4gV2ViWFJGcmFtZSBmb3IgZ2V0dGluZyBqb2lu
dHMnIHBvc2VzIGFuZCByYWRpaS4KKyAgICAgICAgLSBBZGQgYSBuZXcgSW5wdXRTb3VyY2VIYW5k
Sm9pbnQgc3RydWN0IHRvIHJlcHJlc2VudCBqb2ludCBkYXRhLCBhbmQgYWRkCisgICAgICAgIGEg
dmVjdG9yIG9mIElucHV0U291cmNlSGFuZEpvaW50IGluIFBsYXRmb3JtWFI6OkRldmljZTo6RnJh
bWVEYXRhOjpJbnB1dFNvdXJjZQorICAgICAgICB0byByZXByZXNlbnQgdGhlIGpvaW50cyBkYXRh
LgorICAgICAgICAtIEltcGxlbWVudCBsb2dpYyBmb3IgbWFuYWdpbmcgYSB2ZWN0b3Igb2YgV2Vi
WFJKb2ludFNwYWNlcyBpbiBXZWJYUkhhbmQgYW5kCisgICAgICAgIHVwZGF0aW5nIGl0IHdpdGgg
bmV3IGhhbmQgam9pbnRzIGRhdGEgZnJvbSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
SW5wdXRTb3VyY2UuCisKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAq
IERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
K0hhbmRJbnB1dC5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OnBvcHVsYXRlUG9zZSk6CisgICAgICAgIFRo
ZXJlIGFyZSB2YWxpZCBjYXNlcyB3aGVuIHRoZSBXZWJYUlNwYWNlJ3MgZWZmZWN0aXZlIG9yaWdp
biBjYW4gYmUgbnVsbCwKKyAgICAgICAgZm9yIGV4YW1wbGUsIGEgam9pbnQgcG9zZSBmcm9tIGEg
aGFuZCB0aGF0IGhhcyBvdGhlciBtaXNzaW5nIGpvaW50IHBvc2VzLgorICAgICAgICBKdXN0IHJl
dHVybiBudWxsIGFuZCBub3QgdGhyb3cgYW4gZXhjZXB0aW9uIGluIHRoYXQgY2FzZS4gCisgICAg
ICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpnZXRKb2ludFBvc2UpOgorICAgICAgICBQb3B1bGF0
ZSB0aGUgam9pbnQncyBwb3NlLCBhbmQgY3JlYXRlIGEgV2ViWFJKb2ludFBvc2Ugd2l0aCB0aGUg
cG9zZSdzIAorICAgICAgICB0cmFuc2Zvcm0gYW5kIHRoZSBqb2ludCdzIHJhZGl1cy4KKyAgICAg
ICAgKFdlYkNvcmU6OldlYlhSRnJhbWU6OmZpbGxKb2ludFJhZGlpKToKKyAgICAgICAgVmFsaWRh
dGUgdGhlIGlucHV0cyBhbmQgZmlsbCBpbiB0aGUgcmFkaWkgYXJyYXkuIEZpbGwgaW4gd2l0aCBO
YU4KKyAgICAgICAgaWYgdGhlIGhhbmQgaGFzIG1pc3Npbmcgam9pbnQgcG9zZXMuCisgICAgICAg
IChXZWJDb3JlOjpXZWJYUkZyYW1lOjpmaWxsUG9zZXMpOgorICAgICAgICBWYWxpZGF0ZSB0aGUg
aW5wdXRzIGFuZCBmaWxsIGluIHRoZSB0cmFuc2Zvcm1zIGFycmF5LiBGaWxsIGluIHdpdGggTmFO
CisgICAgICAgIGlmIHRoZSBoYW5kIGhhcyBtaXNzaW5nIGpvaW50IHBvc2VzLgorICAgICAgICAq
IE1vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJIYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSGFuZDo6V2ViWFJIYW5kKToKKyAg
ICAgICAgSW5pdGlhbGl6ZSB0aGUgbV9qb2ludHMgYXJyYXkuCisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkhhbmQ6OmdldCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkhhbmQ6Okl0ZXJhdG9yOjpu
ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSGFuZDo6c2Vzc2lvbik6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJYUkhhbmQ6OnVwZGF0ZUZyb21JbnB1dFNvdXJjZSk6CisgICAgICAgIFVwZGF0
ZSBtX2pvaW50cyBhcnJheSBiYXNlZCBvbiB0aGUgbGF0ZXN0IGhhbmRzIGRhdGEgZnJvbSBJbnB1
dFNvdXJjZS4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJIYW5kOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSGFuZDo6
aGFzTWlzc2luZ1Bvc2VzIGNvbnN0KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSW5w
dXRTb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJJbnB1dFNvdXJjZTo6dXBkYXRl
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OldlYlhSSm9pbnRQb3NlOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJKb2ludFBvc2U6OldlYlhSSm9pbnRQb3NlKToKKyAgICAgICAgSGFuZGxlIGpvaW50IHJhZGl1
cy4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmg6CisgICAgICAgICog
TW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5pZGw6CisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUkpvaW50U3BhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJKb2ludFNwYWNl
OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJKb2ludFNwYWNlOjpXZWJYUkpvaW50
U3BhY2UpOgorICAgICAgICBIYW5kbGUgam9pbnQgbmFtZSBhbmQgdGhlIGFjdHVhbCBwb3NlIGRh
dGEuIEtlZXAgYSB3ZWFrIHB0ciB0byB0aGUgV2ViWFJIYW5kLgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJKb2ludFNwYWNlOjp1cGRhdGVGcm9tSm9pbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJKb2ludFNwYWNlOjpoYW5kSGFzTWlzc2luZ1Bvc2VzIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSSm9pbnRTcGFjZTo6c2Vzc2lvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkpvaW50U3BhY2U6Om5hdGl2ZU9yaWdpbiBjb25zdCk6CisgICAgICAgIFJldHVybiBudWxs
IHBvc2UgdHJhbnNmb3JtcyBpZiB0aGVyZSBhcmUgbWlzc2luZyBqb2ludCBwb3Nlcy4KKyAgICAg
ICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFjZS5oOgorICAgICAgICAoV2ViQ29yZTo6
V2ViWFJKb2ludFNwYWNlOjpqb2ludE5hbWUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJKb2ludFNwYWNlOjpyYWRpdXMgY29uc3QpOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2Vi
WFJKb2ludFNwYWNlLmlkbDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlNlc3Npb246OmlzSGFuZFRyYWNraW5nRW5hYmxl
ZCBjb25zdCk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaDoKKyAgICAg
ICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogcGxhdGZv
cm0veHIvUGxhdGZvcm1YUi5oOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlSGFuZEpvaW50OjplbmNvZGUgY29uc3QpOgorICAgICAgICAoUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlSGFuZEpvaW50OjpkZWNvZGUpOgor
ICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlOjplbmNv
ZGUgY29uc3QpOgorICAgICAgICAoUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0
U291cmNlOjpkZWNvZGUpOgorICAgICAgICAqIHRlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0
Lmg6CisgICAgICAgICogdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsOgorICAgICAg
ICBBbGxvdyB0ZXN0IElucHV0U291cmNlIHRvIGJlIGNyZWF0ZWQgd2l0aCBhbiBhcnJheSBvZiBq
b2ludHMuCisgICAgICAgICogdGVzdGluZy9GYWtlWFJKb2ludFN0YXRlSW5pdC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbC4KKyAg
ICAgICAgKiB0ZXN0aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbDogQ29waWVkIGZyb20gU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5pZGwuCisgICAgICAgIERl
ZmluZSBpbml0IGRpY3Rpb25hcnkgZm9yIGpvaW50IGRhdGEuCisgICAgICAgICogdGVzdGluZy9X
ZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyOjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpnZXRGcmFtZURhdGEpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjp1cGRhdGVIYW5kSm9pbnRzKToKKyAg
ICAgICAgVXBkYXRlIG1faGFuZEpvaW50cyBiYXNlZCBvbiBqb2ludCBpbml0IGRpY3Rpb25hcmll
cy4KKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oOgorICAgICAg
ICAqIHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmlkbDoKKyAgICAgICAgKiB0ZXN0
aW5nL1dlYlhSVGVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUZlYXR1cmVzKToKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSVGVzdDo6c2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKToKKyAg
ICAgICAgQWxsb3cgdGVzdCBkZXZpY2UgdG8gc3BlY2lmeSBhIGxpc3Qgb2YgZW5hYmxlZCBmZWF0
dXJlcyB0aGF0IGRvbid0IG5lZWQKKyAgICAgICAgZnVydGhlciBleHBsaWNpdCBjb25zZW50Lgor
ICAgICAgICAqIHRlc3RpbmcvV2ViWFJUZXN0Lmg6CisgICAgICAgICogdGVzdGluZy9XZWJYUlRl
c3QuaWRsOgorCiAyMDIyLTA0LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAK
ICAgICAgICAgRHJvcCB1bm5lY2Vzc2FyeSBFeGNlcHRpb25Pcjw+IHJldHVybiB0eXBlcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZwppbmRleCAxOTI2YjE1NTMzZGEzMGJjZjQ3NzkzMDM0NzVhYWNhODg0ODM0ODY3Li4yN2U0Y2Q3
ZDNiNjQ3MjJjYzRhMzViYzMzNWZjZTFjYjk3ZWE1NWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDIyLTA0LTA3ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisgICAgICAg
IFtXZWJYUl0gSW1wbGVtZW50IHRoZSBXZWJYUiBIYW5kIElucHV0IG1vZHVsZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM4OTY4CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgRGVhbiBKYWNrc29uLgorCisgICAgICAgICogU2hhcmVkL1hSL1hSRGV2aWNl
UHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpYUkRldmljZVByb3h5Ojppbml0aWFsaXplVHJh
Y2tpbmdBbmRSZW5kZXJpbmcpOgorICAgICAgICBJbml0aWFsaXplIGlucHV0IHNvdXJjZXMgb24g
c2Vzc2lvbiBzdGFydC4KKwogMjAyMi0wNC0wNiAgQ2hyaXMgRHVtZXogIDxjZHVtZXpAYXBwbGUu
Y29tPgogCiAgICAgICAgIEltcHJvdmUgQVBJOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6OmRlc2Vy
aWFsaXplIHRvIG5vdCBhbGxvY2F0ZSBhIG5ldyBKU0NvbnRleHQgZXZlcnkgc2Vjb25kCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0IGIv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCAwODMx
MDUxNmFmNjI1MzI4ODQ4MmQxZjUxYzJkZDczMjk3NDcxMWFiLi4zOTdjNmJiMDhiMTZkMzFmZWYx
YTI4YjI5NzVkYTI2MTdkMTM0ZjZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLWlucHV0LnhjZmlsZWxpc3QKQEAgLTE2MjIsNiArMTYyMiw3IEBAICQoUFJPSkVDVF9ESVIp
L3N2Zy94bGlua2F0dHJzLmluCiAkKFBST0pFQ1RfRElSKS90ZXN0aW5nL0Zha2VYUkJvdW5kc1Bv
aW50LmlkbAogJChQUk9KRUNUX0RJUikvdGVzdGluZy9GYWtlWFJCdXR0b25TdGF0ZUluaXQuaWRs
CiAkKFBST0pFQ1RfRElSKS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGwKKyQoUFJP
SkVDVF9ESVIpL3Rlc3RpbmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsCiAkKFBST0pFQ1RfRElS
KS90ZXN0aW5nL0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5pZGwKICQoUFJPSkVDVF9ESVIpL3Rl
c3RpbmcvRmFrZVhSVmlld0luaXQuaWRsCiAkKFBST0pFQ1RfRElSKS90ZXN0aW5nL0dDT2JzZXJ2
YXRpb24uaWRsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1vdXRw
dXQueGNmaWxlbGlzdCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CmluZGV4IDg4N2M3NjU5ZTdmODY0MzZjZDAyZGQ4NDkzYmQ5MzkxNjUyZmNiYzYuLmEz
ZDY4YWRmZTEzMWM0ODdjNzljYzRjMmFmMWM4YTg2ZTcwODEyYjkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC04MzUsNiArODM1LDgg
QEAgJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJC
dXR0b25TdGF0ZUluaXQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMv
V2ViQ29yZS9KU0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikv
RGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zha2VYUklucHV0U291cmNlSW5pdC5jcHAKICQoQlVJ
TFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFrZVhSSW5wdXRTb3Vy
Y2VJbml0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pT
RmFrZVhSSm9pbnRTdGF0ZUluaXQuY3BwCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0Zha2VYUkpvaW50U3RhdGVJbml0LmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNw
cAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJS
aWdpZFRyYW5zZm9ybUluaXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2Vz
L1dlYkNvcmUvSlNGYWtlWFJWaWV3SW5pdC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtl
CmluZGV4IDcxYThjZTcwODZmYTc5ZGFhOGI3NTEzMTViZjQzYTQ0M2E2MTlhZmIuLmQ2NjNjMzIz
Njg0ZDFjMGY4ODBmYjdjZjk2MWZjNmZhNDIxNmU0NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZQpAQCAtMTQ2Miw2ICsxNDYyLDcgQEAgSlNfQklORElOR19JRExTIDo9IFwKICAgICAk
KFdlYkNvcmUpL3Rlc3RpbmcvRmFrZVhSQm91bmRzUG9pbnQuaWRsIFwKICAgICAkKFdlYkNvcmUp
L3Rlc3RpbmcvRmFrZVhSQnV0dG9uU3RhdGVJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0
aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGwgXAorICAgICQoV2ViQ29yZSkvdGVzdGluZy9G
YWtlWFJKb2ludFN0YXRlSW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9GYWtlWFJS
aWdpZFRyYW5zZm9ybUluaXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvRmFrZVhSVmll
d0luaXQuaWRsIFwKICAgICAkKFdlYkNvcmUpL3Rlc3RpbmcvV2ViRmFrZVhSRGV2aWNlLmlkbCBc
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUrSGFu
ZElucHV0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZStIYW5k
SW5wdXQuaWRsCmluZGV4IDQ3YTNiZmJlNWE2YThhMTFlNTBlYmYyZTZmMGU5NjRkYjU4YTdhYWEu
LjBiNjg0M2NiOWUwYzU4NWJkNDA1YzNjYmQ0NWQxNzE4MWYzOTE5OTAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZStIYW5kSW5wdXQuaWRsCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZStIYW5kSW5wdXQuaWRsCkBA
IC0yOCw3ICsyOCw3IEBACiAgICAgQ29uZGl0aW9uYWw9V0VCWFJfSEFORFMsCiAgICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJYUkVuYWJsZWQmV2ViWFJIYW5kSW5wdXRNb2R1bGVFbmFibGVkLAogXSBw
YXJ0aWFsIGludGVyZmFjZSBXZWJYUkZyYW1lIHsKLSAgICBXZWJYUkpvaW50UG9zZT8gZ2V0Sm9p
bnRQb3NlKFdlYlhSSm9pbnRTcGFjZSBqb2ludCwgV2ViWFJTcGFjZSBiYXNlU3BhY2UpOworICAg
IFtDYWxsV2l0aD1DdXJyZW50RG9jdW1lbnRdIFdlYlhSSm9pbnRQb3NlPyBnZXRKb2ludFBvc2Uo
V2ViWFJKb2ludFNwYWNlIGpvaW50LCBXZWJYUlNwYWNlIGJhc2VTcGFjZSk7CiAgICAgYm9vbGVh
biBmaWxsSm9pbnRSYWRpaShzZXF1ZW5jZTxXZWJYUkpvaW50U3BhY2U+IGpvaW50U3BhY2VzLCBG
bG9hdDMyQXJyYXkgcmFkaWkpOwotICAgIGJvb2xlYW4gZmlsbFBvc2VzKHNlcXVlbmNlPFdlYlhS
U3BhY2U+IHNwYWNlcywgV2ViWFJTcGFjZSBiYXNlU3BhY2UsIEZsb2F0MzJBcnJheSB0cmFuc2Zv
cm1zKTsKKyAgICBbQ2FsbFdpdGg9Q3VycmVudERvY3VtZW50XSBib29sZWFuIGZpbGxQb3Nlcyhz
ZXF1ZW5jZTxXZWJYUlNwYWNlPiBzcGFjZXMsIFdlYlhSU3BhY2UgYmFzZVNwYWNlLCBGbG9hdDMy
QXJyYXkgdHJhbnNmb3Jtcyk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJGcmFtZS5jcHAKaW5kZXggZjFhZmQ0MzNlMjVjYzI1MzU2ODc3MmQ3NDZiN2U3NzdjOGJhMWU2
MC4uM2E3NjgzZTc4YTliNzA5MWEyM2Y4NmIxZDM4NDhhYjY0MTllNTNlZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCkBAIC0xMzYsOCArMTM2LDEwIEBA
IEV4Y2VwdGlvbk9yPHN0ZDo6b3B0aW9uYWw8V2ViWFJGcmFtZTo6UG9wdWxhdGVkUG9zZT4+IFdl
YlhSRnJhbWU6OnBvcHVsYXRlUG9zZShjCiAgICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCB9
OwogCiAgICAgYXV0byBlZmZlY3RpdmVPcmlnaW4gPSBzcGFjZS5lZmZlY3RpdmVPcmlnaW4oKTsK
KyAgICAvLyBBIHNwYWNlJ3MgZWZmZWN0aXZlT3JpZ2luIGNhbiBiZSBudWxsLCBzdWNoIGFzIGEg
am9pbnQgcG9zZSBmcm9tIGEgaGFuZCB0aGF0IGhhcworICAgIC8vIG90aGVyIG1pc3Npbmcgam9p
bnQgcG9zZXMuCiAgICAgaWYgKCFlZmZlY3RpdmVPcmlnaW4pCi0gICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciB9OworICAgICAgICByZXR1cm4geyBzdGQ6Om51bGxv
cHQgfTsKIAogICAgIGF1dG8gdHJhbnNmb3JtID0gICpiYXNlVHJhbnNmb3JtLnZhbHVlKCkuaW52
ZXJzZSgpICogZWZmZWN0aXZlT3JpZ2luLnZhbHVlKCk7CiAKQEAgLTI2MywyMyArMjY1LDExNSBA
QCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9zZShjb25zdCBQ
bGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRAogI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKIAogLy8g
aHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1oYW5kLWlucHV0LyNkb20teHJm
cmFtZS1nZXRqb2ludHBvc2UKLUV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUkpvaW50UG9zZT4+IFdl
YlhSRnJhbWU6OmdldEpvaW50UG9zZShjb25zdCBXZWJYUkpvaW50U3BhY2UmIGpvaW50LCBjb25z
dCBXZWJYUlNwYWNlJiBiYXNlU3BhY2UpCitFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJKb2ludFBv
c2U+PiBXZWJYUkZyYW1lOjpnZXRKb2ludFBvc2UoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBXZWJYUkpvaW50U3BhY2UmIGpvaW50U3BhY2UsIGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VT
cGFjZSkKIHsKLSAgICBVTlVTRURfUEFSQU0oam9pbnQpOwotICAgIFVOVVNFRF9QQVJBTShiYXNl
U3BhY2UpOwotICAgIHJldHVybiBudWxscHRyOworICAgIGF1dG8gcG9wdWxhdGVQb3NlUmVzdWx0
ID0gcG9wdWxhdGVQb3NlKGRvY3VtZW50LCBqb2ludFNwYWNlLCBiYXNlU3BhY2UpOworICAgIGlm
IChwb3B1bGF0ZVBvc2VSZXN1bHQuaGFzRXhjZXB0aW9uKCkpCisgICAgICAgIHJldHVybiBwb3B1
bGF0ZVBvc2VSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAgYXV0byBwb3B1bGF0ZVZh
bHVlID0gcG9wdWxhdGVQb3NlUmVzdWx0LnJlbGVhc2VSZXR1cm5WYWx1ZSgpOworICAgIGlmICgh
cG9wdWxhdGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICByZXR1cm4gUmVm
UHRyPFdlYlhSSm9pbnRQb3NlPihXZWJYUkpvaW50UG9zZTo6Y3JlYXRlKFdlYlhSUmlnaWRUcmFu
c2Zvcm06OmNyZWF0ZShwb3B1bGF0ZVZhbHVlLT50cmFuc2Zvcm0pLCBwb3B1bGF0ZVZhbHVlLT5l
bXVsYXRlZFBvc2l0aW9uLCBqb2ludFNwYWNlLnJhZGl1cygpKSk7CiB9CiAKIC8vIGh0dHBzOi8v
aW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItaGFuZC1pbnB1dC8jZG9tLXhyZnJhbWUtZmls
bGpvaW50cmFkaWkKLUV4Y2VwdGlvbk9yPGJvb2w+IFdlYlhSRnJhbWU6OmZpbGxKb2ludFJhZGlp
KGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4sIGNvbnN0IEZsb2F0MzJBcnJh
eSYpCitFeGNlcHRpb25Pcjxib29sPiBXZWJYUkZyYW1lOjpmaWxsSm9pbnRSYWRpaShjb25zdCBW
ZWN0b3I8UmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+JiBqb2ludFNwYWNlcywgRmxvYXQzMkFycmF5
JiByYWRpaSkKIHsKLSAgICByZXR1cm4gdHJ1ZTsKKyAgICAvLyBJZiBmcmFtZeKAmXMgYWN0aXZl
IGJvb2xlYW4gaXMgZmFsc2UsIHRocm93IGFuIEludmFsaWRTdGF0ZUVycm9yIGFuZCBhYm9ydCB0
aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fYWN0aXZlKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9u
IHsgSW52YWxpZFN0YXRlRXJyb3IsICJGcmFtZSBpcyBub3QgYWN0aXZlIl9zIH07CisKKyAgICAv
LyBGb3IgZWFjaCBqb2ludCBpbiB0aGUgam9pbnRTcGFjZXM6CisgICAgLy8gSWYgam9pbnTigJlz
IHNlc3Npb24gaXMgZGlmZmVyZW50IGZyb20gc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0YXRl
RXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGZvciAoY29uc3QgYXV0byYgam9pbnRT
cGFjZSA6IGpvaW50U3BhY2VzKSB7CisgICAgICAgIGlmICgham9pbnRTcGFjZSB8fCBqb2ludFNw
YWNlLT5zZXNzaW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgICAgICAgICAgcmV0dXJuIEV4
Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiSm9pbnQgc3BhY2UncyBzZXNzaW9uIGRvZXMg
bm90IG1hdGNoIGZyYW1lJ3Mgc2Vzc2lvbiJfcyB9OworICAgIH0KKworICAgIC8vIElmIHRoZSBs
ZW5ndGggb2Ygam9pbnRTcGFjZXMgaXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50
cyBpbiByYWRpaSwgdGhyb3cgYSBUeXBlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAg
IGlmIChqb2ludFNwYWNlcy5zaXplKCkgPiByYWRpaS5sZW5ndGgoKSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuZXhwZWN0ZWQgbGVuZ3RoIG9mIHJhZGlpIGFycmF5
Il9zIH07CisKKyAgICAvLyBMZXQgYWxsVmFsaWQgYmUgdHJ1ZS4KKyAgICBib29sIGFsbFZhbGlk
ID0gdHJ1ZTsKKworICAgIC8vIEZvciBlYWNoIGpvaW50IGluIHRoZSBqb2ludFNwYWNlczoKKyAg
ICAvLyAxLiBTZXQgdGhlIGZsb2F0IHZhbHVlIG9mIHJhZGlpIGF0IG9mZnNldCBhcyBmb2xsb3dz
OgorICAgIC8vIElmIHRoZSB1c2VyIGFnZW50IGNhbiBkZXRlcm1pbmUgdGhlIHBvc2VzIG9mIGFs
bCB0aGUgam9pbnRzIGJlbG9uZ2luZyB0byB0aGUgam9pbnTigJlzIGhhbmQ6CisgICAgLy8gICAg
IFNldCB0aGUgZmxvYXQgdmFsdWUgb2YgcmFkaWkgYXQgb2Zmc2V0IHRvIHRoYXQgcmFkaXVzLgor
ICAgIC8vIE90aGVyd2lzZQorICAgIC8vICAgICBTZXQgdGhlIGZsb2F0IHZhbHVlIG9mIHJhZGlp
IGF0IG9mZnNldCB0byBOYU4uCisgICAgLy8gICAgIFNldCBhbGxWYWxpZCB0byBmYWxzZS4KKyAg
ICAvLyAyLiBJbmNyZWFzZSBvZmZzZXQgYnkgMS4KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8
IGpvaW50U3BhY2VzLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChqb2ludFNwYWNlc1tpXS0+
aGFuZEhhc01pc3NpbmdQb3NlcygpKSB7CisgICAgICAgICAgICByYWRpaS5zZXQoaSwgc3RkOjpu
dW1lcmljX2xpbWl0czxmbG9hdD46OnF1aWV0X05hTigpKTsKKyAgICAgICAgICAgIGFsbFZhbGlk
ID0gZmFsc2U7CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgcmFkaWkuc2V0KGksIGpvaW50
U3BhY2VzW2ldLT5yYWRpdXMoKSk7CisgICAgfQorCisgICAgcmV0dXJuIGFsbFZhbGlkOwogfQog
CiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWhhbmQtaW5wdXQvI2Rv
bS14cmZyYW1lLWZpbGxwb3NlcwotRXhjZXB0aW9uT3I8Ym9vbD4gV2ViWFJGcmFtZTo6ZmlsbFBv
c2VzKGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJTcGFjZT4+LCBjb25zdCBXZWJYUlNwYWNlJiwg
Y29uc3QgRmxvYXQzMkFycmF5JikKK0V4Y2VwdGlvbk9yPGJvb2w+IFdlYlhSRnJhbWU6OmZpbGxQ
b3Nlcyhjb25zdCBEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJT
cGFjZT4+JiBzcGFjZXMsIGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSwgRmxvYXQzMkFycmF5
JiB0cmFuc2Zvcm1zKQogewotICAgIHJldHVybiB0cnVlOworICAgIC8vIElmIGZyYW1l4oCZcyBh
Y3RpdmUgYm9vbGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9hY3RpdmUpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZyYW1lIGlzIG5vdCBhY3RpdmUiX3MgfTsKKwor
ICAgIC8vIEZvciBlYWNoIHNwYWNlIGluIHRoZSBzcGFjZXMgc2VxdWVuY2U6CisgICAgLy8gSWYg
c3BhY2XigJlzIHNlc3Npb24gaXMgZGlmZmVyZW50IGZyb20gc2Vzc2lvbiwgdGhyb3cgYW4gSW52
YWxpZFN0YXRlRXJyb3IgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGZvciAoY29uc3QgYXV0
byYgc3BhY2UgOiBzcGFjZXMpIHsKKyAgICAgICAgaWYgKCFzcGFjZSB8fCBzcGFjZS0+c2Vzc2lv
bigpICE9IG1fc2Vzc2lvbi5wdHIoKSkKKyAgICAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBJ
bnZhbGlkU3RhdGVFcnJvciwgIlNwYWNlJ3Mgc2Vzc2lvbiBkb2VzIG5vdCBtYXRjaCBmcmFtZSdz
IHNlc3Npb24iX3MgfTsKKyAgICB9CisKKyAgICAvLyBJZiBiYXNlU3BhY2XigJlzIHNlc3Npb24g
aXMgZGlmZmVyZW50IGZyb20gc2Vzc2lvbiwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmIChiYXNlU3BhY2Uuc2Vzc2lvbigpICE9IG1fc2Vz
c2lvbi5wdHIoKSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9y
LCAiQmFzZSBzcGFjZSdzIHNlc3Npb24gZG9lcyBub3QgbWF0Y2ggZnJhbWUncyBzZXNzaW9uIl9z
IH07CisKKyAgICAvLyBJZiB0aGUgbGVuZ3RoIG9mIHNwYWNlcyBtdWx0aXBsaWVkIGJ5IDE2IGlz
IGxhcmdlciB0aGFuIHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gdHJhbnNmb3JtcywKKyAgICAv
LyB0aHJvdyBhIFR5cGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgY29uc3Qgc2l6
ZV90IG51bWJlck9mRmxvYXRzUGVyVHJhbnNmb3JtID0gMTY7CisgICAgaWYgKHNwYWNlcy5zaXpl
KCkgKiBudW1iZXJPZkZsb2F0c1BlclRyYW5zZm9ybSA+IHRyYW5zZm9ybXMubGVuZ3RoKCkpCisg
ICAgICAgIHJldHVybiBFeGNlcHRpb24geyBUeXBlRXJyb3IsICJVbmV4cGVjdGVkIGxlbmd0aCBv
ZiB0cmFuc2Zvcm1zIGFycmF5Il9zIH07CisKKyAgICAvLyBDaGVjayBpZiBwb3NlcyBtYXkgYmUg
cmVwb3J0ZWQgYW5kLCBpZiBub3QsIHRocm93IGEgU2VjdXJpdHlFcnJvciBhbmQgYWJvcnQgdGhl
c2Ugc3RlcHMuCisgICAgaWYgKCFtX3Nlc3Npb24tPnBvc2VzQ2FuQmVSZXBvcnRlZChkb2N1bWVu
dCkpCisgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBTZWN1cml0eUVycm9yLCAiUG9zZXMgY2Fu
bm90IGJlIHJlcG9ydGVkIl9zIH07CisKKyAgICAvLyBMZXQgYWxsVmFsaWQgYmUgdHJ1ZS4KKyAg
ICBib29sIGFsbFZhbGlkID0gdHJ1ZTsKKworICAgIC8vIEZvciBlYWNoIHNwYWNlIGluIHRoZSBz
cGFjZXMgc2VxdWVuY2U6CisgICAgZm9yIChzaXplX3Qgc3BhY2VJbmRleCA9IDA7IHNwYWNlSW5k
ZXggPCBzcGFjZXMuc2l6ZSgpOyArK3NwYWNlSW5kZXgpIHsKKyAgICAgICAgLy8gMS4gUG9wdWxh
dGUgdGhlIHBvc2Ugb2Ygc3BhY2UgaW4gYmFzZVNwYWNlIGF0IHRoZSB0aW1lIHJlcHJlc2VudGVk
IGJ5IGZyYW1lIGludG8gcG9zZS4KKyAgICAgICAgYXV0byBwb3B1bGF0ZVBvc2VSZXN1bHQgPSBw
b3B1bGF0ZVBvc2UoZG9jdW1lbnQsICooc3BhY2VzW3NwYWNlSW5kZXhdKSwgYmFzZVNwYWNlKTsK
KyAgICAgICAgaWYgKHBvcHVsYXRlUG9zZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAg
ICAgIHJldHVybiBwb3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOworCisgICAg
ICAgIC8vIDIuIElmIHBvc2UgaXMgbnVsbCwgcGVyZm9ybSB0aGUgZm9sbG93aW5nIHN0ZXBzOgor
ICAgICAgICAvLyAzLiBTZXQgMTYgY29uc2VjdXRpdmUgZWxlbWVudHMgb2YgdGhlIHRyYW5zZm9y
bXMgYXJyYXkgc3RhcnRpbmcgYXQgb2Zmc2V0IHRvIE5hTi4KKyAgICAgICAgLy8gNC4gU2V0IGFs
bFZhbGlkIHRvIGZhbHNlLgorICAgICAgICBhdXRvIHBvcHVsYXRlVmFsdWUgPSBwb3B1bGF0ZVBv
c2VSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAgICAgIGlmICghcG9wdWxhdGVWYWx1
ZSkgeworICAgICAgICAgICAgZm9yIChzaXplX3QgdHJhbnNmb3JtSW5kZXggPSAwOyB0cmFuc2Zv
cm1JbmRleCA8IG51bWJlck9mRmxvYXRzUGVyVHJhbnNmb3JtOyArK3RyYW5zZm9ybUluZGV4KQor
ICAgICAgICAgICAgICAgIHRyYW5zZm9ybXMuc2V0KHNwYWNlSW5kZXggKiBudW1iZXJPZkZsb2F0
c1BlclRyYW5zZm9ybSArIHRyYW5zZm9ybUluZGV4LCBzdGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0
Pjo6cXVpZXRfTmFOKCkpOworICAgICAgICAgICAgYWxsVmFsaWQgPSBmYWxzZTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIC8vIDUuIElmIHBvc2UgaXMgbm90IG51bGwsIGNvcHkgYWxs
IGVsZW1lbnRzIGZyb20gcG9zZeKAmXMgbWF0cml4IG1lbWJlciB0byB0aGUgdHJhbnNmb3JtcyBh
cnJheSBzdGFydGluZyBhdCBvZmZzZXQuCisgICAgICAgICAgICAvLyA2LiBJbmNyZWFzZSBvZmZz
ZXQgYnkgMTYuCisgICAgICAgICAgICBhdXRvIG1hdHJpeCA9IHBvcHVsYXRlVmFsdWUtPnRyYW5z
Zm9ybS50b0NvbHVtbk1ham9yRmxvYXRBcnJheSgpOworICAgICAgICAgICAgZm9yIChzaXplX3Qg
dHJhbnNmb3JtSW5kZXggPSAwOyB0cmFuc2Zvcm1JbmRleCA8IG51bWJlck9mRmxvYXRzUGVyVHJh
bnNmb3JtOyArK3RyYW5zZm9ybUluZGV4KQorICAgICAgICAgICAgICAgIHRyYW5zZm9ybXMuc2V0
KHNwYWNlSW5kZXggKiBudW1iZXJPZkZsb2F0c1BlclRyYW5zZm9ybSArIHRyYW5zZm9ybUluZGV4
LCBtYXRyaXhbdHJhbnNmb3JtSW5kZXhdKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBhbGxWYWxpZDsKIH0KIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJGcmFtZS5oCmluZGV4IGJiYWEyY2RkOGU5ZmNiOGVmMDY0ZDU0NzQ4MTI0NGQ5ZDQxMjM4ZjYu
LjE1ZjU3ZmYyOGJhN2I2ZWI2ZmY0ZjM2YzM4NzM3YjQ4ZjE4MDhkOTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oCkBAIC02MCw5ICs2MCw5IEBAIHB1YmxpYzoK
ICAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJQb3NlPj4gZ2V0UG9zZShjb25zdCBEb2N1bWVu
dCYsIGNvbnN0IFdlYlhSU3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CiAKICNpZiBFTkFCTEUo
V0VCWFJfSEFORFMpCi0gICAgRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSSm9pbnRQb3NlPj4gZ2V0
Sm9pbnRQb3NlKGNvbnN0IFdlYlhSSm9pbnRTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKLSAg
ICBFeGNlcHRpb25Pcjxib29sPiBmaWxsSm9pbnRSYWRpaShjb25zdCBWZWN0b3I8UmVmUHRyPFdl
YlhSSm9pbnRTcGFjZT4+LCBjb25zdCBGbG9hdDMyQXJyYXkmKTsKLSAgICBFeGNlcHRpb25Pcjxi
b29sPiBmaWxsUG9zZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUlNwYWNlPj4sIGNvbnN0IFdl
YlhSU3BhY2UmLCBjb25zdCBGbG9hdDMyQXJyYXkmKTsKKyAgICBFeGNlcHRpb25PcjxSZWZQdHI8
V2ViWFJKb2ludFBvc2U+PiBnZXRKb2ludFBvc2UoY29uc3QgRG9jdW1lbnQmLCBjb25zdCBXZWJY
UkpvaW50U3BhY2UmLCBjb25zdCBXZWJYUlNwYWNlJik7CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4g
ZmlsbEpvaW50UmFkaWkoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+PiYsIEZs
b2F0MzJBcnJheSYpOworICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGZpbGxQb3Nlcyhjb25zdCBEb2N1
bWVudCYsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJTcGFjZT4+JiwgY29uc3QgV2ViWFJTcGFj
ZSYsIEZsb2F0MzJBcnJheSYpOwogI2VuZGlmCiAKICAgICB2b2lkIHNldFRpbWUoRE9NSGlnaFJl
c1RpbWVTdGFtcCB0aW1lKSB7IG1fdGltZSA9IHRpbWU7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJIYW5kLmNwcAppbmRleCBmNTNlNDFiZmQyZWY1YWQ1OTk3MmIzNGVkN2E2
ZjMzNTU5YzFjMzkxLi44NTk5YjVmMzQ0ODU2NzUxZDA1MzI5ODUwMzg2NWZhZTk4OTA4MDE5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3BwCkBAIC00MywxNCAr
NDMsMjggQEAgUmVmPFdlYlhSSGFuZD4gV2ViWFJIYW5kOjpjcmVhdGUoY29uc3QgV2ViWFJJbnB1
dFNvdXJjZSYgaW5wdXRTb3VyY2UpCiBXZWJYUkhhbmQ6OldlYlhSSGFuZChjb25zdCBXZWJYUklu
cHV0U291cmNlJiBpbnB1dFNvdXJjZSkKICAgICA6IG1faW5wdXRTb3VyY2UoaW5wdXRTb3VyY2Up
CiB7CisgICAgYXV0byogc2Vzc2lvbiA9IHRoaXMtPnNlc3Npb24oKTsKKyAgICBhdXRvKiBkb2N1
bWVudCA9IHNlc3Npb24gPyBkb3duY2FzdDxEb2N1bWVudD4oc2Vzc2lvbi0+c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpKSA6IG51bGxwdHI7CisgICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0
dXJuOworCisgICAgc2l6ZV90IGpvaW50Q291bnQgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KFhSSGFu
ZEpvaW50OjpDb3VudCk7CisgICAgVmVjdG9yPFJlZjxXZWJYUkpvaW50U3BhY2U+PiBqb2ludHM7
CisgICAgam9pbnRzLnJlc2VydmVJbml0aWFsQ2FwYWNpdHkoam9pbnRDb3VudCk7CisgICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCBqb2ludENvdW50OyArK2kpCisgICAgICAgIGpvaW50cy5hcHBl
bmQoV2ViWFJKb2ludFNwYWNlOjpjcmVhdGUoKmRvY3VtZW50LCAqdGhpcywgc3RhdGljX2Nhc3Q8
WFJIYW5kSm9pbnQ+KGkpKSk7CisgICAgbV9qb2ludHMgPSBXVEZNb3ZlKGpvaW50cyk7CiB9CiAK
IFdlYlhSSGFuZDo6fldlYlhSSGFuZCgpID0gZGVmYXVsdDsKIAogUmVmUHRyPFdlYlhSSm9pbnRT
cGFjZT4gV2ViWFJIYW5kOjpnZXQoY29uc3QgWFJIYW5kSm9pbnQmIGtleSkKIHsKLSAgICBVTlVT
RURfUEFSQU0oa2V5KTsKLSAgICByZXR1cm4gbnVsbHB0cjsKKyAgICBzaXplX3Qgam9pbnRJbmRl
eCA9IHN0YXRpY19jYXN0PHNpemVfdD4oa2V5KTsKKyAgICBpZiAoam9pbnRJbmRleCA+PSBtX2pv
aW50cy5zaXplKCkpCisgICAgICAgIHJldHVybiBudWxscHRyOworCisgICAgcmV0dXJuIG1fam9p
bnRzW2pvaW50SW5kZXhdLnB0cigpOwogfQogCiBXZWJYUkhhbmQ6Okl0ZXJhdG9yOjpJdGVyYXRv
cihXZWJYUkhhbmQmIGhhbmQpCkBAIC02MCwxOSArNzQsNDQgQEAgV2ViWFJIYW5kOjpJdGVyYXRv
cjo6SXRlcmF0b3IoV2ViWFJIYW5kJiBoYW5kKQogCiBzdGQ6Om9wdGlvbmFsPEtleVZhbHVlUGFp
cjxYUkhhbmRKb2ludCwgUmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+PiBXZWJYUkhhbmQ6Okl0ZXJh
dG9yOjpuZXh0KCkKIHsKLSAgICBpZiAobV9pbmRleCA+IG1faGFuZC0+bV9qb2ludHMuc2l6ZSgp
KQorICAgIGlmIChtX2luZGV4ID49IG1faGFuZC0+bV9qb2ludHMuc2l6ZSgpKQogICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzaXpl
X3QgaW5kZXggPSBtX2luZGV4Kys7CisgICAgcmV0dXJuIEtleVZhbHVlUGFpcjxYUkhhbmRKb2lu
dCwgUmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+IHsgc3RhdGljX2Nhc3Q8WFJIYW5kSm9pbnQ+KGlu
ZGV4KSwgbV9oYW5kLT5tX2pvaW50c1tpbmRleF0ucHRyKCkgfTsKIH0KIAogV2ViWFJTZXNzaW9u
KiBXZWJYUkhhbmQ6OnNlc3Npb24oKQogewogICAgIGlmICghbV9pbnB1dFNvdXJjZSkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKICAgICByZXR1cm4gbV9pbnB1dFNvdXJjZS5nZXQoKS0+c2Vz
c2lvbigpOwogfQogCit2b2lkIFdlYlhSSGFuZDo6dXBkYXRlRnJvbUlucHV0U291cmNlKGNvbnN0
IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSYgaW5wdXRTb3VyY2Up
Cit7CisgICAgaWYgKCFpbnB1dFNvdXJjZS5oYW5kSm9pbnRzKSB7CisgICAgICAgIG1faGFzTWlz
c2luZ1Bvc2VzID0gdHJ1ZTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8mIGhh
bmRKb2ludHMgPSAqKGlucHV0U291cmNlLmhhbmRKb2ludHMpOworICAgIGlmIChoYW5kSm9pbnRz
LnNpemUoKSAhPSBtX2pvaW50cy5zaXplKCkpIHsKKyAgICAgICAgbV9oYXNNaXNzaW5nUG9zZXMg
PSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgYm9vbCBoYXNNaXNzaW5nUG9z
ZXMgPSBmYWxzZTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGhhbmRKb2ludHMuc2l6ZSgp
OyArK2kpIHsKKyAgICAgICAgaWYgKCFoYW5kSm9pbnRzW2ldKQorICAgICAgICAgICAgaGFzTWlz
c2luZ1Bvc2VzID0gdHJ1ZTsKKworICAgICAgICBtX2pvaW50c1tpXS0+dXBkYXRlRnJvbUpvaW50
KGhhbmRKb2ludHNbaV0pOworICAgIH0KKyAgICBtX2hhc01pc3NpbmdQb3NlcyA9IGhhc01pc3Np
bmdQb3NlczsKK30KKwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJIYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dl
YlhSSGFuZC5oCmluZGV4IGRiZTExNDMyNTNkNTcwNzkxYWZjN2JkODY4OGM5OTJkYzNmYmJhZmUu
LmEwZGQxYjUxMjBiMWZlNmVjMDY4ZjMxY2ExNGQ4NjczZDQ0ODE2M2MgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaApAQCAtMzYsMTcgKzM2LDE4IEBACiAjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgV2ViWFJIYW5kIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJIYW5kPiB7Citj
bGFzcyBXZWJYUkhhbmQgOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUkhhbmQ+LCBwdWJsaWMgQ2Fu
TWFrZVdlYWtQdHI8V2ViWFJIYW5kPiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChXZWJY
UkhhbmQpOwogcHVibGljOgogCiAgICAgc3RhdGljIFJlZjxXZWJYUkhhbmQ+IGNyZWF0ZShjb25z
dCBXZWJYUklucHV0U291cmNlJik7CiAgICAgfldlYlhSSGFuZCgpOwogCi0gICAgdW5zaWduZWQg
c2l6ZSgpIHsgcmV0dXJuIG1fc2l6ZTsgfQorICAgIHVuc2lnbmVkIHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX2pvaW50cy5zaXplKCk7IH0KIAogICAgIFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+IGdl
dChjb25zdCBYUkhhbmRKb2ludCYga2V5KTsKIApAQCAtNjEsMTYgKzYyLDE3IEBAIHB1YmxpYzoK
ICAgICB9OwogICAgIEl0ZXJhdG9yIGNyZWF0ZUl0ZXJhdG9yKCkgeyByZXR1cm4gSXRlcmF0b3Io
KnRoaXMpOyB9CiAKLSAgICAvLyBGb3IgR0MgcmVhY2hhYmxpdGl5LgorICAgIC8vIEZvciBHQyBy
ZWFjaGFiaWxpdHkuCiAgICAgV2ViWFJTZXNzaW9uKiBzZXNzaW9uKCk7CiAKKyAgICBib29sIGhh
c01pc3NpbmdQb3NlcygpIGNvbnN0IHsgcmV0dXJuIG1faGFzTWlzc2luZ1Bvc2VzOyB9CisgICAg
dm9pZCB1cGRhdGVGcm9tSW5wdXRTb3VyY2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFt
ZURhdGE6OklucHV0U291cmNlJik7CisKIHByaXZhdGU6CiAgICAgV2ViWFJIYW5kKGNvbnN0IFdl
YlhSSW5wdXRTb3VyY2UmKTsKIAotICAgIHVuc2lnbmVkIG1fc2l6ZSB7IDAgfTsKLSAgICB1c2lu
ZyBIYW5kSm9pbnRUb1NwYWNlTWFwID0gSGFzaE1hcDxYUkhhbmRKb2ludCwgUmVmPFdlYlhSSm9p
bnRTcGFjZT4sIERlZmF1bHRIYXNoPHVuc2lnbmVkPiwgV1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5
SGFzaFRyYWl0czx1bnNpZ25lZD4+OwotICAgIEhhbmRKb2ludFRvU3BhY2VNYXAgbV9qb2ludHM7
Ci0KKyAgICBGaXhlZFZlY3RvcjxSZWY8V2ViWFJKb2ludFNwYWNlPj4gbV9qb2ludHM7CisgICAg
Ym9vbCBtX2hhc01pc3NpbmdQb3NlcyB7IHRydWUgfTsKICAgICBXZWFrUHRyPFdlYlhSSW5wdXRT
b3VyY2U+IG1faW5wdXRTb3VyY2U7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcAppbmRleCA1ZjU2OTNlMzAxMDNkMmZlNzM1ODRl
MTI4MWRlMDc2OGJhYjg3ZjUwLi4wYWE4OWQxZWU3YzI0NTcwOGZkOTBlYzQyODIzMTAxYmY0OWMz
NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRT
b3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNv
dXJjZS5jcHAKQEAgLTg4LDE2ICs4OCwxOSBAQCB2b2lkIFdlYlhSSW5wdXRTb3VyY2U6OnVwZGF0
ZShkb3VibGUgdGltZXN0YW1wLCBjb25zdCBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRAogI2Vu
ZGlmCiAKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgaWYgKHNvdXJjZS5zaW11bGF0ZUhh
bmQpIHsKLSAgICAgICAgLy8gRklYTUU6IFRoaXMgY3VycmVudGx5IGNyZWF0ZXMgYW4gb2JqZWN0
IGp1c3QgZm9yIHVzZSBpbiB0ZXN0aW5nLgotICAgICAgICAvLyBUaGUgcmVhbCBpbXBsZW1lbnRh
dGlvbiB3aWxsIHVzZSBhY3R1YWwgZGF0YSBhbmQgb25seSBiZSB2aXNpYmxlCi0gICAgICAgIC8v
IGlmIGhhbmQtdHJhY2tpbmcgd2FzIHJlcXVlc3RlZCBhdCBzZXNzaW9uIHN0YXJ0LgotICAgICAg
ICBpZiAoIW1faGFuZCkKKyAgICBpZiAoc291cmNlLmhhbmRKb2ludHMpIHsKKyAgICAgICAgLy8g
aHR0cHM6Ly93d3cudzMub3JnL1RSL3dlYnhyLWhhbmQtaW5wdXQtMS8jeHJpbnB1dHNvdXJjZS1p
bnRlcmZhY2UKKyAgICAgICAgLy8gSWYgdGhlIFhSSW5wdXRTb3VyY2UgYmVsb25ncyB0byBhbiBY
UlNlc3Npb24gdGhhdCBoYXMgbm90IGJlZW4gcmVxdWVzdGVkCisgICAgICAgIC8vIHdpdGggdGhl
ICJoYW5kLXRyYWNraW5nIiBmZWF0dXJlIGRlc2NyaXB0b3IsIGhhbmQgTVVTVCBiZSBudWxsLgor
ICAgICAgICBpZiAoIW1faGFuZCAmJiBzZXNzaW9uLT5pc0hhbmRUcmFja2luZ0VuYWJsZWQoKSkK
ICAgICAgICAgICAgIG1faGFuZCA9IFdlYlhSSGFuZDo6Y3JlYXRlKCp0aGlzKTsKLSAgICB9IGVs
c2UKLSAgICAgICAgbV9oYW5kID0gbnVsbHB0cjsKLSNlbmRpZgogCisgICAgICAgIGlmIChtX2hh
bmQpCisgICAgICAgICAgICBtX2hhbmQtPnVwZGF0ZUZyb21JbnB1dFNvdXJjZShzb3VyY2UpOwor
CisgICAgICAgIHJldHVybjsKKyAgICB9CisjZW5kaWYKIH0KIAogYm9vbCBXZWJYUklucHV0U291
cmNlOjpyZXF1aXJlc0lucHV0U291cmNlQ2hhbmdlKGNvbnN0IElucHV0U291cmNlJiBzb3VyY2Up
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3Nl
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCmlu
ZGV4IDRiNzgzYjBjNjZiY2RkNzU5NjkwOThhMTJlMWRhMjdiNzcxMjFhNjMuLmVkMDQ1YmI3NDZi
NmUyZDc0ZmUzOGU1ZTdkNTJhMWRhMzE4ZmYyN2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuY3BwCkBAIC0zNCwxMyArMzQsMTQgQEAgbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoV2ViWFJKb2ludFBv
c2UpOwogCi1SZWY8V2ViWFJKb2ludFBvc2U+IFdlYlhSSm9pbnRQb3NlOjpjcmVhdGUoUmVmPFdl
YlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCitS
ZWY8V2ViWFJKb2ludFBvc2U+IFdlYlhSSm9pbnRQb3NlOjpjcmVhdGUoUmVmPFdlYlhSUmlnaWRU
cmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24sIGZsb2F0IHJhZGl1
cykKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJYUkpvaW50UG9zZShXVEZNb3ZlKHRy
YW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBX
ZWJYUkpvaW50UG9zZShXVEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24sIHJhZGl1
cykpOwogfQogCi1XZWJYUkpvaW50UG9zZTo6V2ViWFJKb2ludFBvc2UoUmVmPFdlYlhSUmlnaWRU
cmFuc2Zvcm0+JiYgdHJhbnNmb3JtLCBib29sIGVtdWxhdGVkUG9zaXRpb24pCitXZWJYUkpvaW50
UG9zZTo6V2ViWFJKb2ludFBvc2UoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYgdHJhbnNmb3Jt
LCBib29sIGVtdWxhdGVkUG9zaXRpb24sIGZsb2F0IHJhZGl1cykKICAgICA6IFdlYlhSUG9zZShX
VEZNb3ZlKHRyYW5zZm9ybSksIGVtdWxhdGVkUG9zaXRpb24pCisgICAgLCBtX3JhZGl1cyhyYWRp
dXMpCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJKb2ludFBvc2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBv
c2UuaAppbmRleCAxZDdjNzQxYTNhYTY0YTVmOTg1OTg1ZWNhZDdlMjhmZmVhNzY4OTlkLi43ZWEx
NWNiNTVhZGRjM2RjNWYyYzJjMTdhNmJhNTEyMGIwMzc4MzUyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5oCkBAIC0zOSwxMyArMzksMTMgQEAgbmFt
ZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgV2ViWFJKb2ludFBvc2UgOiBwdWJsaWMgV2ViWFJQb3Nl
IHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKFdlYlhSSm9pbnRQb3NlKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFdlYlhSSm9pbnRQb3NlPiBjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFu
c2Zvcm0+JiYsIGJvb2wgZW11bGF0ZWRQb3NpdGlvbik7CisgICAgc3RhdGljIFJlZjxXZWJYUkpv
aW50UG9zZT4gY3JlYXRlKFJlZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVk
UG9zaXRpb24sIGZsb2F0IHJhZGl1cyk7CiAgICAgfldlYlhSSm9pbnRQb3NlKCkgPSBkZWZhdWx0
OwogCiAgICAgZmxvYXQgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9yYWRpdXM7IH0KIAogcHJp
dmF0ZToKLSAgICBXZWJYUkpvaW50UG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9v
bCBlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICBXZWJYUkpvaW50UG9zZShSZWY8V2ViWFJSaWdpZFRy
YW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uLCBmbG9hdCByYWRpdXMpOwogCiAgICAg
ZmxvYXQgbV9yYWRpdXMgeyAwIH07CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSm9pbnRQb3NlLmlkbAppbmRleCA5ZWJkOGJmNTNiMmY5ODU5ZTk5MGI5ZWRmNDU1
YTlhYzQ4Mzc1OTZhLi43M2VjYWVjMjQwZDBmMmI5NzcyZWYxNGI1ZThjMDdmOWNkNzMwOTM4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlk
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbApA
QCAtMjYsNiArMjYsOCBAQAogWwogICAgIENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAogICAgIEVu
YWJsZWRCeVNldHRpbmc9V2ViWFJFbmFibGVkJldlYlhSSGFuZElucHV0TW9kdWxlRW5hYmxlZCwK
KyAgICBKU0dlbmVyYXRlVG9KU09iamVjdCwKKyAgICBKU0dlbmVyYXRlVG9OYXRpdmVPYmplY3Qs
CiAgICAgU2VjdXJlQ29udGV4dCwKICAgICBFeHBvc2VkPVdpbmRvdywKICAgICBJbnRlcmZhY2VO
YW1lPVhSSm9pbnRQb3NlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhy
L1dlYlhSSm9pbnRTcGFjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhS
Sm9pbnRTcGFjZS5jcHAKaW5kZXggOWVlNjUwZmUwOTA4Y2JjNTM3YThlYzc5MzNkYTZmMGU0OGYz
NTBmMC4uMzhkMjI5Y2I2ODI0Y2RmOTdkOWI3OWFhMzZhYWRiYTNmMGI2ZDc5ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmNwcApAQCAtMjgs
NiArMjgsOCBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKSAmJiBFTkFCTEUoV0VCWFJfSEFORFMpCiAK
KyNpbmNsdWRlICJXZWJYUkZyYW1lLmgiCisjaW5jbHVkZSAiV2ViWFJIYW5kLmgiCiAjaW5jbHVk
ZSAiV2ViWFJSaWdpZFRyYW5zZm9ybS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVz
Lmg+CiAKQEAgLTM1LDIyICszNyw0NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtF
X0lTT19BTExPQ0FURURfSU1QTChXZWJYUkpvaW50U3BhY2UpOwogCi1SZWY8V2ViWFJKb2ludFNw
YWNlPiBXZWJYUkpvaW50U3BhY2U6OmNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIFdlYlhSU2Vz
c2lvbiYgc2Vzc2lvbikKK1JlZjxXZWJYUkpvaW50U3BhY2U+IFdlYlhSSm9pbnRTcGFjZTo6Y3Jl
YXRlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJIYW5kJiBoYW5kLCBYUkhhbmRKb2ludCBqb2lu
dE5hbWUsIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0
U291cmNlSGFuZEpvaW50PiYmIGpvaW50KQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdl
YlhSSm9pbnRTcGFjZShkb2N1bWVudCwgc2Vzc2lvbikpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFdlYlhSSm9pbnRTcGFjZShkb2N1bWVudCwgaGFuZCwgam9pbnROYW1lLCBXVEZNb3ZlKGpv
aW50KSkpOwogfQogCi1XZWJYUkpvaW50U3BhY2U6OldlYlhSSm9pbnRTcGFjZShEb2N1bWVudCYg
ZG9jdW1lbnQsIFdlYlhSU2Vzc2lvbiYgc2Vzc2lvbikKK1dlYlhSSm9pbnRTcGFjZTo6V2ViWFJK
b2ludFNwYWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJIYW5kJiBoYW5kLCBYUkhhbmRKb2lu
dCBqb2ludE5hbWUsIHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6
OklucHV0U291cmNlSGFuZEpvaW50PiYmIGpvaW50KQogICAgIDogV2ViWFJTcGFjZShkb2N1bWVu
dCwgV2ViWFJSaWdpZFRyYW5zZm9ybTo6Y3JlYXRlKCkpCi0gICAgLCBtX3Nlc3Npb24oc2Vzc2lv
bikKKyAgICAsIG1faGFuZChoYW5kKQorICAgICwgbV9qb2ludE5hbWUoam9pbnROYW1lKQorICAg
ICwgbV9qb2ludChXVEZNb3ZlKGpvaW50KSkKIHsKIH0KIAogV2ViWFJKb2ludFNwYWNlOjp+V2Vi
WFJKb2ludFNwYWNlKCkgPSBkZWZhdWx0OwogCit2b2lkIFdlYlhSSm9pbnRTcGFjZTo6dXBkYXRl
RnJvbUpvaW50KGNvbnN0IHN0ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlSGFuZEpvaW50PiYgam9pbnQpCit7CisgICAgbV9qb2ludCA9IGpvaW50
OworfQorCitib29sIFdlYlhSSm9pbnRTcGFjZTo6aGFuZEhhc01pc3NpbmdQb3NlcygpIGNvbnN0
Cit7CisgICAgcmV0dXJuICFtX2hhbmQgfHwgbV9oYW5kLT5oYXNNaXNzaW5nUG9zZXMoKTsKK30K
KworV2ViWFJTZXNzaW9uKiBXZWJYUkpvaW50U3BhY2U6OnNlc3Npb24oKSBjb25zdAoreworICAg
IHJldHVybiBtX2hhbmQgPyBtX2hhbmQtPnNlc3Npb24oKSA6IG51bGxwdHI7Cit9CisKIHN0ZDo6
b3B0aW9uYWw8VHJhbnNmb3JtYXRpb25NYXRyaXg+IFdlYlhSSm9pbnRTcGFjZTo6bmF0aXZlT3Jp
Z2luKCkgY29uc3QKIHsKLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIC8vIGh0dHBzOi8v
aW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItaGFuZC1pbnB1dC8jeHJqb2ludHNwYWNlLWlu
dGVyZmFjZQorICAgIC8vIFRoZSBuYXRpdmUgb3JpZ2luIG9mIHRoZSBYUkpvaW50U3BhY2UgbWF5
IG9ubHkgYmUgcmVwb3J0ZWQgd2hlbiBuYXRpdmUgb3JpZ2lucyBvZgorICAgIC8vIGFsbCBvdGhl
ciBYUkpvaW50U3BhY2VzIG9uIHRoZSBzYW1lIGhhbmQgYXJlIGJlaW5nIHJlcG9ydGVkLiBXaGVu
IGEgaGFuZCBpcyBwYXJ0aWFsbHkKKyAgICAvLyBvYnNjdXJlZCB0aGUgdXNlciBhZ2VudCBNVVNU
IGVpdGhlciBlbXVsYXRlIHRoZSBvYnNjdXJlZCBqb2ludHMsIG9yIHJlcG9ydCBudWxsIHBvc2Vz
CisgICAgLy8gZm9yIGFsbCBvZiB0aGUgam9pbnRzLgorICAgIGlmIChoYW5kSGFzTWlzc2luZ1Bv
c2VzKCkgfHwgIW1fam9pbnQpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBy
ZXR1cm4gV2ViWFJGcmFtZTo6bWF0cml4RnJvbVBvc2UobV9qb2ludC0+cG9zZS5wb3NlKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50
U3BhY2UuaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmgK
aW5kZXggNTEyNTdiY2M1ZTRiNjQ0ZTJiMzUyZmZmMzcxOTY2OWI4ODc3OTY1Zi4uYWUwMDEyNDUy
YTdlN2Y1YTI4ZjE3ZmI3NTI5ZGJkMDRmNWQ2MGY5MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFjZS5oCkBAIC0yOSwzMSArMjksMzkgQEAKIAogI2lu
Y2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiUGxhdGZvcm1YUi5oIgotI2luY2x1ZGUgIldl
YlhSU2Vzc2lvbi5oIgogI2luY2x1ZGUgIldlYlhSU3BhY2UuaCIKICNpbmNsdWRlICJYUkhhbmRK
b2ludC5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2MuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+
CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Cisj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWNsYXNzIFdl
YlhSSm9pbnRTcGFjZSA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSm9pbnRTcGFjZT4sIHB1Ymxp
YyBXZWJYUlNwYWNlIHsKK2NsYXNzIFdlYlhSSGFuZDsKK2NsYXNzIFdlYlhSU2Vzc2lvbjsKKwor
Y2xhc3MgV2ViWFJKb2ludFNwYWNlIGZpbmFsOiBwdWJsaWMgUmVmQ291bnRlZDxXZWJYUkpvaW50
U3BhY2U+LCBwdWJsaWMgV2ViWFJTcGFjZSB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChX
ZWJYUkpvaW50U3BhY2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViWFJKb2ludFNwYWNl
PiBjcmVhdGUoRG9jdW1lbnQmLCBXZWJYUlNlc3Npb24mKTsKKyAgICBzdGF0aWMgUmVmPFdlYlhS
Sm9pbnRTcGFjZT4gY3JlYXRlKERvY3VtZW50JiwgV2ViWFJIYW5kJiwgWFJIYW5kSm9pbnQsIHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlSGFu
ZEpvaW50PiYmID0gc3RkOjpudWxsb3B0KTsKICAgICB2aXJ0dWFsIH5XZWJYUkpvaW50U3BhY2Uo
KTsKIAogICAgIHVzaW5nIFJlZkNvdW50ZWQ8V2ViWFJKb2ludFNwYWNlPjo6cmVmOwogICAgIHVz
aW5nIFJlZkNvdW50ZWQ8V2ViWFJKb2ludFNwYWNlPjo6ZGVyZWY7CiAKLSAgICBYUkhhbmRKb2lu
dCBqb2ludE5hbWUoKSBjb25zdCB7IHJldHVybiBYUkhhbmRKb2ludDo6V3Jpc3Q7IH0KKyAgICBY
UkhhbmRKb2ludCBqb2ludE5hbWUoKSBjb25zdCB7IHJldHVybiBtX2pvaW50TmFtZTsgfQorCisg
ICAgZmxvYXQgcmFkaXVzKCkgY29uc3QgeyByZXR1cm4gbV9qb2ludCA/IG1fam9pbnQtPnJhZGl1
cyA6IDA7IH0KKyAgICB2b2lkIHVwZGF0ZUZyb21Kb2ludChjb25zdCBzdGQ6Om9wdGlvbmFsPFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4mKTsKKyAg
ICBib29sIGhhbmRIYXNNaXNzaW5nUG9zZXMoKSBjb25zdDsKKworICAgIFdlYlhSU2Vzc2lvbiog
c2Vzc2lvbigpIGNvbnN0IGZpbmFsOwogCiBwcml2YXRlOgotICAgIFdlYlhSSm9pbnRTcGFjZShE
b2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYpOworICAgIFdlYlhSSm9pbnRTcGFjZShEb2N1bWVudCYs
IFdlYlhSSGFuZCYsIFhSSGFuZEpvaW50LCBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4mJik7CiAKLSAgICBXZWJYUlNlc3Np
b24qIHNlc3Npb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Nlc3Npb24uZ2V0KCk7IH07CiAg
ICAgc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gbmF0aXZlT3JpZ2luKCkgY29u
c3QgZmluYWw7CiAKICAgICB2b2lkIHJlZkV2ZW50VGFyZ2V0KCkgZmluYWwgeyByZWYoKTsgfQpA
QCAtNjEsNyArNjksOSBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBpc0pvaW50U3BhY2UoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBXZWFrUHRyPFdlYlhSU2Vzc2lvbj4gbV9z
ZXNzaW9uOworICAgIFdlYWtQdHI8V2ViWFJIYW5kPiBtX2hhbmQ7CisgICAgWFJIYW5kSm9pbnQg
bV9qb2ludE5hbWUgeyBYUkhhbmRKb2ludDo6V3Jpc3QgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBs
YXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludD4gbV9qb2lu
dDsKIH07CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJKb2ludFNwYWNlLmlkbCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2lu
dFNwYWNlLmlkbAppbmRleCAwMjQxN2U1NmFjMmZlZTI4ZTc0N2RkZDhhOTBmMTUyMzRkZGVlYmJj
Li5hOThlYzA4M2MxZGYwMTc4NTNhMDcyZjEyZGM3MGQ3ZjhiNDE2OGI0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFjZS5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuaWRsCkBAIC0yNiw2ICsy
Niw3IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCWFJfSEFORFMsCiAgICAgRW5hYmxlZEJ5U2V0
dGluZz1XZWJYUkVuYWJsZWQmV2ViWFJIYW5kSW5wdXRNb2R1bGVFbmFibGVkLAorICAgIEpTR2Vu
ZXJhdGVUb0pTT2JqZWN0LAogICAgIEpTR2VuZXJhdGVUb05hdGl2ZU9iamVjdCwKICAgICBTZWN1
cmVDb250ZXh0LAogICAgIEV4cG9zZWQ9V2luZG93LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwCmluZGV4IGYwY2U1OGNjMjI1MGZmN2QxZjRmMDRiMzlm
MzBiYmY5ZjAyZTIzYmIuLjJiODRlMGU5ODcxMjAwNzUwOThjOWMzOGY4NDRkNzhmYTQ5ZTRlZDQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKQEAg
LTY0NSw2ICs2NDUsMTQgQEAgYm9vbCBXZWJYUlNlc3Npb246OnBvc2VzQ2FuQmVSZXBvcnRlZChj
b25zdCBEb2N1bWVudCYgZG9jdW1lbnQpIGNvbnN0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNp
ZiBFTkFCTEUoV0VCWFJfSEFORFMpCitib29sIFdlYlhSU2Vzc2lvbjo6aXNIYW5kVHJhY2tpbmdF
bmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9yZXF1ZXN0ZWRGZWF0dXJlcy5jb250YWlu
cyhQbGF0Zm9ybVhSOjpTZXNzaW9uRmVhdHVyZTo6SGFuZFRyYWNraW5nKTsKK30KKyNlbmRpZgor
CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShXRUJYUikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmggYi9T
b3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCmluZGV4IDg2MGM2ZjVi
YjgxMWRiNDcxNThkNDU5Mzk1ZmE2NDNkYTlkYzA0MzMuLmE2Y2ZhODRlYWEyZWJiMTc0ZmZlODBh
MDMxN2VhOTk3OGRlN2Q1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJTZXNzaW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNlc3Npb24uaApAQCAtOTgsNiArOTgsMTAgQEAgcHVibGljOgogICAgIGNvbnN0IFBsYXRmb3Jt
WFI6OkRldmljZTo6RnJhbWVEYXRhJiBmcmFtZURhdGEoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1l
RGF0YTsgfQogICAgIGNvbnN0IFdlYlhSVmlld2VyU3BhY2UmIHZpZXdlclJlZmVyZW5jZVNwYWNl
KCkgY29uc3QgeyByZXR1cm4gKm1fdmlld2VyUmVmZXJlbmNlU3BhY2U7IH0KICAgICBib29sIHBv
c2VzQ2FuQmVSZXBvcnRlZChjb25zdCBEb2N1bWVudCYpIGNvbnN0OworICAgIAorI2lmIEVOQUJM
RShXRUJYUl9IQU5EUykKKyAgICBib29sIGlzSGFuZFRyYWNraW5nRW5hYmxlZCgpIGNvbnN0Owor
I2VuZGlmCiAKIHByaXZhdGU6CiAgICAgV2ViWFJTZXNzaW9uKERvY3VtZW50JiwgV2ViWFJTeXN0
ZW0mLCBYUlNlc3Npb25Nb2RlLCBQbGF0Zm9ybVhSOjpEZXZpY2UmLCBGZWF0dXJlTGlzdCYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCA2N2Q2Y2MxM2QyODJiNWViNzM3MjNiOThmMzZjNTM3YjdlM2EyNjFhLi4yYzhhYTlhMzRh
MTUwZDlmZTJiNTg0MzBhMGMyMGNlZDcwMzkwZjk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xNzQ3LDYgKzE3NDcsNyBAQAog
CQk1MjczQ0NCMjI1NjQ1NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3M0NDQUQy
NTY0NTc2QzAwODUwMDA3IC8qIEpTRmFrZVhSQnV0dG9uU3RhdGVJbml0LmNwcCAqLzsgfTsKIAkJ
NTI3M0NDQjMyNTY0NTc2RjAwODUwMDA3IC8qIEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzNDQ0FF
MjU2NDU3NkQwMDg1MDAwNyAvKiBKU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHAgKi87IH07
CiAJCTUyNzNDQ0I0MjU2NDU3NkYwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNzNDQ0FGMjU2NDU3
NkUwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCAqLzsgfTsKKwkJNTJBMEJFNjYyN0My
MjdFMTAwNDY2MTFFIC8qIEpTRmFrZVhSSm9pbnRTdGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTJBMEJFNjUyN0MyMjdFMDAwNDY2MTFF
IC8qIEpTRmFrZVhSSm9pbnRTdGF0ZUluaXQuY3BwICovOyB9OwogCQk1MkIwRDRCRTFDNTdGRDFF
MDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MkIwRDRCRDFDNTdGRDFFMDA3N0NFNTMgLyogUGxhdGZvcm1WaWV3
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTJC
MEQ0QzAxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIwRDRCRjFD
NTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MkIwRDRDMjFDNTdG
RjkxMDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkIwRDRDMTFDNTdGRjkxMDA3N0NF
NTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEwMDcyLDYgKzEwMDczLDggQEAKIAkJNTFG
QjY3RDkxQUU2QjVFNDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25TdHls
ZVNoZWV0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTFGQjY3REExQUU2QjVF
NDAwRDA2QzVBIC8qIENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0LmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IENvbnRlbnRFeHRlbnNpb25TdHlsZVNoZWV0Lmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyMTMxRTVBMUM0RjE1NjEwMDMzRjgwMiAvKiBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CisJCTUyNjNCRjIwMjdDMUI1MzgwMDg1MjUwQyAvKiBGYWtlWFJKb2ludFN0YXRl
SW5pdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBGYWtlWFJKb2ludFN0YXRlSW5pdC5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OworCQk1MjYzQkYyMjI3QzFCNTNCMDA4NTI1MEMgLyogRmFrZVhSSm9p
bnRTdGF0ZUluaXQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZp
bGVUeXBlID0gdGV4dDsgcGF0aCA9IEZha2VYUkpvaW50U3RhdGVJbml0LmlkbDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzI0RjExQ0IyRkRGNjAwNzU5NzREIC8qIFRleHRUcmFj
a1JlcHJlc2VudGF0aW9uQ29jb2EubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBUZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLm1tOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk1MjY3MjRGMjFDQjJGREY2MDA3NTk3NEQgLyogVGV4dFRyYWNrUmVwcmVz
ZW50YXRpb25Db2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUZXh0VHJh
Y2tSZXByZXNlbnRhdGlvbkNvY29hLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUy
Njg4QUEzMjdENkE3REEwMDM1NzdBMiAvKiBSZXNpZGVudEtleVJlcXVpcmVtZW50LmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMu
aDsgcGF0aCA9IFJlc2lkZW50S2V5UmVxdWlyZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTEwMDg3LDYgKzEwMDkwLDcgQEAKIAkJNTI3M0NDQUQyNTY0NTc2QzAwODUwMDA3
IC8qIEpTRmFrZVhSQnV0dG9uU3RhdGVJbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IEpTRmFrZVhSQnV0dG9uU3RhdGVJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNTI3M0NDQUUyNTY0NTc2RDAwODUwMDA3IC8qIEpTRmFrZVhSUmlnaWRU
cmFuc2Zvcm1Jbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
RmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNTI3M0NDQUYyNTY0NTc2RTAwODUwMDA3IC8qIEpTRmFrZVhSVmlld0luaXQuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGYWtlWFJWaWV3SW5pdC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyQTBCRTY1MjdDMjI3RTAwMDQ2NjExRSAvKiBK
U0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
bmFtZSA9IEpTRmFrZVhSSm9pbnRTdGF0ZUluaXQuY3BwOyBwYXRoID0gSlNGYWtlWFJKb2ludFN0
YXRlSW5pdC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBENEJEMUM1N0ZE
MUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gUGxhdGZvcm1WaWV3Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBE
NEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MkIwRDRDMTFDNTdGRjkxMDA3
N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwpAQCAtMjExODksNiArMjExOTMsOCBAQAogCQkJCUUxOEQ4M0UzMjQz
RjcxQ0YwMDkyNDdENiAvKiBGYWtlWFJCdXR0b25TdGF0ZUluaXQuaWRsICovLAogCQkJCUUxOEQ4
M0VBMjQzRjcxRDQwMDkyNDdENiAvKiBGYWtlWFJJbnB1dFNvdXJjZUluaXQuaCAqLywKIAkJCQlF
MThEODNEQzI0M0Y3MUNCMDA5MjQ3RDYgLyogRmFrZVhSSW5wdXRTb3VyY2VJbml0LmlkbCAqLywK
KwkJCQk1MjYzQkYyMDI3QzFCNTM4MDA4NTI1MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQuaCAq
LywKKwkJCQk1MjYzQkYyMjI3QzFCNTNCMDA4NTI1MEMgLyogRmFrZVhSSm9pbnRTdGF0ZUluaXQu
aWRsICovLAogCQkJCUUxOEQ4M0U1MjQzRjcxRDEwMDkyNDdENiAvKiBGYWtlWFJSaWdpZFRyYW5z
Zm9ybUluaXQuaCAqLywKIAkJCQlFMThEODNFNjI0M0Y3MUQxMDA5MjQ3RDYgLyogRmFrZVhSUmln
aWRUcmFuc2Zvcm1Jbml0LmlkbCAqLywKIAkJCQlFMThEODNERjI0M0Y3MUNEMDA5MjQ3RDYgLyog
RmFrZVhSVmlld0luaXQuaCAqLywKQEAgLTIxMjg0LDYgKzIxMjkwLDcgQEAKIAkJCQk1MjczQ0NB
QzI1NjQ1NzZDMDA4NTAwMDcgLyogSlNGYWtlWFJCb3VuZHNQb2ludC5jcHAgKi8sCiAJCQkJNTI3
M0NDQUQyNTY0NTc2QzAwODUwMDA3IC8qIEpTRmFrZVhSQnV0dG9uU3RhdGVJbml0LmNwcCAqLywK
IAkJCQk1MjczQ0NBQTI1NjQ1NzZCMDA4NTAwMDcgLyogSlNGYWtlWFJJbnB1dFNvdXJjZUluaXQu
Y3BwICovLAorCQkJCTUyQTBCRTY1MjdDMjI3RTAwMDQ2NjExRSAvKiBKU0Zha2VYUkpvaW50U3Rh
dGVJbml0LmNwcCAqLywKIAkJCQk1MjczQ0NBRTI1NjQ1NzZEMDA4NTAwMDcgLyogSlNGYWtlWFJS
aWdpZFRyYW5zZm9ybUluaXQuY3BwICovLAogCQkJCTUyNzNDQ0FGMjU2NDU3NkUwMDg1MDAwNyAv
KiBKU0Zha2VYUlZpZXdJbml0LmNwcCAqLywKIAkJCQk1MTcxNEVBRTFDRjY2NTRBMDA0NzIzQzQg
LyogSlNHQ09ic2VydmF0aW9uLmNwcCAqLywKQEAgLTM4ODcyLDYgKzM4ODc5LDcgQEAKIAkJCQk1
MjczQ0NCMTI1NjQ1NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJCb3VuZHNQb2ludC5jcHAgaW4gU291
cmNlcyAqLywKIAkJCQk1MjczQ0NCMjI1NjQ1NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJCdXR0b25T
dGF0ZUluaXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI3M0NDQjAyNTY0NTc2RjAwODUwMDA3
IC8qIEpTRmFrZVhSSW5wdXRTb3VyY2VJbml0LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTUyQTBC
RTY2MjdDMjI3RTEwMDQ2NjExRSAvKiBKU0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCTUyNzNDQ0IzMjU2NDU3NkYwMDg1MDAwNyAvKiBKU0Zha2VYUlJpZ2lkVHJh
bnNmb3JtSW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjczQ0NCNDI1NjQ1NzZGMDA4NTAw
MDcgLyogSlNGYWtlWFJWaWV3SW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlERTVGODYxMjFG
QTIzOUU3MDA2REI2M0EgLyogSlNHQ09ic2VydmF0aW9uLmNwcCBpbiBTb3VyY2VzICovLApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0veHIvUGxhdGZvcm1YUi5oCmluZGV4IDkzZDAzZjhhYzlhMjJlMzQ3
YThiM2Y2NDAzZjEyZjg0YjE3YWVjNWYuLjU0ZDJlYjcyODJjMzk0ODc1NmJkODUyYWE5NmJlMzEz
YjE3NDk3ZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRmb3Jt
WFIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKQEAgLTE2
Myw3ICsxNjMsNyBAQCBpbmxpbmUgU3RyaW5nIHNlc3Npb25GZWF0dXJlRGVzY3JpcHRvcihTZXNz
aW9uRmVhdHVyZSBzZXNzaW9uRmVhdHVyZSkKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCiAKIGVu
dW0gY2xhc3MgSGFuZEpvaW50IDogdW5zaWduZWQgewotICAgIFdyaXN0LAorICAgIFdyaXN0ID0g
MCwKICAgICBUaHVtYk1ldGFjYXJwYWwsCiAgICAgVGh1bWJQaGFsYW54UHJveGltYWwsCiAgICAg
VGh1bWJQaGFsYW54RGlzdGFsLApAQCAtMTg3LDcgKzE4Nyw4IEBAIGVudW0gY2xhc3MgSGFuZEpv
aW50IDogdW5zaWduZWQgewogICAgIFBpbmt5RmluZ2VyUGhhbGFueFByb3hpbWFsLAogICAgIFBp
bmt5RmluZ2VyUGhhbGFueEludGVybWVkaWF0ZSwKICAgICBQaW5reUZpbmdlclBoYWxhbnhEaXN0
YWwsCi0gICAgUGlua3lGaW5nZXJUaXAKKyAgICBQaW5reUZpbmdlclRpcCwKKyAgICBDb3VudAog
fTsKIAogI2VuZGlmCkBAIC0zMTMsNiArMzE0LDE4IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHRl
bXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElucHV0U291cmNlUG9z
ZT4gZGVjb2RlKERlY29kZXImKTsKICAgICAgICAgfTsKIAorI2lmIEVOQUJMRShXRUJYUl9IQU5E
UykKKyAgICAgICAgc3RydWN0IElucHV0U291cmNlSGFuZEpvaW50IHsKKyAgICAgICAgICAgIElu
cHV0U291cmNlUG9zZSBwb3NlOworICAgICAgICAgICAgZmxvYXQgcmFkaXVzIHsgMCB9OworCisg
ICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPiB2b2lkIGVuY29kZShFbmNvZGVyJikg
Y29uc3Q7CisgICAgICAgICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVyPiBzdGF0aWMgc3RkOjpv
cHRpb25hbDxJbnB1dFNvdXJjZUhhbmRKb2ludD4gZGVjb2RlKERlY29kZXImKTsKKyAgICAgICAg
fTsKKworICAgICAgICB1c2luZyBIYW5kSm9pbnRzVmVjdG9yID0gVmVjdG9yPHN0ZDo6b3B0aW9u
YWw8SW5wdXRTb3VyY2VIYW5kSm9pbnQ+PjsKKyNlbmRpZgorCiAgICAgICAgIHN0cnVjdCBJbnB1
dFNvdXJjZSB7CiAgICAgICAgICAgICBJbnB1dFNvdXJjZUhhbmRsZSBoYW5kbGUgeyAwIH07CiAg
ICAgICAgICAgICBYUkhhbmRlZG5lc3MgaGFuZGVuZXNzIHsgWFJIYW5kZWRuZXNzOjpOb25lIH07
CkBAIC0zMjMsOCArMzM2LDcgQEAgcHVibGljOgogICAgICAgICAgICAgVmVjdG9yPElucHV0U291
cmNlQnV0dG9uPiBidXR0b25zOwogICAgICAgICAgICAgVmVjdG9yPGZsb2F0PiBheGVzOwogI2lm
IEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICAgICAgICAgIC8vIEZJWE1FOiBBY3R1YWxseSBob2xk
IHNvbWUgaGFuZCBkYXRhLgotICAgICAgICAgICAgYm9vbCBzaW11bGF0ZUhhbmQgeyBmYWxzZSB9
OworICAgICAgICAgICAgc3RkOjpvcHRpb25hbDxIYW5kSm9pbnRzVmVjdG9yPiBoYW5kSm9pbnRz
OwogI2VuZGlmCiAKICAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKQEAgLTYyNCw2ICs2MzYsMjkgQEAgc3RkOjpvcHRpb25hbDxE
ZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VQb3NlPiBEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2UKICAgICByZXR1cm4gaW5wdXRTb3VyY2VQb3NlOwogfQogCisjaWYgRU5BQkxFKFdF
QlhSX0hBTkRTKQordGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4KK3ZvaWQgRGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlSGFuZEpvaW50OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QK
K3sKKyAgICBlbmNvZGVyIDw8IHBvc2U7CisgICAgZW5jb2RlciA8PCByYWRpdXM7Cit9CisKK3Rl
bXBsYXRlPGNsYXNzIERlY29kZXI+CitzdGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpJ
bnB1dFNvdXJjZUhhbmRKb2ludD4gRGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlSGFuZEpv
aW50OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlcikKK3sKKyAgICBzdGQ6Om9wdGlvbmFsPElucHV0
U291cmNlUG9zZT4gcG9zZTsKKyAgICBkZWNvZGVyID4+IHBvc2U7CisgICAgaWYgKCFwb3NlKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN0ZDo6b3B0aW9uYWw8ZmxvYXQ+IHJh
ZGl1czsKKyAgICBkZWNvZGVyID4+IHJhZGl1czsKKyAgICBpZiAoIXJhZGl1cykKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICByZXR1cm4geyB7IFdURk1vdmUoKnBvc2UpLCAqcmFk
aXVzIH0gfTsKK30KKyNlbmRpZgorCiB0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgogdm9pZCBEZXZp
Y2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25z
dAogewpAQCAtNjM1LDYgKzY3MCw5IEBAIHZvaWQgRGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291
cmNlOjplbmNvZGUoRW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBlbmNvZGVyIDw8IGdyaXBP
cmlnaW47CiAgICAgZW5jb2RlciA8PCBidXR0b25zOwogICAgIGVuY29kZXIgPDwgYXhlczsKKyNp
ZiBFTkFCTEUoV0VCWFJfSEFORFMpCisgICAgZW5jb2RlciA8PCBoYW5kSm9pbnRzOworI2VuZGlm
CiB9CiAKIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+CkBAIC02NTcsNiArNjk1LDEwIEBAIHN0ZDo6
b3B0aW9uYWw8RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlPiBEZXZpY2U6OkZyYW1lRGF0
YTo6SW5wdXRTb3VyY2U6OmRlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgaWYg
KCFkZWNvZGVyLmRlY29kZShzb3VyY2UuYXhlcykpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc291
cmNlLmhhbmRKb2ludHMpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworI2VuZGlmCiAg
ICAgcmV0dXJuIHNvdXJjZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhS
SW5wdXRTb3VyY2VJbml0LmgKaW5kZXggMTYwNzYyZDdkNDc3YWJmNjRkMDUyNDY0ZmViOWRkMjA1
NTA5ZGFhZS4uOWE0YWUzM2E2YmQ5MDhhNzRmYTcwM2YwZjUzYTRkYmFkZmU5NTY0MCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5oCkBAIC0zNCw2
ICszNCwxMCBAQAogI2luY2x1ZGUgIlhSVGFyZ2V0UmF5TW9kZS5oIgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyNpbmNsdWRlICJGYWtlWFJKb2lu
dFN0YXRlSW5pdC5oIgorI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3RydWN0IEZh
a2VYUklucHV0U291cmNlSW5pdCB7CkBAIC00Niw3ICs1MCw3IEBAIHN0cnVjdCBGYWtlWFJJbnB1
dFNvdXJjZUluaXQgewogICAgIFZlY3RvcjxGYWtlWFJCdXR0b25TdGF0ZUluaXQ+IHN1cHBvcnRl
ZEJ1dHRvbnM7CiAgICAgRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW47CiAjaWYg
RU5BQkxFKFdFQlhSX0hBTkRTKQotICAgIGJvb2wgc2ltdWxhdGVIYW5kIHsgZmFsc2UgfTsKKyAg
ICBWZWN0b3I8RmFrZVhSSm9pbnRTdGF0ZUluaXQ+IGhhbmRKb2ludHM7CiAjZW5kaWYKIH07CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0
LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0LmlkbApp
bmRleCAxMDE2NjVjZGQzZjgyODY0ZTQ4Yzg1ZjMwZjMzNjRkZTY3YTI1NzVhLi5jNzUwNjJiZWM3
NzQ2MjI5M2UyYzVhY2Y2NzI5MmQ3MzZiMjNlMTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaWRsCkBAIC00Myw1ICs0Myw1IEBACiAgICAg
RmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdyaXBPcmlnaW47CiAgICAgLy8gT3B0aW9uYWwgaGFu
ZCBpbnB1dC4gRm9yIG5vdyB3ZSBkb24ndCBjYXJlIGFib3V0IHRoZSBhY3R1YWwKICAgICAvLyBk
YXRhLiBXZSdyZSBqdXN0IGNyZWF0aW5nIHRoZSBvYmplY3QgZm9yIHRlc3RpbmcuCi0gICAgW0Nv
bmRpdGlvbmFsPVdFQlhSX0hBTkRTXSBib29sZWFuIHNpbXVsYXRlSGFuZCA9IGZhbHNlOworICAg
IFtDb25kaXRpb25hbD1XRUJYUl9IQU5EU10gc2VxdWVuY2U8RmFrZVhSSm9pbnRTdGF0ZUluaXQ+
IGhhbmRKb2ludHM7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtl
WFJKb2ludFN0YXRlSW5pdC5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJKb2ludFN0
YXRlSW5pdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgxZDIzNTE1MGI3NmRjZGQxNTEzMzIyYmU1MGQ2MDU4M2I5
OGEzZjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUkpv
aW50U3RhdGVJbml0LmgKQEAgLTAsMCArMSw0MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAy
MiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorCisjaW5jbHVkZSAiRmFrZVhSUmlnaWRUcmFu
c2Zvcm1Jbml0LmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworc3RydWN0IEZha2VYUkpvaW50
U3RhdGVJbml0IHsKKyAgICBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9zZTsKKyAgICBmbG9h
dCByYWRpdXM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFC
TEUoV0VCWFJfSEFORFMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VY
UkpvaW50U3RhdGVJbml0LmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSm9pbnRT
dGF0ZUluaXQuaWRsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiMDE0MjA5ZmY4NGM5M2ZjZWExZDY2MzA1NjEyNzhk
YjM2OThiNTYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VY
UkpvaW50U3RhdGVJbml0LmlkbApAQCAtMCwwICsxLDMzIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLy8gVXNl
ZCB0byB1cGRhdGUgdGhlIHBvc2UgYW5kIHJhZGl1cyBvZiBhIGpvaW50CitbCisgICAgRW5hYmxl
ZEJ5U2V0dGluZz1XZWJYUkVuYWJsZWQmV2ViWFJIYW5kSW5wdXRNb2R1bGVFbmFibGVkLAorICAg
IENvbmRpdGlvbmFsPVdFQlhSX0hBTkRTLAorXSBkaWN0aW9uYXJ5IEZha2VYUkpvaW50U3RhdGVJ
bml0IHsKKyAgICBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgcG9zZTsKKyAgICBmbG9hdCByYWRp
dXMgPSAwLjA7Cit9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXIuY3BwCmluZGV4IDUyMjRkMjhlMDcyNjNkODhjM2JkYWM1ZGJkOGJhZGY1
MDA0OWQ5ZDMuLjI2ZDQzNWEzMzgyMDZhM2NhYTY0NmY1ZTk1MDUzMTBmMDQ4ODlmNTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5j
cHAKQEAgLTI4LDYgKzI4LDcgQEAKIAogI2lmIEVOQUJMRShXRUJYUikKICNpbmNsdWRlICJXZWJG
YWtlWFJEZXZpY2UuaCIKKyNpbmNsdWRlICJYUkhhbmRKb2ludC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTM2LDYgKzM3LDExIEBAIHVzaW5nIElucHV0U291cmNlQnV0dG9uID0gUGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlQnV0dG9uOwogdXNpbmcgSW5w
dXRTb3VyY2VQb3NlID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNl
UG9zZTsKIHVzaW5nIEJ1dHRvblR5cGUgPSBGYWtlWFJCdXR0b25TdGF0ZUluaXQ6OlR5cGU7CiAK
KyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCit1c2luZyBIYW5kSm9pbnRzVmVjdG9yID0gUGxhdGZv
cm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkhhbmRKb2ludHNWZWN0b3I7Cit1c2luZyBJbnB1dFNv
dXJjZUhhbmRKb2ludCA9IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJj
ZUhhbmRKb2ludDsKKyNlbmRpZgorCiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlv
L3dlYnhyLWdhbWVwYWRzLW1vZHVsZS8jeHItc3RhbmRhcmQtZ2FtZXBhZC1tYXBwaW5nCiBjb25z
dGV4cHIgc3RkOjphcnJheTxCdXR0b25UeXBlLCA1PiBYUl9TVEFOREFSRF9CVVRUT05TID0geyBC
dXR0b25UeXBlOjpHcmlwLCBCdXR0b25UeXBlOjpUb3VjaHBhZCwgQnV0dG9uVHlwZTo6VGh1bWJz
dGljaywgQnV0dG9uVHlwZTo6T3B0aW9uYWxCdXR0b24sIEJ1dHRvblR5cGU6Ok9wdGlvbmFsVGh1
bWJzdGljayB9OwogCkBAIC01MSwxMyArNTcsMTMgQEAgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
OjpXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIoUGxhdGZvcm1YUjo6SW5wdXRTb3VyY2VIYW5kbGUK
ICAgICAsIG1fcHJvZmlsZXMoaW5pdC5wcm9maWxlcykKICAgICAsIG1fcHJpbWFyeVNlbGVjdGVk
KGluaXQuc2VsZWN0aW9uU3RhcnRlZCkKICAgICAsIG1fc2ltdWxhdGVTZWxlY3QoaW5pdC5zZWxl
Y3Rpb25DbGlja2VkKQotI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICAsIG1fc2ltdWxhdGVI
YW5kKGluaXQuc2ltdWxhdGVIYW5kKQotI2VuZGlmCiB7CiAgICAgc2V0UG9pbnRlck9yaWdpbihp
bml0LnBvaW50ZXJPcmlnaW4sIGZhbHNlKTsKICAgICBzZXRHcmlwT3JpZ2luKGluaXQuZ3JpcE9y
aWdpbiwgZmFsc2UpOwogICAgIHNldFN1cHBvcnRlZEJ1dHRvbnMoaW5pdC5zdXBwb3J0ZWRCdXR0
b25zKTsKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCisgICAgdXBkYXRlSGFuZEpvaW50cyhpbml0
LmhhbmRKb2ludHMpOworI2VuZGlmCiB9CiAKIHZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
OjpzZXRHcmlwT3JpZ2luKEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBncmlwT3JpZ2luLCBib29s
IGVtdWxhdGVkUG9zaXRpb24pCkBAIC0xMTAsNyArMTE2LDcgQEAgSW5wdXRTb3VyY2UgV2ViRmFr
ZVhSSW5wdXRDb250cm9sbGVyOjpnZXRGcmFtZURhdGEoKQogICAgIHN0YXRlLnBvaW50ZXJPcmln
aW4gPSBtX3BvaW50ZXJPcmlnaW47CiAgICAgc3RhdGUuZ3JpcE9yaWdpbiA9IG1fZ3JpcE9yaWdp
bjsKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgc3RhdGUuc2ltdWxhdGVIYW5kID0gbV9z
aW11bGF0ZUhhbmQ7CisgICAgc3RhdGUuaGFuZEpvaW50cyA9IG1faGFuZEpvaW50czsKICNlbmRp
ZgogCiAgICAgaWYgKG1fc2ltdWxhdGVTZWxlY3QpCkBAIC0xODIsNiArMTg4LDI4IEBAIFdlYkZh
a2VYUklucHV0Q29udHJvbGxlcjo6QnV0dG9uT3JQbGFjZWhvbGRlciBXZWJGYWtlWFJJbnB1dENv
bnRyb2xsZXI6OmdldEJ1dHRvCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorI2lmIEVOQUJMRShX
RUJYUl9IQU5EUykKK3ZvaWQgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjp1cGRhdGVIYW5kSm9p
bnRzKGNvbnN0IFZlY3RvcjxGYWtlWFJKb2ludFN0YXRlSW5pdD4mIGhhbmRKb2ludHMpCit7Cisg
ICAgaWYgKGhhbmRKb2ludHMuaXNFbXB0eSgpIHx8IGhhbmRKb2ludHMuc2l6ZSgpICE9IHN0YXRp
Y19jYXN0PHNpemVfdD4oWFJIYW5kSm9pbnQ6OkNvdW50KSkgeworICAgICAgICBtX2hhbmRKb2lu
dHMgPSBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBIYW5kSm9p
bnRzVmVjdG9yIHVwZGF0ZWRKb2ludHM7CisgICAgZm9yIChhdXRvIGhhbmRKb2ludCA6IGhhbmRK
b2ludHMpIHsKKyAgICAgICAgYXV0byB0cmFuc2Zvcm0gPSBXZWJGYWtlWFJEZXZpY2U6OnBhcnNl
UmlnaWRUcmFuc2Zvcm0oaGFuZEpvaW50LnBvc2UpOworICAgICAgICBpZiAodHJhbnNmb3JtLmhh
c0V4Y2VwdGlvbigpKSB7CisgICAgICAgICAgICB1cGRhdGVkSm9pbnRzLmFwcGVuZChzdGQ6Om51
bGxvcHQpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgCisgICAg
ICAgIHVwZGF0ZWRKb2ludHMuYXBwZW5kKElucHV0U291cmNlSGFuZEpvaW50IHsgSW5wdXRTb3Vy
Y2VQb3NlIHsgdHJhbnNmb3JtLnJlbGVhc2VSZXR1cm5WYWx1ZSgpLCBmYWxzZSB9LCBoYW5kSm9p
bnQucmFkaXVzIH0pOworICAgIH0KKyAgICBtX2hhbmRKb2ludHMgPSBXVEZNb3ZlKHVwZGF0ZWRK
b2ludHMpOworfQorI2VuZGlmIC8vIEVOQUJMRShXRUJYUl9IQU5EUykKKwogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKaW5kZXggNGQ2OTBmYTczZTUx
ZWQyNjViOTk2OTk5YWFmN2M4NzZkNTk3YWMzYS4uY2EyMGE2OTQyOTZlZWVjMjg5ZjcyNjVkNjZm
OTNmNTU5ODg3ZWJiZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VY
UklucHV0Q29udHJvbGxlci5oCkBAIC0zNyw2ICszNywxMCBAQAogI2luY2x1ZGUgPHd0Zi9SZWZD
b3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKFdFQlhSX0hB
TkRTKQorI2luY2x1ZGUgIkZha2VYUkpvaW50U3RhdGVJbml0LmgiCisjZW5kaWYKKwogbmFtZXNw
YWNlIFdlYkNvcmUgewogCiBjbGFzcyBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIgZmluYWwgOiBw
dWJsaWMgUmVmQ291bnRlZDxXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI+IHsKQEAgLTU3LDYgKzYx
LDEwIEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFN1cHBvcnRlZEJ1dHRvbnMoY29uc3QgVmVjdG9y
PEZha2VYUkJ1dHRvblN0YXRlSW5pdD4mKTsKICAgICB2b2lkIHVwZGF0ZUJ1dHRvblN0YXRlKGNv
bnN0IEZha2VYUkJ1dHRvblN0YXRlSW5pdCYpOwogICAgIGJvb2wgaXNDb25uZWN0ZWQoKSBjb25z
dCB7IHJldHVybiBtX2Nvbm5lY3RlZDsgfQorICAgIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykK
KyAgICB2b2lkIHVwZGF0ZUhhbmRKb2ludHMoY29uc3QgVmVjdG9yPEZha2VYUkpvaW50U3RhdGVJ
bml0PiYpOworI2VuZGlmCiAKICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2UgZ2V0RnJhbWVEYXRhKCk7CiAKQEAgLTgwLDcgKzg4LDcgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1fcHJpbWFyeVNlbGVjdGVkIHsgZmFsc2UgfTsKICAgICBib29sIG1fc2ltdWxhdGVT
ZWxlY3QgeyBmYWxzZSB9OwogI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICBib29sIG1fc2lt
dWxhdGVIYW5kIHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpIYW5kSm9pbnRzVmVjdG9yPiBtX2hhbmRKb2ludHM7CiAjZW5kaWYKIH07
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250
cm9sbGVyLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9s
bGVyLmlkbAppbmRleCBhOTlhMjYxZTg3N2Y4MGVmMGNiN2U4OGE1ZmE1OGFhMjE3ZjIyZjQ1Li5k
OWM1ODc5NWQwNGZjY2I3YmM4YzRjMDBhNDJhM2VhN2I5OGIwMmI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsCkBAIC03Myw0
ICs3Myw2IEBACiAgICAgLy8gVXNlZCB0byB1cGRhdGUgdGhlIHN0YXRlIG9mIGEgYnV0dG9uIGN1
cnJlbnRseSBzdXBwb3J0ZWQgYnkgdGhlIGlucHV0IHNvdXJjZQogICAgIC8vIFdpbGwgbm90IGFk
ZCBzdXBwb3J0IGZvciB0aGF0IGJ1dHRvbiBpZiBpdCBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRl
ZC4KICAgICB1bmRlZmluZWQgdXBkYXRlQnV0dG9uU3RhdGUoRmFrZVhSQnV0dG9uU3RhdGVJbml0
IGJ1dHRvblN0YXRlKTsKKyAgICAKKyAgICBbQ29uZGl0aW9uYWw9V0VCWFJfSEFORFNdIHVuZGVm
aW5lZCB1cGRhdGVIYW5kSm9pbnRzKHNlcXVlbmNlPEZha2VYUkpvaW50U3RhdGVJbml0PiBoYW5k
Sm9pbnRzKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVz
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKaW5kZXggNTQ3Y2Ri
Y2M3ZjEwNzU1ZTdkYzYyYmY3ZjFhNDAzMzdkNTFmZTczOC4uM2Q2NjJmMTBjNDMyMjQ2MDY4MzY3
NjFiZmEzOTg0NGJkNTIzYjJkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJYUlRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNwcApA
QCAtMzksNiArMzksMTkgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXZWJYUlRlc3Q6On5XZWJY
UlRlc3QoKSA9IGRlZmF1bHQ7CiAKK3N0YXRpYyBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZlYXR1cmVM
aXN0IHBhcnNlRmVhdHVyZXMoY29uc3QgVmVjdG9yPEpTQzo6SlNWYWx1ZT4mIGZlYXR1cmVMaXN0
LCBTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQoreworICAgIFBsYXRmb3JtWFI6OkRl
dmljZTo6RmVhdHVyZUxpc3QgZmVhdHVyZXM7CisgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9
IGNvbnRleHQuZ2xvYmFsT2JqZWN0KCkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDog
ZmVhdHVyZUxpc3QpIHsKKyAgICAgICAgICAgIGF1dG8gZmVhdHVyZVN0cmluZyA9IGZlYXR1cmUu
dG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIGlmIChhdXRvIHNlc3Npb25G
ZWF0dXJlID0gUGxhdGZvcm1YUjo6cGFyc2VTZXNzaW9uRmVhdHVyZURlc2NyaXB0b3IoZmVhdHVy
ZVN0cmluZykpCisgICAgICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCpzZXNzaW9uRmVhdHVy
ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZlYXR1cmVzOworfQorCiB2b2lkIFdl
YlhSVGVzdDo6c2ltdWxhdGVEZXZpY2VDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQsIGNvbnN0IEZha2VYUkRldmljZUluaXQmIGluaXQsIFdlYkZha2VYUkRldmljZVBy
b21pc2UmJiBwcm9taXNlKQogewogICAgIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIu
aW8vd2VieHItdGVzdC1hcGkvI2RvbS14cnRlc3Qtc2ltdWxhdGVkZXZpY2Vjb25uZWN0aW9uCkBA
IC00OCwxNiArNjEsMTIgQEAgdm9pZCBXZWJYUlRlc3Q6OnNpbXVsYXRlRGV2aWNlQ29ubmVjdGlv
bihTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdAogCiAgICAgICAgIGRldmlj
ZS0+c2V0Vmlld3MoaW5pdC52aWV3cyk7CiAKLSAgICAgICAgUGxhdGZvcm1YUjo6RGV2aWNlOjpG
ZWF0dXJlTGlzdCBmZWF0dXJlczsKLSAgICAgICAgaWYgKGluaXQuc3VwcG9ydGVkRmVhdHVyZXMp
IHsKLSAgICAgICAgICAgIGlmIChhdXRvKiBnbG9iYWxPYmplY3QgPSBjb250ZXh0Lmdsb2JhbE9i
amVjdCgpKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChhdXRvJiBmZWF0dXJlIDogaW5pdC5zdXBw
b3J0ZWRGZWF0dXJlcy52YWx1ZSgpKSB7Ci0gICAgICAgICAgICAgICAgICAgIGF1dG8gZmVhdHVy
ZVN0cmluZyA9IGZlYXR1cmUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKGF1dG8gc2Vzc2lvbkZlYXR1cmUgPSBQbGF0Zm9ybVhSOjpwYXJzZVNlc3Np
b25GZWF0dXJlRGVzY3JpcHRvcihmZWF0dXJlU3RyaW5nKSkKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGZlYXR1cmVzLmFwcGVuZCgqc2Vzc2lvbkZlYXR1cmUpOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZl
YXR1cmVMaXN0IHN1cHBvcnRlZEZlYXR1cmVzOworICAgICAgICBpZiAoaW5pdC5zdXBwb3J0ZWRG
ZWF0dXJlcykKKyAgICAgICAgICAgIHN1cHBvcnRlZEZlYXR1cmVzID0gcGFyc2VGZWF0dXJlcyhp
bml0LnN1cHBvcnRlZEZlYXR1cmVzLnZhbHVlKCksIGNvbnRleHQpOworICAgICAgICBQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZlYXR1cmVMaXN0IGVuYWJsZWRGZWF0dXJlczsKKyAgICAgICAgaWYgKGlu
aXQuZW5hYmxlZEZlYXR1cmVzKQorICAgICAgICAgICAgZW5hYmxlZEZlYXR1cmVzID0gcGFyc2VG
ZWF0dXJlcyhpbml0LmVuYWJsZWRGZWF0dXJlcy52YWx1ZSgpLCBjb250ZXh0KTsKIAogICAgICAg
ICBpZiAoaW5pdC5ib3VuZHNDb29yZGluYXRlcykgewogICAgICAgICAgICAgaWYgKGluaXQuYm91
bmRzQ29vcmRpbmF0ZXMtPnNpemUoKSA8IDMpIHsKQEAgLTg0LDggKzkzLDEwIEBAIHZvaWQgV2Vi
WFJUZXN0OjpzaW11bGF0ZURldmljZUNvbm5lY3Rpb24oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCwgY29uc3QKICAgICAgICAgICAgICAgICBzdXBwb3J0ZWRNb2Rlcy5hcHBlbmQoWFJT
ZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yIChhdXRv
JiBtb2RlIDogc3VwcG9ydGVkTW9kZXMpCi0gICAgICAgICAgICBzaW11bGF0ZWREZXZpY2Uuc2V0
U3VwcG9ydGVkRmVhdHVyZXMobW9kZSwgZmVhdHVyZXMpOworICAgICAgICBmb3IgKGF1dG8mIG1v
ZGUgOiBzdXBwb3J0ZWRNb2RlcykgeworICAgICAgICAgICAgc2ltdWxhdGVkRGV2aWNlLnNldFN1
cHBvcnRlZEZlYXR1cmVzKG1vZGUsIHN1cHBvcnRlZEZlYXR1cmVzKTsKKyAgICAgICAgICAgIHNp
bXVsYXRlZERldmljZS5zZXRFbmFibGVkRmVhdHVyZXMobW9kZSwgZW5hYmxlZEZlYXR1cmVzKTsK
KyAgICAgICAgfQogCiAgICAgICAgIG1fY29udGV4dC0+cmVnaXN0ZXJTaW11bGF0ZWRYUkRldmlj
ZUZvclRlc3Rpbmcoc2ltdWxhdGVkRGV2aWNlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9XZWJYUlRlc3QuaCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0
LmgKaW5kZXggYjFjYzNkYjNhZTRmMzA5ZDE4ZTgwOGZkNzcxMmJhMWIyMmI3MDc1MS4uNjAyOTc1
NWM5YWE3ODBiNzVlMjNmYTZjMWE2MTViMWVmNjRiYzIyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dl
YlhSVGVzdC5oCkBAIC00Niw2ICs0Niw3IEBAIHB1YmxpYzoKICAgICAgICAgVmVjdG9yPEZha2VY
UlZpZXdJbml0PiB2aWV3czsKIAogICAgICAgICBzdGQ6Om9wdGlvbmFsPFZlY3RvcjxKU0M6OkpT
VmFsdWU+PiBzdXBwb3J0ZWRGZWF0dXJlczsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxWZWN0b3I8
SlNDOjpKU1ZhbHVlPj4gZW5hYmxlZEZlYXR1cmVzOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPEZha2VYUkJvdW5kc1BvaW50Pj4gYm91bmRzQ29vcmRpbmF0ZXM7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvV2ViWFJUZXN0LmlkbAppbmRleCA4ZDBiMDZiMDNhZTY3YWE2NTRlMmVhYzE3OTgx
OTg2Mjk4OTZmOWJjLi5lNjY3MzliNjljZWI4MzJlN2NmOGI1ZTU3ZTkxYjZjOTk2ZDdkZjM0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaWRsCkBAIC02MSw2ICs2MSwxMCBAQAogICAg
IC8vIE5PVEU6IFRoaXMgaXMgbWVhbnQgdG8gZW11bGF0ZSBoYXJkd2FyZSBzdXBwb3J0LCBub3Qg
d2hldGhlciBhIGZlYXR1cmUgaXMKICAgICAvLyBjdXJyZW50bHkgYXZhaWxhYmxlIChlLmcuIGJv
dW5kcyBub3QgYmVpbmcgdHJhY2tlZCBwZXIgYmVsb3cpCiAgICAgc2VxdWVuY2U8YW55PiBzdXBw
b3J0ZWRGZWF0dXJlczsKKyAgICAKKyAgICAvLyBUaGUgbGlzdCBvZiBmZWF0dXJlcyB0aGF0IGFy
ZSBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgYW5kIGRvCisgICAgLy8gbm90IG5lZWQgZnVydGhlciBl
eHBsaWNpdCBjb25zZW50LgorICAgIHNlcXVlbmNlPGFueT4gZW5hYmxlZEZlYXR1cmVzOwogCiAg
ICAgLy8gVGhlIGJvdW5kcyBjb29yZGluYXRlcy4gSWYgZW1wdHksIG5vIGJvdW5kZWQgcmVmZXJl
bmNlIHNwYWNlIGlzIGN1cnJlbnRseSB0cmFja2VkLgogICAgIC8vIElmIG5vdCwgbXVzdCBoYXZl
IGF0IGxlYXN0IHRocmVlIGVsZW1lbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9TaGFy
ZWQvWFIvWFJEZXZpY2VQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmlj
ZVByb3h5LmNwcAppbmRleCA4MGYwODUzMjEwYzZkNGJjMjQyZGEzYWFlOGZkZTBiMGIxZDZmZjdl
Li4wZmE3NjBiOTJiODY3MmU0OTQ4N2M1NTgwNjdhZmYyZjNhZDNjODJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcApAQCAtNjgsOCArNjgsMjEgQEAgdm9pZCBY
UkRldmljZVByb3h5Ojppbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoUGxhdGZvcm1YUjo6
U2Vzc2lvbk1vZGUgc2Vzc2kKICAgICBpZiAoc2Vzc2lvbk1vZGUgIT0gUGxhdGZvcm1YUjo6U2Vz
c2lvbk1vZGU6OkltbWVyc2l2ZVZyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAobV94clN5
c3RlbSkKLSAgICAgICAgbV94clN5c3RlbS0+aW5pdGlhbGl6ZVRyYWNraW5nQW5kUmVuZGVyaW5n
KCk7CisgICAgaWYgKCFtX3hyU3lzdGVtKQorICAgICAgICByZXR1cm47CisKKyAgICBtX3hyU3lz
dGVtLT5pbml0aWFsaXplVHJhY2tpbmdBbmRSZW5kZXJpbmcoKTsKKworICAgIC8vIFRoaXMgaXMg
Y2FsbGVkIGZyb20gdGhlIGNvbnN0cnVjdG9yIG9mIFdlYlhSU2Vzc2lvbi4gU2luY2Ugc2Vzc2lv
bkRpZEluaXRpYWxpemVJbnB1dFNvdXJjZXMoKQorICAgIC8vIGVuZHMgdXAgY2FsbGluZyBxdWV1
ZVRhc2tLZWVwaW5nT2JqZWN0QWxpdmUoKSB3aGljaCByZWZzIHRoZSBXZWJYUlNlc3Npb24gb2Jq
ZWN0LCB3ZQorICAgIC8vIHNob3VsZCBkZWxheSB0aGlzIGNhbGwgYWZ0ZXIgdGhlIFdlYlhSU2Vz
c2lvbiBoYXMgZmluaXNoZWQgY29uc3RydWN0aW9uLgorICAgIGNhbGxPbk1haW5SdW5Mb29wKFt0
aGlzLCB3ZWFrVGhpcyA9IFdlYWtQdHIgeyAqdGhpcyB9XSgpIHsKKyAgICAgICAgaWYgKCF3ZWFr
VGhpcykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAodHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQoKSkKKyAgICAgICAgICAgIHRyYWNraW5nQW5kUmVuZGVyaW5nQ2xpZW50KCkt
PnNlc3Npb25EaWRJbml0aWFsaXplSW5wdXRTb3VyY2VzKHsgfSk7CisgICAgfSk7ICAgIAogfQog
CiB2b2lkIFhSRGV2aWNlUHJveHk6OnNodXREb3duVHJhY2tpbmdBbmRSZW5kZXJpbmcoKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDBlMTY0ZmVlOWM0MmNkYTAzYzlhOGM1MjlmNTEyNzI3MDZhYWE4MTMuLjc2NzAwMTY5OTg0
MTg5NzVhNTBiMGRmYjhiYjdkNjNjZTc3NzJmYmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0No
YW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAy
Mi0wNC0wNyAgQWRhIENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJd
IEltcGxlbWVudCB0aGUgV2ViWFIgSGFuZCBJbnB1dCBtb2R1bGUKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzODk2OAorCisgICAgICAgIFJldmlld2Vk
IGJ5IERlYW4gSmFja3Nvbi4KKworICAgICAgICBBZGQgbW9yZSBjb25zdGFudHMgZm9yIGEgdmFs
aWQgam9pbnQgdmFsdWUgYW5kIGRldmljZSBpbml0IGRpY3Rpb25hcnkKKyAgICAgICAgdGhhdCBy
ZXByZXNlbnRzIGEgZGV2aWNlIHdpdGggaGFuZCB0cmFja2luZyBzdXBwb3J0IGVuYWJsZWQuCisK
KyAgICAgICAgQWRkIG5ldyB0ZXN0cyBmb3IgdGVzdGluZyBoYW5kIGlucHV0IHJlbGF0ZWQgbWV0
aG9kcyBpbiBYUkZyYW1lLgorCisgICAgICAgICogaHR0cC93cHQvd2VieHIvcmVzb3VyY2VzL3dl
YnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzOgorICAgICAgICAqIGh0dHAvd3B0L3dl
YnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpLmh0bWw6IEFkZGVkLgorICAg
ICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWlfbWlzc2luZ19qb2lu
dF9wb3NlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2VieHIveHJG
cmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbDogQWRkZWQuCisgICAg
ICAgICogaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy5odG1sOiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pv
aW50X3Bvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94
ckZyYW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pvaW50X3Bvc2UuaHRtbDogQWRkZWQuCisgICAgICAg
ICogaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2UtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sOiBB
ZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNz
aW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93
ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbDogQWRkZWQu
CisgICAgICAgICogaHR0cC93cHQvd2VieHIveHJIYW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisg
ICAgICAgICogaHR0cC93cHQvd2VieHIveHJIYW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0
dHAvd3B0L3dlYnhyL3hySGFuZElucHV0X2djLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2lu
L1Rlc3RFeHBlY3RhdGlvbnM6IFNraXAgb3RoZXIgZm9sZGVycyB3aXRoIFdlYlhSIHRlc3RzCisK
IDIwMjItMDQtMDYgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgogCiAgICAgICAgIEZp
eCBleHBlY3RlZCwgYWN0dWFsIGxpbmtzIGZvciB2YXJpYW50LWJhc2VkIGltcG9ydGVkIHdwdCB0
ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIvcmVzb3VyY2VzL3dl
YnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzCmluZGV4
IGNiOGJkZmQ5OWYxYTBiMTIyMjFlODA0YTg1NDE1MDM2MGY2NzY2MzYuLmEwOWRjYzE0Mjg2YjE5
ZjEyYTk3NDQ0ZjM5NzJkZGE2N2YyODJhNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50c19zaW5nbGVfdmlldy5qcwor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9jb25z
dGFudHNfc2luZ2xlX3ZpZXcuanMKQEAgLTQ3LDYgKzQ3LDc0IEBAIGNvbnN0IFZBTElEX0dSSVBf
VFJBTlNGT1JNID0gewogICAgIG9yaWVudGF0aW9uOiBbMCwgMCwgMCwgMV0KIH07CiAKK2NvbnN0
IEpPSU5UX0NPVU5UID0gMjU7Citjb25zdCBURVNUX0hBTkRfSk9JTlRfUkFESVVTID0gMC4wMjsK
KworY29uc3QgVkFMSURfSEFORF9KT0lOVCA9IHsKKyAgICBwb3NlOiBWQUxJRF9QT1NFX1RSQU5T
Rk9STSwKKyAgICByYWRpdXM6IFRFU1RfSEFORF9KT0lOVF9SQURJVVMKK307CisKK2NvbnN0IFZB
TElEX0hBTkRfSk9JTlRTID0gWworICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFO
RF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisg
ICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hB
TkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAor
ICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9I
QU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwK
KyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURf
SEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQs
CisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElE
X0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5U
LAorICAgIFZBTElEX0hBTkRfSk9JTlQKK107CisKK2NvbnN0IElOVkFMSURfSEFORF9KT0lOVCA9
IHsKKworfTsKKworY29uc3QgSEFORF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCA9IFsKKyAgICBW
QUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9K
T0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAg
VkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRf
Sk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAg
IFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5E
X0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAg
ICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFO
RF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisg
ICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hB
TkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBJTlZBTElEX0hBTkRfSk9JTlQK
K107CisKIC8vIEEgdmFsaWQgaW5wdXQgcG9pbnRlciBvZmZzZXQgZm9yICB3aGVuIHdlIGRvbid0
IGNhcmUgYWJvdXQgc3BlY2lmaWMgdmFsdWVzCiBjb25zdCBWQUxJRF9QT0lOVEVSID0gWzEsIDAs
IDAsIDAsCiAgICAgICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDAsCkBAIC0xNjAsNiArMjI4
LDE3IEBAIGNvbnN0IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRSA9IHsKICAgICBpbnRlcmFjdGlv
bk1vZGU6ICJ3b3JsZC1zcGFjZSIKIH07CiAKK2NvbnN0IFRSQUNLRURfSU1NRVJTSVZFX0RFVklD
RV9XSVRIX0hBTkRfVFJBQ0tJTkcgPSB7CisgICAgc3VwcG9ydHNJbW1lcnNpdmU6IHRydWUsCisg
ICAgc3VwcG9ydGVkTW9kZXM6IFsgImlubGluZSIsICJpbW1lcnNpdmUtdnIiXSwKKyAgICB2aWV3
czogVkFMSURfVklFV1MsCisgICAgdmlld2VyT3JpZ2luOiBJREVOVElUWV9UUkFOU0ZPUk0sCisg
ICAgc3VwcG9ydGVkRmVhdHVyZXM6IEFMTF9GRUFUVVJFUywKKyAgICBlbmFibGVkRmVhdHVyZXM6
IFsgImhhbmQtdHJhY2tpbmciIF0sCisgICAgZW52aXJvbm1lbnRCbGVuZE1vZGU6ICJvcGFxdWUi
LAorICAgIGludGVyYWN0aW9uTW9kZTogIndvcmxkLXNwYWNlIgorfTsKKwogY29uc3QgVFJBQ0tF
RF9JTU1FUlNJVkVfREVWSUNFX05PX0hBTkRfVFJBQ0tJTkcgPSB7CiAgICAgc3VwcG9ydHNJbW1l
cnNpdmU6IHRydWUsCiAgICAgc3VwcG9ydGVkTW9kZXM6IFsgImlubGluZSIsICJpbW1lcnNpdmUt
dnIiXSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmls
bEpvaW50UmFkaWktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJG
cmFtZV9maWxsSm9pbnRSYWRpaS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAyYmIwMWJiZmRi
ZTc1NDM5OTY0OWI5YTk5N2QzM2NhMGQ0NWVlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWktZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSAtIHdlYmds
CitQQVNTIFRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSAtIHdlYmdsMgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpLmh0bWwg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzQ1YWEyNThjZGM2MjAwYzAxZjEzODZkNjAxNGE2ZGQ3MTM3YTE4YQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpv
aW50UmFkaWkuaHRtbApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIuLi8uLi93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3Njcmlw
dD4KKworPHNjcmlwdD4KK2xldCB0ZXN0TmFtZSA9ICJUZXN0IFhSRnJhbWUuZmlsbEpvaW50UmFk
aWkiOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJ
Q0VfV0lUSF9IQU5EX1RSQUNLSU5HOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vz
c2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0
IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VD
b25uZWN0aW9uKHsKKyAgICBoYW5kZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTog
InRyYWNrZWQtcG9pbnRlciIsCisgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFO
U0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdLAorICAgIGhhbmRKb2ludHM6IFZBTElEX0hBTkRfSk9J
TlRTLAorICB9KTsKKworICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xv
Y2FsJykKKyAgICAudGhlbigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZl
KSA9PiB7CisKKyAgICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAg
ICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDApOworICAg
ICAgICBsZXQgaGFuZCA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdLmhhbmQKKyAgICAgICAgYXNz
ZXJ0X25vdF9lcXVhbHMoaGFuZCwgbnVsbCk7CisKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhU
eXBlRXJyb3IsIGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgbGV0IHJhZGlpQXJyYXlXaXRoV3Jv
bmdTaXplID0gbmV3IEZsb2F0MzJBcnJheShKT0lOVF9DT1VOVCAtIDEpOworICAgICAgICAgICAg
eHJGcmFtZS5maWxsSm9pbnRSYWRpaShoYW5kLnZhbHVlcygpLCByYWRpaUFycmF5V2l0aFdyb25n
U2l6ZSk7CisgICAgICAgIH0pOworCisgICAgICAgIGxldCByYWRpaSA9IG5ldyBGbG9hdDMyQXJy
YXkoSk9JTlRfQ09VTlQpOworICAgICAgICBsZXQgYWxsVmFsaWQgPSB4ckZyYW1lLmZpbGxKb2lu
dFJhZGlpKGhhbmQudmFsdWVzKCksIHJhZGlpKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYWxsVmFs
aWQpOworICAgICAgICBmb3IgKHJhZGl1cyBvZiByYWRpaSkgeworICAgICAgICAgICAgYXNzZXJ0
X2FwcHJveF9lcXVhbHMocmFkaXVzLCBURVNUX0hBTkRfSk9JTlRfUkFESVVTLCBGTE9BVF9FUFNJ
TE9OKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICAgIHNl
c3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4cl9z
ZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmlj
ZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsiaGFuZC10
cmFja2luZyJdIH0pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVj
dGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFk
aWlfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzFmN2NkMzdj
NmRiY2E4NmY2YmY2YmY0MTJjMjQ5OTkxNTQ3YzU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50
X3Bvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5m
aWxsSm9pbnRSYWRpaSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSAt
IHdlYmdsCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSB3aGVyZSB0aGUgaGFuZCBo
YXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSAtIHdlYmdsMgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRf
cG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRS
YWRpaV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDkxNWVjODFiODkzYTVh
YzU3ZGNiZjVlYmM4Mjc2OGU0ZmZhYzk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2Uu
aHRtbApAQCAtMCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVz
b3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2Vz
L3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMv
d2VieHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rl
c3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8u
Li93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKworPHNj
cmlwdD4KK2xldCB0ZXN0TmFtZSA9ICJUZXN0IFhSRnJhbWUuZmlsbEpvaW50UmFkaWkgd2hlcmUg
dGhlIGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UiOworCitsZXQgZmFrZURldmljZUlu
aXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5HOwor
CitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xs
ZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZp
Y2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5kZWRu
ZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisgICAg
cG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtd
LAorICAgIGhhbmRKb2ludHM6IEhBTkRfSk9JTlRTX1dJVEhfT05FX0lOVkFMSUQsCisgIH0pOwor
CisgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50
aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKworICAg
ICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIGFzc2VydF9ub3Rf
ZXF1YWxzKHNlc3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5k
ID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFs
cyhoYW5kLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhoYW5kLnNpemUsIEpPSU5UX0NP
VU5UKTsKKworICAgICAgICBsZXQgcmFkaWkgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NPVU5U
KTsKKyAgICAgICAgbGV0IGFsbFZhbGlkID0geHJGcmFtZS5maWxsSm9pbnRSYWRpaShoYW5kLnZh
bHVlcygpLCByYWRpaSk7CisgICAgICAgIGFzc2VydF9mYWxzZShhbGxWYWxpZCk7CisgICAgICAg
IGZvciAocmFkaXVzIG9mIHJhZGlpKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJhZGl1
cywgTmFOKTsKKyAgICAgICAgfQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICAg
IHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4
cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURl
dmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsiaGFu
ZC10cmFja2luZyJdIH0pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNzEwMGIyOTA5Mjc0NzQ0NTdkZDgzOGRmYWU3NDQ1M2I2MmNkZjc2Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXMtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsUG9zZXMgLSB3
ZWJnbAorUEFTUyBUZXN0IFhSRnJhbWUuZmlsbFBvc2VzIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjM3N2IyMTI5MTc2ZTcwOTBlZmJjYTY2MmRhNGNkNWIzOGQyNGEyZDQKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy5odG1sCkBA
IC0wLDAgKzEsNTcgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91
dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25z
dGFudHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3dlYnhy
L3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0Pgor
bGV0IHRlc3ROYW1lID0gIlRlc3QgWFJGcmFtZS5maWxsUG9zZXMiOworCitsZXQgZmFrZURldmlj
ZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5H
OworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRy
b2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VE
ZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5k
ZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisg
ICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6
IFtdLAorICAgIGhhbmRKb2ludHM6IFZBTElEX0hBTkRfSk9JTlRTLAorICB9KTsKKworICByZXR1
cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhlbigocmVm
ZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1bmN0
aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhz
ZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9IHNlc3Np
b24uaW5wdXRTb3VyY2VzWzBdLmhhbmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZCwg
bnVsbCk7CisKKyAgICAgICAgY29uc3QgZmxvYXRzUGVyVHJhbnNmb3JtID0gMTY7CisgICAgICAg
IGFzc2VydF90aHJvd3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGxl
dCB0cmFuc2Zvcm1zQXJyYXlXaXRoV3JvbmdTaXplID0gbmV3IEZsb2F0MzJBcnJheShKT0lOVF9D
T1VOVCAqIGZsb2F0c1BlclRyYW5zZm9ybSAtIDEpOworICAgICAgICAgICAgeHJGcmFtZS5maWxs
UG9zZXMoaGFuZC52YWx1ZXMoKSwgdHJhbnNmb3Jtc0FycmF5V2l0aFdyb25nU2l6ZSk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGxldCB0cmFuc2Zvcm1zID0gbmV3IEZsb2F0MzJBcnJheShKT0lO
VF9DT1VOVCAqIGZsb2F0c1BlclRyYW5zZm9ybSk7CisgICAgICAgIGxldCBhbGxWYWxpZCA9IHhy
RnJhbWUuZmlsbFBvc2VzKGhhbmQudmFsdWVzKCksIHJlZmVyZW5jZVNwYWNlLCB0cmFuc2Zvcm1z
KTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYWxsVmFsaWQpOworICAgICAgICAKKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBKT0lOVF9DT1VOVDsgKytpKSB7CisgICAgICAgICAgICBsZXQgdHJh
bnNmb3JtU3RhcnRJbmRleCA9IGkgKiBmbG9hdHNQZXJUcmFuc2Zvcm07CisgICAgICAgICAgICBm
b3IgKHZhciBqID0gMDsgaiA8IGZsb2F0c1BlclRyYW5zZm9ybTsgKytqKSB7CisgICAgICAgICAg
ICAgICAgYXNzZXJ0X2FwcHJveF9lcXVhbHModHJhbnNmb3Jtc1t0cmFuc2Zvcm1TdGFydEluZGV4
ICsgal0sIFZBTElEX1BPU0VfTUFUUklYW2pdLCBGTE9BVF9FUFNJTE9OKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICAgIHNlc3Np
b24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4cl9zZXNz
aW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUlu
aXRQYXJhbXMsICdpbW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsiaGFuZC10cmFj
a2luZyJdIH0pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pv
aW50X3Bvc2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0Mjk0NDg3NGY4NjVjZDQ2MWZiZmM1
YjhjMWJjYzI3ZDQxNDg0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsUG9zZXMgd2hlcmUgdGhl
IGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UgLSB3ZWJnbAorUEFTUyBUZXN0IFhSRnJh
bWUuZmlsbFBvc2VzIHdoZXJlIHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBwb3NlIC0g
d2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVf
ZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VieHIveHJGcmFtZV9maWxsUG9zZXNfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNTNlNzU4ZTAxOGFkM2YyNGQzYThiOTJhN2YxMTZkMjUwMzRmNGE2NwotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Np
bmdfam9pbnRfcG9zZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNv
dXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9Ii4uLy4uL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwv
c2NyaXB0PgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIlRlc3QgWFJGcmFtZS5maWxsUG9z
ZXMgd2hlcmUgdGhlIGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UiOworCitsZXQgZmFr
ZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RS
QUNLSU5HOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmlj
ZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9
IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAg
ICBoYW5kZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRl
ciIsCisgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJv
ZmlsZXM6IFtdLAorICAgIGhhbmRKb2ludHM6IEhBTkRfSk9JTlRTX1dJVEhfT05FX0lOVkFMSUQs
CisgIH0pOworCisgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwn
KQorICAgIC50aGVuKChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+
IHsKKworICAgICAgZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIGFz
c2VydF9ub3RfZXF1YWxzKHNlc3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7CisgICAgICAg
IGxldCBoYW5kID0gc2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBhc3NlcnRf
bm90X2VxdWFscyhoYW5kLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhoYW5kLnNpemUs
IEpPSU5UX0NPVU5UKTsKKworICAgICAgICBjb25zdCBmbG9hdHNQZXJUcmFuc2Zvcm0gPSAxNjsK
KyAgICAgICAgbGV0IHRyYW5zZm9ybXMgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NPVU5UICog
ZmxvYXRzUGVyVHJhbnNmb3JtKTsKKyAgICAgICAgbGV0IGFsbFZhbGlkID0geHJGcmFtZS5maWxs
UG9zZXMoaGFuZC52YWx1ZXMoKSwgcmVmZXJlbmNlU3BhY2UsIHRyYW5zZm9ybXMpOworICAgICAg
ICBhc3NlcnRfZmFsc2UoYWxsVmFsaWQpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBKT0lOVF9DT1VOVCAqIGZsb2F0c1BlclRyYW5zZm9ybTsgKytpKSB7CisgICAgICAg
ICAgICBhc3NlcnRfZXF1YWxzKHRyYW5zZm9ybXNbaV0sIE5hTik7CisgICAgICAgIH0KKworICAg
ICAgICByZXNvbHZlKCk7CisgICAgICB9CisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25G
cmFtZShvbkZyYW1lKTsKKyAgfSkpOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisg
IHRlc3ROYW1lLCB0ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZl
LXZyJywgeyBvcHRpb25hbEZlYXR1cmVzOiBbImhhbmQtdHJhY2tpbmciXSB9KTsKKworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpv
aW50UG9zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1l
X2dldEpvaW50UG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkyNGYwNTFmMjllYTUwNzY2
ZTk5ZDRhZDM1NWNjMGJjM2NmZWM2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDQgQEAKKworUEFTUyBUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIC0gd2ViZ2wKK1BBU1MgVGVz
dCBYUkZyYW1lLmdldEpvaW50UG9zZSAtIHdlYmdsMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDc4
ZDhmZmQ2MTIzMzE5NTA5ZWY4MWIzZWQ4Njk1MjIyZGI5Mjk5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2UuaHRtbApAQCAt
MCwwICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRp
bC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3Rh
bnRzX3NpbmdsZV92aWV3LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi93ZWJ4ci9y
ZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4KK2xl
dCB0ZXN0TmFtZSA9ICJUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIjsKKworbGV0IGZha2VEZXZp
Y2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFX1dJVEhfSEFORF9UUkFDS0lO
RzsKKworbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VEZXZpY2VDb250
cm9sbGVyLCB0LCBzZXNzaW9uT2JqZWN0cykgeworCisgIGxldCBpbnB1dF9zb3VyY2UgPSBmYWtl
RGV2aWNlQ29udHJvbGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbih7CisgICAgaGFu
ZGVkbmVzczogIm5vbmUiLAorICAgIHRhcmdldFJheU1vZGU6ICJ0cmFja2VkLXBvaW50ZXIiLAor
ICAgIHBvaW50ZXJPcmlnaW46IFZBTElEX1BPSU5URVJfVFJBTlNGT1JNLAorICAgIHByb2ZpbGVz
OiBbXSwKKyAgICBoYW5kSm9pbnRzOiBWQUxJRF9IQU5EX0pPSU5UUywKKyAgfSk7CisKKyAgcmV0
dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRoZW4oKHJl
ZmVyZW5jZVNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAgICBmdW5j
dGlvbiBvbkZyYW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMo
c2Vzc2lvbi5pbnB1dFNvdXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQgPSBzZXNz
aW9uLmlucHV0U291cmNlc1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGhhbmQs
IG51bGwpOworICAgICAgICAKKyAgICAgICAgbGV0IGpvaW50U3BhY2UgPSBoYW5kLmdldCgid3Jp
c3QiKTsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoam9pbnRTcGFjZSwgbnVsbCk7CisgICAg
ICAgIAorICAgICAgICBsZXQgam9pbnRQb3NlID0geHJGcmFtZS5nZXRKb2ludFBvc2Uoam9pbnRT
cGFjZSwgcmVmZXJlbmNlU3BhY2UpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhqb2ludFBv
c2UsIG51bGwpOworICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhqb2ludFBvc2UucmFkaXVz
LCBURVNUX0hBTkRfSk9JTlRfUkFESVVTLCBGTE9BVF9FUFNJTE9OKTsKKyAgICAgICAgYXNzZXJ0
X21hdHJpeF9hcHByb3hfZXF1YWxzKGpvaW50UG9zZS50cmFuc2Zvcm0ubWF0cml4LCBWQUxJRF9Q
T1NFX01BVFJJWCwgRkxPQVRfRVBTSUxPTik7CisKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAg
fQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7CisgIH0pKTsK
K307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9u
LCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJl
czogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2ludF9w
b3NlLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0
Sm9pbnRQb3NlX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE5
ZDc5YjAzYTNlNjg5NzQ4ZWVjZDViZDdiZDA1NTJjYTc2OWVmNgotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21pc3Npbmdf
am9pbnRfcG9zZS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCBYUkZy
YW1lLmdldEpvaW50UG9zZSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQgcG9z
ZSAtIHdlYmdsCitQQVNTIFRlc3QgWFJGcmFtZS5nZXRKb2ludFBvc2Ugd2hlcmUgdGhlIGhhbmQg
aGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2ludF9w
b3NlLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9z
ZV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzNlMWIxZWI5NjI0NmNjMGMz
Nzc4ZjVlNzc2YWQ5NmJlOGUxODM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0
cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwK
QEAgLTAsMCArMSw0OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhy
X3V0aWwuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2Nv
bnN0YW50c19zaW5nbGVfdmlldy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vd2Vi
eHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+
CitsZXQgdGVzdE5hbWUgPSAiVGVzdCBYUkZyYW1lLmdldEpvaW50UG9zZSB3aGVyZSB0aGUgaGFu
ZCBoYXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFt
cyA9IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0
ZXN0RnVuY3Rpb24gPSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwg
c2Vzc2lvbk9iamVjdHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRy
b2xsZXIuc2ltdWxhdGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJu
b25lIiwKKyAgICB0YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVy
T3JpZ2luOiBWQUxJRF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAg
aGFuZEpvaW50czogSEFORF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCwKKyAgfSk7CisKKyAgcmV0
dXJuIHNlc3Npb24ucmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRoZW4oKHJl
ZmVyZW5jZVNwYWNlKSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAgICBmdW5j
dGlvbiBvbkZyYW1lKHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMo
c2Vzc2lvbi5pbnB1dFNvdXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQgPSBzZXNz
aW9uLmlucHV0U291cmNlc1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGhhbmQs
IG51bGwpOworICAgICAgICBhc3NlcnRfZXF1YWxzKGhhbmQuc2l6ZSwgSk9JTlRfQ09VTlQpOwor
CisgICAgICAgIGxldCB3cmlzdEpvaW50U3BhY2UgPSBoYW5kLmdldCgid3Jpc3QiKTsKKyAgICAg
ICAgYXNzZXJ0X25vdF9lcXVhbHMod3Jpc3RKb2ludFNwYWNlLCBudWxsKTsKKyAgICAgICAgYXNz
ZXJ0X2VxdWFscyh4ckZyYW1lLmdldEpvaW50UG9zZSh3cmlzdEpvaW50U3BhY2UsIHJlZmVyZW5j
ZVNwYWNlKSwgbnVsbCk7CisKKyAgICAgICAgbGV0IHBpbmt5VGlwSm9pbnRTcGFjZSA9IGhhbmQu
Z2V0KCJwaW5reS1maW5nZXItdGlwIik7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHBpbmt5
VGlwSm9pbnRTcGFjZSwgbnVsbCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoeHJGcmFtZS5nZXRK
b2ludFBvc2UocGlua3lUaXBKb2ludFNwYWNlLCByZWZlcmVuY2VTcGFjZSksIG51bGwpOworCisg
ICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlv
bkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgK
KyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNp
dmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsiaGFuZC10cmFja2luZyJdIH0pOworCis8L3Nj
cmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZC1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmQtZXhwZWN0ZWQudHh0
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjNkNWEwZjI0MDY1ZTk2NTU1OTNkYThlYjZiMTJmOGUwN2RiNGQ3NzEKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmQtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgdGhlIFhSSGFuZCBBUEkgLSB3ZWJn
bAorUEFTUyBUZXN0IHRoZSBYUkhhbmQgQVBJIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
d2VieHIveHJIYW5kLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWJmMzYyNmU0Yjc2NjZlNjM1MTU1YzM0NWUx
MzhhOTdlZTAwNThiNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YnhyL3hySGFuZC5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJj
ZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorCis8c2Ny
aXB0PgorbGV0IHRlc3ROYW1lID0gIlRlc3QgdGhlIFhSSGFuZCBBUEkiOworCitsZXQgZmFrZURl
dmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNL
SU5HOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNv
bnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZh
a2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBo
YW5kZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIs
CisgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmls
ZXM6IFtdLAorICAgIGhhbmRKb2ludHM6IFZBTElEX0hBTkRfSk9JTlRTLAorICB9KTsKKworICBy
ZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhlbigo
cmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1
bmN0aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2VxdWFs
cyhzZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9IHNl
c3Npb24uaW5wdXRTb3VyY2VzWzBdLmhhbmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFu
ZCwgbnVsbCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoaGFuZC5zaXplLCAyNSk7CisgICAgICAg
IAorICAgICAgICBsZXQgd3Jpc3RKb2ludFNwYWNlID0gaGFuZC5nZXQoIndyaXN0Iik7CisgICAg
ICAgIGFzc2VydF9lcXVhbHMod3Jpc3RKb2ludFNwYWNlLmpvaW50TmFtZSwgIndyaXN0Iik7CisK
KyAgICAgICAgdmFyIGNvdW50ID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBbam9pbnROYW1lLCBq
b2ludFNwYWNlXSBvZiBoYW5kKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGpvaW50U3Bh
Y2Uuam9pbnROYW1lLCBqb2ludE5hbWUpOworICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAg
fQorICAgICAgICBhc3NlcnRfZXF1YWxzKGNvdW50LCAyNSk7CisKKyAgICAgICAgcmVzb2x2ZSgp
OworICAgICAgfQorICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7
CisgIH0pKTsKK307CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVz
dEZ1bmN0aW9uLCBmYWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgb3B0aW9u
YWxGZWF0dXJlczogWyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5kSW5wdXRfZ2MuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZElucHV0X2djLmh0bWwKaW5kZXggNzcyODJmNmY0
MTY2Mzg4NTM4MjE5YzE0NDY1NmYwYzA5YjZlZGYwZS4uYjU2MTU5NDdjNWQwYmJmMTkyOWUwZGNl
MTRjMDlkN2Q0NDE3YzllOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIv
eHJIYW5kSW5wdXRfZ2MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhh
bmRJbnB1dF9nYy5odG1sCkBAIC0xNyw3ICsxNyw3IEBAIGZ1bmN0aW9uIGdjKCkKIAogbGV0IHRl
c3ROYW1lID0gIlRlc3Qgb2JqZWN0IGxpZmV0aW1lIG9mIEhhbmQgSW5wdXQgbW9kdWxlIjsKIAot
bGV0IGZha2VEZXZpY2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfU0lOR0xFX1ZJRVdE
RVZJQ0U7CitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJ
Q0VfV0lUSF9IQU5EX1RSQUNLSU5HOwogCiBsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vz
c2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CiAKQEAgLTI2
LDcgKzI2LDcgQEAgbGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VEZXZp
Y2VDb250cm9sbGVyLCB0LCBzZXNzaW9uT2JqZWN0cykgewogICAgIHRhcmdldFJheU1vZGU6ICJ0
cmFja2VkLXBvaW50ZXIiLAogICAgIHBvaW50ZXJPcmlnaW46IFZBTElEX1BPSU5URVJfVFJBTlNG
T1JNLAogICAgIHByb2ZpbGVzOiBbXSwKLSAgICBzaW11bGF0ZUhhbmQ6IHRydWUsCisgICAgaGFu
ZEpvaW50czogVkFMSURfSEFORF9KT0lOVFMsCiAgIH0pOwogCiAgIHJldHVybiBzZXNzaW9uLnJl
cXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vd2luL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVz
dEV4cGVjdGF0aW9ucwppbmRleCBhMzhjNGRiNGJhN2RkMzJkNmE0MTkyYjkyMDRjZTk2YTY3ZGVh
ZGYyLi5hZTFjNWMzMTlkNmVmOWI3N2I2MGI1Y2UxNjA1ZmYwODU4ZThkMzQ2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDkwMCw2ICs0OTAwLDggQEAg
c3RvcmFnZS9pbmRleGVkZGIvc3RydWN0dXJlZC1jbG9uZS1pbWFnZS1kYXRhLWRpc3BsYXktcDMu
aHRtbCBbIFNraXAgXQogCiAjIFdlYlhSIGlzIG5vdCBlbmFibGVkIG9uIHdpbmRvd3MuCiB3ZWJ4
ciBbIFNraXAgXQoraW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ciBbIFNraXAg
XQoraHR0cC93cHQvd2VieHIgWyBTa2lwIF0KIAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjI2OTcwCiBmYXN0L2Nzcy9wYXJzZS1ib3JkZXItaW1hZ2UtcmVwZWF0
LW51bGwtY3Jhc2guaHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>457345</attachid>
            <date>2022-04-12 10:50:57 -0700</date>
            <delta_ts>2022-04-12 11:53:43 -0700</delta_ts>
            <desc>Patch for landing 5</desc>
            <filename>bug-238968-20220412105056.patch</filename>
            <type>text/plain</type>
            <size>82667</size>
            <attacher name="Ada Chan">adachan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkyNTA5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzExZTBmZTlmZTRkYTBi
MjNlZWE2M2U5NGIyNzc2Y2U0YWYwMjE5YS4uZDFmMzdjYjIzNzM5ZTQzOGVhNDA0ODI0ZWMxOWUw
ODQyMjJjNDMyYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEwNiBAQAorMjAyMi0wNC0wNyAgQWRh
IENoYW4gIDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIEltcGxlbWVudCB0
aGUgV2ViWFJGcmFtZSBtZXRob2RzIGZvciBnZXR0aW5nIGpvaW50cycgcG9zZXMgYW5kIHJhZGlp
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5NjgK
KworICAgICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgVGVzdHM6IGh0
dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRtbAorICAgICAgICAgICAgICAg
aHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2Uu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXMuaHRt
bAorICAgICAgICAgICAgICAgaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXNfbWlzc2lu
Z19qb2ludF9wb3NlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVf
Z2V0Sm9pbnRQb3NlLmh0bWwKKyAgICAgICAgICAgICAgIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVf
Z2V0Sm9pbnRQb3NlX21pc3Npbmdfam9pbnRfcG9zZS5odG1sCisgICAgICAgICAgICAgICBodHRw
L3dwdC93ZWJ4ci94ckhhbmQuaHRtbAorCisgICAgICAgIC0gSW1wbGVtZW50IHRoZSBtZXRob2Rz
IGluIFdlYlhSRnJhbWUgZm9yIGdldHRpbmcgam9pbnRzJyBwb3NlcyBhbmQgcmFkaWkuCisgICAg
ICAgIC0gQWRkIGEgbmV3IElucHV0U291cmNlSGFuZEpvaW50IHN0cnVjdCB0byByZXByZXNlbnQg
am9pbnQgZGF0YSwgYW5kIGFkZAorICAgICAgICBhIHZlY3RvciBvZiBJbnB1dFNvdXJjZUhhbmRK
b2ludCBpbiBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UKKyAgICAg
ICAgdG8gcmVwcmVzZW50IHRoZSBqb2ludHMgZGF0YS4KKyAgICAgICAgLSBJbXBsZW1lbnQgbG9n
aWMgZm9yIG1hbmFnaW5nIGEgdmVjdG9yIG9mIFdlYlhSSm9pbnRTcGFjZXMgaW4gV2ViWFJIYW5k
IGFuZAorICAgICAgICB1cGRhdGluZyBpdCB3aXRoIG5ldyBoYW5kIGpvaW50cyBkYXRhIGZyb20g
UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlLgorCisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAg
ICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJGcmFtZStIYW5kSW5wdXQuaWRsOgorICAgICAgICAq
IE1vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZy
YW1lOjpwb3B1bGF0ZVBvc2UpOgorICAgICAgICBUaGVyZSBhcmUgdmFsaWQgY2FzZXMgd2hlbiB0
aGUgV2ViWFJTcGFjZSdzIGVmZmVjdGl2ZSBvcmlnaW4gY2FuIGJlIG51bGwsCisgICAgICAgIGZv
ciBleGFtcGxlLCBhIGpvaW50IHBvc2UgZnJvbSBhIGhhbmQgdGhhdCBoYXMgb3RoZXIgbWlzc2lu
ZyBqb2ludCBwb3Nlcy4KKyAgICAgICAgSnVzdCByZXR1cm4gbnVsbCBhbmQgbm90IHRocm93IGFu
IGV4Y2VwdGlvbiBpbiB0aGF0IGNhc2UuIAorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6
Z2V0Sm9pbnRQb3NlKToKKyAgICAgICAgUG9wdWxhdGUgdGhlIGpvaW50J3MgcG9zZSwgYW5kIGNy
ZWF0ZSBhIFdlYlhSSm9pbnRQb3NlIHdpdGggdGhlIHBvc2UncyAKKyAgICAgICAgdHJhbnNmb3Jt
IGFuZCB0aGUgam9pbnQncyByYWRpdXMuCisgICAgICAgIChXZWJDb3JlOjpXZWJYUkZyYW1lOjpm
aWxsSm9pbnRSYWRpaSk6CisgICAgICAgIFZhbGlkYXRlIHRoZSBpbnB1dHMgYW5kIGZpbGwgaW4g
dGhlIHJhZGlpIGFycmF5LiBGaWxsIGluIHdpdGggTmFOCisgICAgICAgIGlmIHRoZSBoYW5kIGhh
cyBtaXNzaW5nIGpvaW50IHBvc2VzLgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJGcmFtZTo6Zmls
bFBvc2VzKToKKyAgICAgICAgVmFsaWRhdGUgdGhlIGlucHV0cyBhbmQgZmlsbCBpbiB0aGUgdHJh
bnNmb3JtcyBhcnJheS4gRmlsbCBpbiB3aXRoIE5hTgorICAgICAgICBpZiB0aGUgaGFuZCBoYXMg
bWlzc2luZyBqb2ludCBwb3Nlcy4KKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUu
aDoKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpXZWJYUkhhbmQ6OldlYlhSSGFuZCk6CisgICAgICAgIEluaXRpYWxpemUgdGhlIG1fam9p
bnRzIGFycmF5LgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5kOjpnZXQpOgorICAgICAgICAo
V2ViQ29yZTo6V2ViWFJIYW5kOjpJdGVyYXRvcjo6bmV4dCk6CisgICAgICAgIChXZWJDb3JlOjpX
ZWJYUkhhbmQ6OnNlc3Npb24pOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJIYW5kOjp1cGRhdGVG
cm9tSW5wdXRTb3VyY2UpOgorICAgICAgICBVcGRhdGUgbV9qb2ludHMgYXJyYXkgYmFzZWQgb24g
dGhlIGxhdGVzdCBoYW5kcyBkYXRhIGZyb20gSW5wdXRTb3VyY2UuCisgICAgICAgICogTW9kdWxl
cy93ZWJ4ci9XZWJYUkhhbmQuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSGFuZDo6c2l6ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkhhbmQ6Omhhc01pc3NpbmdQb3NlcyBjb25zdCk6Cisg
ICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUklucHV0U291cmNlLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OldlYlhSSW5wdXRTb3VyY2U6OnVwZGF0ZSk6CisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUkpvaW50UG9zZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkpvaW50UG9zZTo6
Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSm9pbnRQb3NlOjpXZWJYUkpvaW50UG9z
ZSk6CisgICAgICAgIEhhbmRsZSBqb2ludCByYWRpdXMuCisgICAgICAgICogTW9kdWxlcy93ZWJ4
ci9XZWJYUkpvaW50UG9zZS5oOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBv
c2UuaWRsOgorICAgICAgICAqIE1vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OldlYlhSSm9pbnRTcGFjZTo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYlhSSm9pbnRTcGFjZTo6V2ViWFJKb2ludFNwYWNlKToKKyAgICAgICAgSGFuZGxlIGpv
aW50IG5hbWUgYW5kIHRoZSBhY3R1YWwgcG9zZSBkYXRhLiBLZWVwIGEgd2VhayBwdHIgdG8gdGhl
IFdlYlhSSGFuZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSm9pbnRTcGFjZTo6dXBkYXRlRnJv
bUpvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSm9pbnRTcGFjZTo6aGFuZEhhc01pc3Np
bmdQb3NlcyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUkpvaW50U3BhY2U6OnNlc3Np
b24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6V2ViWFJKb2ludFNwYWNlOjpuYXRpdmVPcmln
aW4gY29uc3QpOgorICAgICAgICBSZXR1cm4gbnVsbCBwb3NlIHRyYW5zZm9ybXMgaWYgdGhlcmUg
YXJlIG1pc3Npbmcgam9pbnQgcG9zZXMuCisgICAgICAgICogTW9kdWxlcy93ZWJ4ci9XZWJYUkpv
aW50U3BhY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSm9pbnRTcGFjZTo6am9pbnROYW1l
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OldlYlhSSm9pbnRTcGFjZTo6cmFkaXVzIGNvbnN0
KToKKyAgICAgICAgKiBNb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFjZS5pZGw6CisgICAgICAg
ICogTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
WFJTZXNzaW9uOjppc0hhbmRUcmFja2luZ0VuYWJsZWQgY29uc3QpOgorICAgICAgICAqIE1vZHVs
ZXMvd2VieHIvV2ViWFJTZXNzaW9uLmg6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qOgorICAgICAgICAqIHBsYXRmb3JtL3hyL1BsYXRmb3JtWFIuaDoKKyAgICAg
ICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZUhhbmRKb2ludDo6
ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJ
bnB1dFNvdXJjZUhhbmRKb2ludDo6ZGVjb2RlKToKKyAgICAgICAgKFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZTo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFBsYXRm
b3JtWFI6OkRldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZTo6ZGVjb2RlKToKKyAgICAgICAg
KiB0ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5oOgorICAgICAgICAqIHRlc3RpbmcvRmFr
ZVhSSW5wdXRTb3VyY2VJbml0LmlkbDoKKyAgICAgICAgQWxsb3cgdGVzdCBJbnB1dFNvdXJjZSB0
byBiZSBjcmVhdGVkIHdpdGggYW4gYXJyYXkgb2Ygam9pbnRzLgorICAgICAgICAqIHRlc3Rpbmcv
RmFrZVhSSm9pbnRTdGF0ZUluaXQuaDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvTW9kdWxl
cy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5pZGwuCisgICAgICAgICogdGVzdGluZy9GYWtlWFJKb2lu
dFN0YXRlSW5pdC5pZGw6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJKb2ludFBvc2UuaWRsLgorICAgICAgICBEZWZpbmUgaW5pdCBkaWN0aW9uYXJ5IGZvciBq
b2ludCBkYXRhLgorICAgICAgICAqIHRlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUklucHV0Q29udHJvbGxlcjo6V2ViRmFrZVhS
SW5wdXRDb250cm9sbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUklucHV0Q29udHJv
bGxlcjo6Z2V0RnJhbWVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkZha2VYUklucHV0Q29u
dHJvbGxlcjo6dXBkYXRlSGFuZEpvaW50cyk6CisgICAgICAgIFVwZGF0ZSBtX2hhbmRKb2ludHMg
YmFzZWQgb24gam9pbnQgaW5pdCBkaWN0aW9uYXJpZXMuCisgICAgICAgICogdGVzdGluZy9XZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiB0ZXN0aW5nL1dlYkZha2VYUklucHV0
Q29udHJvbGxlci5pZGw6CisgICAgICAgICogdGVzdGluZy9XZWJYUlRlc3QuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cGFyc2VGZWF0dXJlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJYUlRlc3Q6
OnNpbXVsYXRlRGV2aWNlQ29ubmVjdGlvbik6CisgICAgICAgIEFsbG93IHRlc3QgZGV2aWNlIHRv
IHNwZWNpZnkgYSBsaXN0IG9mIGVuYWJsZWQgZmVhdHVyZXMgdGhhdCBkb24ndCBuZWVkCisgICAg
ICAgIGZ1cnRoZXIgZXhwbGljaXQgY29uc2VudC4KKyAgICAgICAgKiB0ZXN0aW5nL1dlYlhSVGVz
dC5oOgorICAgICAgICAqIHRlc3RpbmcvV2ViWFJUZXN0LmlkbDoKKwogMjAyMi0wNC0wNiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCiAgICAgICAgIERyb3AgdW5uZWNlc3Nhcnkg
RXhjZXB0aW9uT3I8PiByZXR1cm4gdHlwZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggMTkyNmIxNTUzM2RhMzBiY2Y0
Nzc5MzAzNDc1YWFjYTg4NDgzNDg2Ny4uNTlhYTk5ZGE5Yjg4MzM1MTA0ZjBhYjljZWRiYmI4MmQ4
Mjc2MGY4YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wNC0wNyAgQWRhIENoYW4g
IDxhZGFjaGFuQGFwcGxlLmNvbT4KKworICAgICAgICBbV2ViWFJdIEltcGxlbWVudCB0aGUgV2Vi
WFJGcmFtZSBtZXRob2RzIGZvciBnZXR0aW5nIGpvaW50cycgcG9zZXMgYW5kIHJhZGlpCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzg5NjgKKworICAg
ICAgICBSZXZpZXdlZCBieSBEZWFuIEphY2tzb24uCisKKyAgICAgICAgKiBTaGFyZWQvWFIvWFJE
ZXZpY2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OlhSRGV2aWNlUHJveHk6OmluaXRpYWxp
emVUcmFja2luZ0FuZFJlbmRlcmluZyk6CisgICAgICAgIEluaXRpYWxpemUgaW5wdXQgc291cmNl
cyBvbiBzZXNzaW9uIHN0YXJ0LgorCiAyMDIyLTA0LTA2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBh
cHBsZS5jb20+CiAKICAgICAgICAgSW1wcm92ZSBBUEk6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6
ZGVzZXJpYWxpemUgdG8gbm90IGFsbG9jYXRlIGEgbmV3IEpTQ29udGV4dCBldmVyeSBzZWNvbmQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4
IDA4MzEwNTE2YWY2MjUzMjg4NDgyZDFmNTFjMmRkNzMyOTc0NzExYWIuLjM5N2M2YmIwOGIxNmQz
MWZlZjFhMjhiMjk3NWRhMjYxN2QxMzRmNmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0Rl
cml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTYyMiw2ICsxNjIyLDcgQEAgJChQUk9KRUNU
X0RJUikvc3ZnL3hsaW5rYXR0cnMuaW4KICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvRmFrZVhSQm91
bmRzUG9pbnQuaWRsCiAkKFBST0pFQ1RfRElSKS90ZXN0aW5nL0Zha2VYUkJ1dHRvblN0YXRlSW5p
dC5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0LmlkbAor
JChQUk9KRUNUX0RJUikvdGVzdGluZy9GYWtlWFJKb2ludFN0YXRlSW5pdC5pZGwKICQoUFJPSkVD
VF9ESVIpL3Rlc3RpbmcvRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmlkbAogJChQUk9KRUNUX0RJ
UikvdGVzdGluZy9GYWtlWFJWaWV3SW5pdC5pZGwKICQoUFJPSkVDVF9ESVIpL3Rlc3RpbmcvR0NP
YnNlcnZhdGlvbi5pZGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
LW91dHB1dC54Y2ZpbGVsaXN0IGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0
LnhjZmlsZWxpc3QKaW5kZXggODg3Yzc2NTllN2Y4NjQzNmNkMDJkZDg0OTNiZDkzOTE2NTJmY2Jj
Ni4uYTNkNjhhZGZlMTMxYzQ4N2M3OWNjNGMyYWYxYzhhODZlNzA4MTJiOSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291
cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKQEAgLTgzNSw2ICs4
MzUsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zh
a2VYUkJ1dHRvblN0YXRlSW5pdC5jcHAKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9XZWJDb3JlL0pTRmFrZVhSQnV0dG9uU3RhdGVJbml0LmgKICQoQlVJTFRfUFJPRFVDVFNf
RElSKS9EZXJpdmVkU291cmNlcy9XZWJDb3JlL0pTRmFrZVhSSW5wdXRTb3VyY2VJbml0LmNwcAog
JChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJJbnB1
dFNvdXJjZUluaXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNv
cmUvSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHAKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJp
dmVkU291cmNlcy9XZWJDb3JlL0pTRmFrZVhSSm9pbnRTdGF0ZUluaXQuaAogJChCVUlMVF9QUk9E
VUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL1dlYkNvcmUvSlNGYWtlWFJSaWdpZFRyYW5zZm9ybUlu
aXQuY3BwCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvV2ViQ29yZS9KU0Zh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvV2ViQ29yZS9KU0Zha2VYUlZpZXdJbml0LmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggNzFhOGNlNzA4NmZhNzlkYWE4Yjc1MTMxNWJmNDNhNDQzYTYxOWFmYi4uZDY2
M2MzMjM2ODRkMWMwZjg4MGZiN2NmOTYxZmM2ZmE0MjE2ZTQ2YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVk
U291cmNlcy5tYWtlCkBAIC0xNDYyLDYgKzE0NjIsNyBAQCBKU19CSU5ESU5HX0lETFMgOj0gXAog
ICAgICQoV2ViQ29yZSkvdGVzdGluZy9GYWtlWFJCb3VuZHNQb2ludC5pZGwgXAogICAgICQoV2Vi
Q29yZSkvdGVzdGluZy9GYWtlWFJCdXR0b25TdGF0ZUluaXQuaWRsIFwKICAgICAkKFdlYkNvcmUp
L3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0LmlkbCBcCisgICAgJChXZWJDb3JlKS90ZXN0
aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0LmlkbCBcCiAgICAgJChXZWJDb3JlKS90ZXN0aW5nL0Zh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9GYWtl
WFJWaWV3SW5pdC5pZGwgXAogICAgICQoV2ViQ29yZSkvdGVzdGluZy9XZWJGYWtlWFJEZXZpY2Uu
aWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFt
ZStIYW5kSW5wdXQuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1l
K0hhbmRJbnB1dC5pZGwKaW5kZXggNDdhM2JmYmU1YTZhOGExMWU1MGViZjJlNmYwZTk2NGRiNThh
N2FhYS4uMGI2ODQzY2I5ZTBjNTg1YmQ0MDVjM2NiZDQ1ZDE3MTgxZjM5MTk5MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lK0hhbmRJbnB1dC5pZGwK
KysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lK0hhbmRJbnB1dC5p
ZGwKQEAgLTI4LDcgKzI4LDcgQEAKICAgICBDb25kaXRpb25hbD1XRUJYUl9IQU5EUywKICAgICBF
bmFibGVkQnlTZXR0aW5nPVdlYlhSRW5hYmxlZCZXZWJYUkhhbmRJbnB1dE1vZHVsZUVuYWJsZWQs
CiBdIHBhcnRpYWwgaW50ZXJmYWNlIFdlYlhSRnJhbWUgewotICAgIFdlYlhSSm9pbnRQb3NlPyBn
ZXRKb2ludFBvc2UoV2ViWFJKb2ludFNwYWNlIGpvaW50LCBXZWJYUlNwYWNlIGJhc2VTcGFjZSk7
CisgICAgW0NhbGxXaXRoPUN1cnJlbnREb2N1bWVudF0gV2ViWFJKb2ludFBvc2U/IGdldEpvaW50
UG9zZShXZWJYUkpvaW50U3BhY2Ugam9pbnQsIFdlYlhSU3BhY2UgYmFzZVNwYWNlKTsKICAgICBi
b29sZWFuIGZpbGxKb2ludFJhZGlpKHNlcXVlbmNlPFdlYlhSSm9pbnRTcGFjZT4gam9pbnRTcGFj
ZXMsIEZsb2F0MzJBcnJheSByYWRpaSk7Ci0gICAgYm9vbGVhbiBmaWxsUG9zZXMoc2VxdWVuY2U8
V2ViWFJTcGFjZT4gc3BhY2VzLCBXZWJYUlNwYWNlIGJhc2VTcGFjZSwgRmxvYXQzMkFycmF5IHRy
YW5zZm9ybXMpOworICAgIFtDYWxsV2l0aD1DdXJyZW50RG9jdW1lbnRdIGJvb2xlYW4gZmlsbFBv
c2VzKHNlcXVlbmNlPFdlYlhSU3BhY2U+IHNwYWNlcywgV2ViWFJTcGFjZSBiYXNlU3BhY2UsIEZs
b2F0MzJBcnJheSB0cmFuc2Zvcm1zKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9N
b2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmNwcAppbmRleCBmMWFmZDQzM2UyNWNjMjUzNTY4NzcyZDc0NmI3ZTc3N2M4
YmExZTYwLi4zYTc2ODNlNzhhOWI3MDkxYTIzZjg2YjFkMzg0OGFiNjQxOWU1M2VkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSRnJhbWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5jcHAKQEAgLTEzNiw4ICsxMzYs
MTAgQEAgRXhjZXB0aW9uT3I8c3RkOjpvcHRpb25hbDxXZWJYUkZyYW1lOjpQb3B1bGF0ZWRQb3Nl
Pj4gV2ViWFJGcmFtZTo6cG9wdWxhdGVQb3NlKGMKICAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxs
b3B0IH07CiAKICAgICBhdXRvIGVmZmVjdGl2ZU9yaWdpbiA9IHNwYWNlLmVmZmVjdGl2ZU9yaWdp
bigpOworICAgIC8vIEEgc3BhY2UncyBlZmZlY3RpdmVPcmlnaW4gY2FuIGJlIG51bGwsIHN1Y2gg
YXMgYSBqb2ludCBwb3NlIGZyb20gYSBoYW5kIHRoYXQgaGFzCisgICAgLy8gb3RoZXIgbWlzc2lu
ZyBqb2ludCBwb3Nlcy4KICAgICBpZiAoIWVmZmVjdGl2ZU9yaWdpbikKLSAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yIH07CisgICAgICAgIHJldHVybiB7IHN0ZDo6
bnVsbG9wdCB9OwogCiAgICAgYXV0byB0cmFuc2Zvcm0gPSAgKmJhc2VUcmFuc2Zvcm0udmFsdWUo
KS5pbnZlcnNlKCkgKiBlZmZlY3RpdmVPcmlnaW4udmFsdWUoKTsKIApAQCAtMjYzLDIzICsyNjUs
MTE1IEBAIFRyYW5zZm9ybWF0aW9uTWF0cml4IFdlYlhSRnJhbWU6Om1hdHJpeEZyb21Qb3NlKGNv
bnN0IFBsYXRmb3JtWFI6OkRldmljZTo6RnJhbWVECiAjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQog
CiAvLyBodHRwczovL2ltbWVyc2l2ZS13ZWIuZ2l0aHViLmlvL3dlYnhyLWhhbmQtaW5wdXQvI2Rv
bS14cmZyYW1lLWdldGpvaW50cG9zZQotRXhjZXB0aW9uT3I8UmVmUHRyPFdlYlhSSm9pbnRQb3Nl
Pj4gV2ViWFJGcmFtZTo6Z2V0Sm9pbnRQb3NlKGNvbnN0IFdlYlhSSm9pbnRTcGFjZSYgam9pbnQs
IGNvbnN0IFdlYlhSU3BhY2UmIGJhc2VTcGFjZSkKK0V4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUkpv
aW50UG9zZT4+IFdlYlhSRnJhbWU6OmdldEpvaW50UG9zZShjb25zdCBEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFdlYlhSSm9pbnRTcGFjZSYgam9pbnRTcGFjZSwgY29uc3QgV2ViWFJTcGFjZSYg
YmFzZVNwYWNlKQogewotICAgIFVOVVNFRF9QQVJBTShqb2ludCk7Ci0gICAgVU5VU0VEX1BBUkFN
KGJhc2VTcGFjZSk7Ci0gICAgcmV0dXJuIG51bGxwdHI7CisgICAgYXV0byBwb3B1bGF0ZVBvc2VS
ZXN1bHQgPSBwb3B1bGF0ZVBvc2UoZG9jdW1lbnQsIGpvaW50U3BhY2UsIGJhc2VTcGFjZSk7Cisg
ICAgaWYgKHBvcHVsYXRlUG9zZVJlc3VsdC5oYXNFeGNlcHRpb24oKSkKKyAgICAgICAgcmV0dXJu
IHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisKKyAgICBhdXRvIHBvcHVs
YXRlVmFsdWUgPSBwb3B1bGF0ZVBvc2VSZXN1bHQucmVsZWFzZVJldHVyblZhbHVlKCk7CisgICAg
aWYgKCFwb3B1bGF0ZVZhbHVlKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKworICAgIHJldHVy
biBSZWZQdHI8V2ViWFJKb2ludFBvc2U+KFdlYlhSSm9pbnRQb3NlOjpjcmVhdGUoV2ViWFJSaWdp
ZFRyYW5zZm9ybTo6Y3JlYXRlKHBvcHVsYXRlVmFsdWUtPnRyYW5zZm9ybSksIHBvcHVsYXRlVmFs
dWUtPmVtdWxhdGVkUG9zaXRpb24sIGpvaW50U3BhY2UucmFkaXVzKCkpKTsKIH0KIAogLy8gaHR0
cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1oYW5kLWlucHV0LyNkb20teHJmcmFt
ZS1maWxsam9pbnRyYWRpaQotRXhjZXB0aW9uT3I8Ym9vbD4gV2ViWFJGcmFtZTo6ZmlsbEpvaW50
UmFkaWkoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUkpvaW50U3BhY2U+PiwgY29uc3QgRmxvYXQz
MkFycmF5JikKK0V4Y2VwdGlvbk9yPGJvb2w+IFdlYlhSRnJhbWU6OmZpbGxKb2ludFJhZGlpKGNv
bnN0IFZlY3RvcjxSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4mIGpvaW50U3BhY2VzLCBGbG9hdDMy
QXJyYXkmIHJhZGlpKQogewotICAgIHJldHVybiB0cnVlOworICAgIC8vIElmIGZyYW1l4oCZcyBh
Y3RpdmUgYm9vbGVhbiBpcyBmYWxzZSwgdGhyb3cgYW4gSW52YWxpZFN0YXRlRXJyb3IgYW5kIGFi
b3J0IHRoZXNlIHN0ZXBzLgorICAgIGlmICghbV9hY3RpdmUpCisgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBJbnZhbGlkU3RhdGVFcnJvciwgIkZyYW1lIGlzIG5vdCBhY3RpdmUiX3MgfTsKKwor
ICAgIC8vIEZvciBlYWNoIGpvaW50IGluIHRoZSBqb2ludFNwYWNlczoKKyAgICAvLyBJZiBqb2lu
dOKAmXMgc2Vzc2lvbiBpcyBkaWZmZXJlbnQgZnJvbSBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlk
U3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgZm9yIChjb25zdCBhdXRvJiBq
b2ludFNwYWNlIDogam9pbnRTcGFjZXMpIHsKKyAgICAgICAgaWYgKCFqb2ludFNwYWNlIHx8IGpv
aW50U3BhY2UtPnNlc3Npb24oKSAhPSBtX3Nlc3Npb24ucHRyKCkpCisgICAgICAgICAgICByZXR1
cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRlRXJyb3IsICJKb2ludCBzcGFjZSdzIHNlc3Npb24g
ZG9lcyBub3QgbWF0Y2ggZnJhbWUncyBzZXNzaW9uIl9zIH07CisgICAgfQorCisgICAgLy8gSWYg
dGhlIGxlbmd0aCBvZiBqb2ludFNwYWNlcyBpcyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGVs
ZW1lbnRzIGluIHJhZGlpLCB0aHJvdyBhIFR5cGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMu
CisgICAgaWYgKGpvaW50U3BhY2VzLnNpemUoKSA+IHJhZGlpLmxlbmd0aCgpKQorICAgICAgICBy
ZXR1cm4gRXhjZXB0aW9uIHsgVHlwZUVycm9yLCAiVW5leHBlY3RlZCBsZW5ndGggb2YgcmFkaWkg
YXJyYXkiX3MgfTsKKworICAgIC8vIExldCBhbGxWYWxpZCBiZSB0cnVlLgorICAgIGJvb2wgYWxs
VmFsaWQgPSB0cnVlOworCisgICAgLy8gRm9yIGVhY2ggam9pbnQgaW4gdGhlIGpvaW50U3BhY2Vz
OgorICAgIC8vIDEuIFNldCB0aGUgZmxvYXQgdmFsdWUgb2YgcmFkaWkgYXQgb2Zmc2V0IGFzIGZv
bGxvd3M6CisgICAgLy8gSWYgdGhlIHVzZXIgYWdlbnQgY2FuIGRldGVybWluZSB0aGUgcG9zZXMg
b2YgYWxsIHRoZSBqb2ludHMgYmVsb25naW5nIHRvIHRoZSBqb2ludOKAmXMgaGFuZDoKKyAgICAv
LyAgICAgU2V0IHRoZSBmbG9hdCB2YWx1ZSBvZiByYWRpaSBhdCBvZmZzZXQgdG8gdGhhdCByYWRp
dXMuCisgICAgLy8gT3RoZXJ3aXNlCisgICAgLy8gICAgIFNldCB0aGUgZmxvYXQgdmFsdWUgb2Yg
cmFkaWkgYXQgb2Zmc2V0IHRvIE5hTi4KKyAgICAvLyAgICAgU2V0IGFsbFZhbGlkIHRvIGZhbHNl
LgorICAgIC8vIDIuIEluY3JlYXNlIG9mZnNldCBieSAxLgorICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgam9pbnRTcGFjZXMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKGpvaW50U3BhY2Vz
W2ldLT5oYW5kSGFzTWlzc2luZ1Bvc2VzKCkpIHsKKyAgICAgICAgICAgIHJhZGlpLnNldChpLCBz
dGQ6Om51bWVyaWNfbGltaXRzPGZsb2F0Pjo6cXVpZXRfTmFOKCkpOworICAgICAgICAgICAgYWxs
VmFsaWQgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICByYWRpaS5zZXQoaSwg
am9pbnRTcGFjZXNbaV0tPnJhZGl1cygpKTsKKyAgICB9CisKKyAgICByZXR1cm4gYWxsVmFsaWQ7
CiB9CiAKIC8vIGh0dHBzOi8vaW1tZXJzaXZlLXdlYi5naXRodWIuaW8vd2VieHItaGFuZC1pbnB1
dC8jZG9tLXhyZnJhbWUtZmlsbHBvc2VzCi1FeGNlcHRpb25Pcjxib29sPiBXZWJYUkZyYW1lOjpm
aWxsUG9zZXMoY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUlNwYWNlPj4sIGNvbnN0IFdlYlhSU3Bh
Y2UmLCBjb25zdCBGbG9hdDMyQXJyYXkmKQorRXhjZXB0aW9uT3I8Ym9vbD4gV2ViWFJGcmFtZTo6
ZmlsbFBvc2VzKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgVmVjdG9yPFJlZlB0cjxX
ZWJYUlNwYWNlPj4mIHNwYWNlcywgY29uc3QgV2ViWFJTcGFjZSYgYmFzZVNwYWNlLCBGbG9hdDMy
QXJyYXkmIHRyYW5zZm9ybXMpCiB7Ci0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gSWYgZnJhbWXi
gJlzIGFjdGl2ZSBib29sZWFuIGlzIGZhbHNlLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJvciBh
bmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKCFtX2FjdGl2ZSkKKyAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbiB7IEludmFsaWRTdGF0ZUVycm9yLCAiRnJhbWUgaXMgbm90IGFjdGl2ZSJfcyB9
OworCisgICAgLy8gRm9yIGVhY2ggc3BhY2UgaW4gdGhlIHNwYWNlcyBzZXF1ZW5jZToKKyAgICAv
LyBJZiBzcGFjZeKAmXMgc2Vzc2lvbiBpcyBkaWZmZXJlbnQgZnJvbSBzZXNzaW9uLCB0aHJvdyBh
biBJbnZhbGlkU3RhdGVFcnJvciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgZm9yIChjb25z
dCBhdXRvJiBzcGFjZSA6IHNwYWNlcykgeworICAgICAgICBpZiAoIXNwYWNlIHx8IHNwYWNlLT5z
ZXNzaW9uKCkgIT0gbV9zZXNzaW9uLnB0cigpKQorICAgICAgICAgICAgcmV0dXJuIEV4Y2VwdGlv
biB7IEludmFsaWRTdGF0ZUVycm9yLCAiU3BhY2UncyBzZXNzaW9uIGRvZXMgbm90IG1hdGNoIGZy
YW1lJ3Mgc2Vzc2lvbiJfcyB9OworICAgIH0KKworICAgIC8vIElmIGJhc2VTcGFjZeKAmXMgc2Vz
c2lvbiBpcyBkaWZmZXJlbnQgZnJvbSBzZXNzaW9uLCB0aHJvdyBhbiBJbnZhbGlkU3RhdGVFcnJv
ciBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCisgICAgaWYgKGJhc2VTcGFjZS5zZXNzaW9uKCkgIT0g
bV9zZXNzaW9uLnB0cigpKQorICAgICAgICByZXR1cm4gRXhjZXB0aW9uIHsgSW52YWxpZFN0YXRl
RXJyb3IsICJCYXNlIHNwYWNlJ3Mgc2Vzc2lvbiBkb2VzIG5vdCBtYXRjaCBmcmFtZSdzIHNlc3Np
b24iX3MgfTsKKworICAgIC8vIElmIHRoZSBsZW5ndGggb2Ygc3BhY2VzIG11bHRpcGxpZWQgYnkg
MTYgaXMgbGFyZ2VyIHRoYW4gdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0cmFuc2Zvcm1zLAor
ICAgIC8vIHRocm93IGEgVHlwZUVycm9yIGFuZCBhYm9ydCB0aGVzZSBzdGVwcy4KKyAgICBjb25z
dCBzaXplX3QgbnVtYmVyT2ZGbG9hdHNQZXJUcmFuc2Zvcm0gPSAxNjsKKyAgICBpZiAoc3BhY2Vz
LnNpemUoKSAqIG51bWJlck9mRmxvYXRzUGVyVHJhbnNmb3JtID4gdHJhbnNmb3Jtcy5sZW5ndGgo
KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciwgIlVuZXhwZWN0ZWQgbGVu
Z3RoIG9mIHRyYW5zZm9ybXMgYXJyYXkiX3MgfTsKKworICAgIC8vIENoZWNrIGlmIHBvc2VzIG1h
eSBiZSByZXBvcnRlZCBhbmQsIGlmIG5vdCwgdGhyb3cgYSBTZWN1cml0eUVycm9yIGFuZCBhYm9y
dCB0aGVzZSBzdGVwcy4KKyAgICBpZiAoIW1fc2Vzc2lvbi0+cG9zZXNDYW5CZVJlcG9ydGVkKGRv
Y3VtZW50KSkKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFNlY3VyaXR5RXJyb3IsICJQb3Nl
cyBjYW5ub3QgYmUgcmVwb3J0ZWQiX3MgfTsKKworICAgIC8vIExldCBhbGxWYWxpZCBiZSB0cnVl
LgorICAgIGJvb2wgYWxsVmFsaWQgPSB0cnVlOworCisgICAgLy8gRm9yIGVhY2ggc3BhY2UgaW4g
dGhlIHNwYWNlcyBzZXF1ZW5jZToKKyAgICBmb3IgKHNpemVfdCBzcGFjZUluZGV4ID0gMDsgc3Bh
Y2VJbmRleCA8IHNwYWNlcy5zaXplKCk7ICsrc3BhY2VJbmRleCkgeworICAgICAgICAvLyAxLiBQ
b3B1bGF0ZSB0aGUgcG9zZSBvZiBzcGFjZSBpbiBiYXNlU3BhY2UgYXQgdGhlIHRpbWUgcmVwcmVz
ZW50ZWQgYnkgZnJhbWUgaW50byBwb3NlLgorICAgICAgICBhdXRvIHBvcHVsYXRlUG9zZVJlc3Vs
dCA9IHBvcHVsYXRlUG9zZShkb2N1bWVudCwgKihzcGFjZXNbc3BhY2VJbmRleF0pLCBiYXNlU3Bh
Y2UpOworICAgICAgICBpZiAocG9wdWxhdGVQb3NlUmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQorICAg
ICAgICAgICAgcmV0dXJuIHBvcHVsYXRlUG9zZVJlc3VsdC5yZWxlYXNlRXhjZXB0aW9uKCk7CisK
KyAgICAgICAgLy8gMi4gSWYgcG9zZSBpcyBudWxsLCBwZXJmb3JtIHRoZSBmb2xsb3dpbmcgc3Rl
cHM6CisgICAgICAgIC8vIDMuIFNldCAxNiBjb25zZWN1dGl2ZSBlbGVtZW50cyBvZiB0aGUgdHJh
bnNmb3JtcyBhcnJheSBzdGFydGluZyBhdCBvZmZzZXQgdG8gTmFOLgorICAgICAgICAvLyA0LiBT
ZXQgYWxsVmFsaWQgdG8gZmFsc2UuCisgICAgICAgIGF1dG8gcG9wdWxhdGVWYWx1ZSA9IHBvcHVs
YXRlUG9zZVJlc3VsdC5yZWxlYXNlUmV0dXJuVmFsdWUoKTsKKyAgICAgICAgaWYgKCFwb3B1bGF0
ZVZhbHVlKSB7CisgICAgICAgICAgICBmb3IgKHNpemVfdCB0cmFuc2Zvcm1JbmRleCA9IDA7IHRy
YW5zZm9ybUluZGV4IDwgbnVtYmVyT2ZGbG9hdHNQZXJUcmFuc2Zvcm07ICsrdHJhbnNmb3JtSW5k
ZXgpCisgICAgICAgICAgICAgICAgdHJhbnNmb3Jtcy5zZXQoc3BhY2VJbmRleCAqIG51bWJlck9m
RmxvYXRzUGVyVHJhbnNmb3JtICsgdHJhbnNmb3JtSW5kZXgsIHN0ZDo6bnVtZXJpY19saW1pdHM8
ZmxvYXQ+OjpxdWlldF9OYU4oKSk7CisgICAgICAgICAgICBhbGxWYWxpZCA9IGZhbHNlOworICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8gNS4gSWYgcG9zZSBpcyBub3QgbnVsbCwgY29w
eSBhbGwgZWxlbWVudHMgZnJvbSBwb3Nl4oCZcyBtYXRyaXggbWVtYmVyIHRvIHRoZSB0cmFuc2Zv
cm1zIGFycmF5IHN0YXJ0aW5nIGF0IG9mZnNldC4KKyAgICAgICAgICAgIC8vIDYuIEluY3JlYXNl
IG9mZnNldCBieSAxNi4KKyAgICAgICAgICAgIGF1dG8gbWF0cml4ID0gcG9wdWxhdGVWYWx1ZS0+
dHJhbnNmb3JtLnRvQ29sdW1uTWFqb3JGbG9hdEFycmF5KCk7CisgICAgICAgICAgICBmb3IgKHNp
emVfdCB0cmFuc2Zvcm1JbmRleCA9IDA7IHRyYW5zZm9ybUluZGV4IDwgbnVtYmVyT2ZGbG9hdHNQ
ZXJUcmFuc2Zvcm07ICsrdHJhbnNmb3JtSW5kZXgpCisgICAgICAgICAgICAgICAgdHJhbnNmb3Jt
cy5zZXQoc3BhY2VJbmRleCAqIG51bWJlck9mRmxvYXRzUGVyVHJhbnNmb3JtICsgdHJhbnNmb3Jt
SW5kZXgsIG1hdHJpeFt0cmFuc2Zvcm1JbmRleF0pOworICAgICAgICB9CisgICAgfQorCisgICAg
cmV0dXJuIGFsbFZhbGlkOwogfQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJGcmFtZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkZyYW1lLmgKaW5kZXggYmJhYTJjZGQ4ZTlmY2I4ZWYwNjRkNTQ3NDgxMjQ0ZDlkNDEy
MzhmNi4uMTVmNTdmZjI4YmE3YjZlYjZmZjRmMzZjMzg3MzdiNDhmMTgwOGQ5NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkZyYW1lLmgKQEAgLTYwLDkgKzYwLDkgQEAgcHVi
bGljOgogICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxXZWJYUlBvc2U+PiBnZXRQb3NlKGNvbnN0IERv
Y3VtZW50JiwgY29uc3QgV2ViWFJTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKIAogI2lmIEVO
QUJMRShXRUJYUl9IQU5EUykKLSAgICBFeGNlcHRpb25PcjxSZWZQdHI8V2ViWFJKb2ludFBvc2U+
PiBnZXRKb2ludFBvc2UoY29uc3QgV2ViWFJKb2ludFNwYWNlJiwgY29uc3QgV2ViWFJTcGFjZSYp
OwotICAgIEV4Y2VwdGlvbk9yPGJvb2w+IGZpbGxKb2ludFJhZGlpKGNvbnN0IFZlY3RvcjxSZWZQ
dHI8V2ViWFJKb2ludFNwYWNlPj4sIGNvbnN0IEZsb2F0MzJBcnJheSYpOwotICAgIEV4Y2VwdGlv
bk9yPGJvb2w+IGZpbGxQb3Nlcyhjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSU3BhY2U+PiwgY29u
c3QgV2ViWFJTcGFjZSYsIGNvbnN0IEZsb2F0MzJBcnJheSYpOworICAgIEV4Y2VwdGlvbk9yPFJl
ZlB0cjxXZWJYUkpvaW50UG9zZT4+IGdldEpvaW50UG9zZShjb25zdCBEb2N1bWVudCYsIGNvbnN0
IFdlYlhSSm9pbnRTcGFjZSYsIGNvbnN0IFdlYlhSU3BhY2UmKTsKKyAgICBFeGNlcHRpb25Pcjxi
b29sPiBmaWxsSm9pbnRSYWRpaShjb25zdCBWZWN0b3I8UmVmUHRyPFdlYlhSSm9pbnRTcGFjZT4+
JiwgRmxvYXQzMkFycmF5Jik7CisgICAgRXhjZXB0aW9uT3I8Ym9vbD4gZmlsbFBvc2VzKGNvbnN0
IERvY3VtZW50JiwgY29uc3QgVmVjdG9yPFJlZlB0cjxXZWJYUlNwYWNlPj4mLCBjb25zdCBXZWJY
UlNwYWNlJiwgRmxvYXQzMkFycmF5Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0VGltZShET01I
aWdoUmVzVGltZVN0YW1wIHRpbWUpIHsgbV90aW1lID0gdGltZTsgfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
TW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuY3BwCmluZGV4IGY1M2U0MWJmZDJlZjVhZDU5OTcyYjM0
ZWQ3YTZmMzM1NTljMWMzOTEuLjI5OWMxZTU1N2VmZjQ2ZmQzNDhiYzkwMTAzZWI2OWM4NDhlZDZh
NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJIYW5kLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5jcHAKQEAgLTQz
LDE0ICs0MywyOCBAQCBSZWY8V2ViWFJIYW5kPiBXZWJYUkhhbmQ6OmNyZWF0ZShjb25zdCBXZWJY
UklucHV0U291cmNlJiBpbnB1dFNvdXJjZSkKIFdlYlhSSGFuZDo6V2ViWFJIYW5kKGNvbnN0IFdl
YlhSSW5wdXRTb3VyY2UmIGlucHV0U291cmNlKQogICAgIDogbV9pbnB1dFNvdXJjZShpbnB1dFNv
dXJjZSkKIHsKKyAgICBhdXRvKiBzZXNzaW9uID0gdGhpcy0+c2Vzc2lvbigpOworICAgIGF1dG8q
IGRvY3VtZW50ID0gc2Vzc2lvbiA/IGRvd25jYXN0PERvY3VtZW50PihzZXNzaW9uLT5zY3JpcHRF
eGVjdXRpb25Db250ZXh0KCkpIDogbnVsbHB0cjsKKyAgICBpZiAoIWRvY3VtZW50KQorICAgICAg
ICByZXR1cm47CisKKyAgICBzaXplX3Qgam9pbnRDb3VudCA9IHN0YXRpY19jYXN0PHNpemVfdD4o
WFJIYW5kSm9pbnQ6OkNvdW50KTsKKyAgICBWZWN0b3I8UmVmPFdlYlhSSm9pbnRTcGFjZT4+IGpv
aW50czsKKyAgICBqb2ludHMucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShqb2ludENvdW50KTsKKyAg
ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGpvaW50Q291bnQ7ICsraSkKKyAgICAgICAgam9pbnRz
LnVuY2hlY2tlZEFwcGVuZChXZWJYUkpvaW50U3BhY2U6OmNyZWF0ZSgqZG9jdW1lbnQsICp0aGlz
LCBzdGF0aWNfY2FzdDxYUkhhbmRKb2ludD4oaSkpKTsKKyAgICBtX2pvaW50cyA9IFdURk1vdmUo
am9pbnRzKTsKIH0KIAogV2ViWFJIYW5kOjp+V2ViWFJIYW5kKCkgPSBkZWZhdWx0OwogCiBSZWZQ
dHI8V2ViWFJKb2ludFNwYWNlPiBXZWJYUkhhbmQ6OmdldChjb25zdCBYUkhhbmRKb2ludCYga2V5
KQogewotICAgIFVOVVNFRF9QQVJBTShrZXkpOwotICAgIHJldHVybiBudWxscHRyOworICAgIHNp
emVfdCBqb2ludEluZGV4ID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihrZXkpOworICAgIGlmIChqb2lu
dEluZGV4ID49IG1fam9pbnRzLnNpemUoKSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAg
ICByZXR1cm4gbV9qb2ludHNbam9pbnRJbmRleF0ucHRyKCk7CiB9CiAKIFdlYlhSSGFuZDo6SXRl
cmF0b3I6Okl0ZXJhdG9yKFdlYlhSSGFuZCYgaGFuZCkKQEAgLTYwLDE5ICs3NCw0NCBAQCBXZWJY
UkhhbmQ6Okl0ZXJhdG9yOjpJdGVyYXRvcihXZWJYUkhhbmQmIGhhbmQpCiAKIHN0ZDo6b3B0aW9u
YWw8S2V5VmFsdWVQYWlyPFhSSGFuZEpvaW50LCBSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4+IFdl
YlhSSGFuZDo6SXRlcmF0b3I6Om5leHQoKQogewotICAgIGlmIChtX2luZGV4ID4gbV9oYW5kLT5t
X2pvaW50cy5zaXplKCkpCisgICAgaWYgKG1faW5kZXggPj0gbV9oYW5kLT5tX2pvaW50cy5zaXpl
KCkpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHNpemVfdCBpbmRleCA9IG1faW5kZXgrKzsKKyAgICByZXR1cm4gS2V5VmFsdWVQ
YWlyPFhSSGFuZEpvaW50LCBSZWZQdHI8V2ViWFJKb2ludFNwYWNlPj4geyBzdGF0aWNfY2FzdDxY
UkhhbmRKb2ludD4oaW5kZXgpLCBtX2hhbmQtPm1fam9pbnRzW2luZGV4XS5wdHIoKSB9OwogfQog
CiBXZWJYUlNlc3Npb24qIFdlYlhSSGFuZDo6c2Vzc2lvbigpCiB7CiAgICAgaWYgKCFtX2lucHV0
U291cmNlKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKKwogICAgIHJldHVybiBtX2lucHV0U291
cmNlLmdldCgpLT5zZXNzaW9uKCk7CiB9CiAKK3ZvaWQgV2ViWFJIYW5kOjp1cGRhdGVGcm9tSW5w
dXRTb3VyY2UoY29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNl
JiBpbnB1dFNvdXJjZSkKK3sKKyAgICBpZiAoIWlucHV0U291cmNlLmhhbmRKb2ludHMpIHsKKyAg
ICAgICAgbV9oYXNNaXNzaW5nUG9zZXMgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgYXV0byYgaGFuZEpvaW50cyA9ICooaW5wdXRTb3VyY2UuaGFuZEpvaW50cyk7CisgICAg
aWYgKGhhbmRKb2ludHMuc2l6ZSgpICE9IG1fam9pbnRzLnNpemUoKSkgeworICAgICAgICBtX2hh
c01pc3NpbmdQb3NlcyA9IHRydWU7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBib29s
IGhhc01pc3NpbmdQb3NlcyA9IGZhbHNlOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgaGFu
ZEpvaW50cy5zaXplKCk7ICsraSkgeworICAgICAgICBpZiAoIWhhbmRKb2ludHNbaV0pCisgICAg
ICAgICAgICBoYXNNaXNzaW5nUG9zZXMgPSB0cnVlOworCisgICAgICAgIG1fam9pbnRzW2ldLT51
cGRhdGVGcm9tSm9pbnQoaGFuZEpvaW50c1tpXSk7CisgICAgfQorICAgIG1faGFzTWlzc2luZ1Bv
c2VzID0gaGFzTWlzc2luZ1Bvc2VzOworfQorCiB9CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaCBiL1NvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvd2VieHIvV2ViWFJIYW5kLmgKaW5kZXggZGJlMTE0MzI1M2Q1NzA3OTFhZmM3YmQ4Njg4
Yzk5MmRjM2ZiYmFmZS4uYTBkZDFiNTEyMGIxZmU2ZWMwNjhmMzFjYTE0ZDg2NzNkNDQ4MTYzYyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkhhbmQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSGFuZC5oCkBAIC0zNiwxNyArMzYs
MTggQEAKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBXZWJYUkhhbmQgOiBwdWJsaWMgUmVmQ291bnRlZDxX
ZWJYUkhhbmQ+IHsKK2NsYXNzIFdlYlhSSGFuZCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYlhSSGFu
ZD4sIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxXZWJYUkhhbmQ+IHsKICAgICBXVEZfTUFLRV9JU09f
QUxMT0NBVEVEKFdlYlhSSGFuZCk7CiBwdWJsaWM6CiAKICAgICBzdGF0aWMgUmVmPFdlYlhSSGFu
ZD4gY3JlYXRlKGNvbnN0IFdlYlhSSW5wdXRTb3VyY2UmKTsKICAgICB+V2ViWFJIYW5kKCk7CiAK
LSAgICB1bnNpZ25lZCBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdW5zaWduZWQgc2l6
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fam9pbnRzLnNpemUoKTsgfQogCiAgICAgUmVmUHRyPFdlYlhS
Sm9pbnRTcGFjZT4gZ2V0KGNvbnN0IFhSSGFuZEpvaW50JiBrZXkpOwogCkBAIC02MSwxNiArNjIs
MTcgQEAgcHVibGljOgogICAgIH07CiAgICAgSXRlcmF0b3IgY3JlYXRlSXRlcmF0b3IoKSB7IHJl
dHVybiBJdGVyYXRvcigqdGhpcyk7IH0KIAotICAgIC8vIEZvciBHQyByZWFjaGFibGl0aXkuCisg
ICAgLy8gRm9yIEdDIHJlYWNoYWJpbGl0eS4KICAgICBXZWJYUlNlc3Npb24qIHNlc3Npb24oKTsK
IAorICAgIGJvb2wgaGFzTWlzc2luZ1Bvc2VzKCkgY29uc3QgeyByZXR1cm4gbV9oYXNNaXNzaW5n
UG9zZXM7IH0KKyAgICB2b2lkIHVwZGF0ZUZyb21JbnB1dFNvdXJjZShjb25zdCBQbGF0Zm9ybVhS
OjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2UmKTsKKwogcHJpdmF0ZToKICAgICBXZWJY
UkhhbmQoY29uc3QgV2ViWFJJbnB1dFNvdXJjZSYpOwogCi0gICAgdW5zaWduZWQgbV9zaXplIHsg
MCB9OwotICAgIHVzaW5nIEhhbmRKb2ludFRvU3BhY2VNYXAgPSBIYXNoTWFwPFhSSGFuZEpvaW50
LCBSZWY8V2ViWFJKb2ludFNwYWNlPiwgRGVmYXVsdEhhc2g8dW5zaWduZWQ+LCBXVEY6OlVuc2ln
bmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVuc2lnbmVkPj47Ci0gICAgSGFuZEpvaW50VG9TcGFj
ZU1hcCBtX2pvaW50czsKLQorICAgIEZpeGVkVmVjdG9yPFJlZjxXZWJYUkpvaW50U3BhY2U+PiBt
X2pvaW50czsKKyAgICBib29sIG1faGFzTWlzc2luZ1Bvc2VzIHsgdHJ1ZSB9OwogICAgIFdlYWtQ
dHI8V2ViWFJJbnB1dFNvdXJjZT4gbV9pbnB1dFNvdXJjZTsKIH07CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSW5wdXRTb3VyY2UuY3BwCmluZGV4IDVmNTY5M2Uz
MDEwM2QyZmU3MzU4NGUxMjgxZGUwNzY4YmFiODdmNTAuLjBhYTg5ZDFlZTdjMjQ1NzA4ZmQ5MGVj
NDI4MjMxMDFiZjQ5YzM2NDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2Vi
eHIvV2ViWFJJbnB1dFNvdXJjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUklucHV0U291cmNlLmNwcApAQCAtODgsMTYgKzg4LDE5IEBAIHZvaWQgV2ViWFJJbnB1
dFNvdXJjZTo6dXBkYXRlKGRvdWJsZSB0aW1lc3RhbXAsIGNvbnN0IFBsYXRmb3JtWFI6OkRldmlj
ZTo6RnJhbWVECiAjZW5kaWYKIAogI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICBpZiAoc291
cmNlLnNpbXVsYXRlSGFuZCkgewotICAgICAgICAvLyBGSVhNRTogVGhpcyBjdXJyZW50bHkgY3Jl
YXRlcyBhbiBvYmplY3QganVzdCBmb3IgdXNlIGluIHRlc3RpbmcuCi0gICAgICAgIC8vIFRoZSBy
ZWFsIGltcGxlbWVudGF0aW9uIHdpbGwgdXNlIGFjdHVhbCBkYXRhIGFuZCBvbmx5IGJlIHZpc2li
bGUKLSAgICAgICAgLy8gaWYgaGFuZC10cmFja2luZyB3YXMgcmVxdWVzdGVkIGF0IHNlc3Npb24g
c3RhcnQuCi0gICAgICAgIGlmICghbV9oYW5kKQorICAgIGlmIChzb3VyY2UuaGFuZEpvaW50cykg
eworICAgICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvd2VieHItaGFuZC1pbnB1dC0xLyN4
cmlucHV0c291cmNlLWludGVyZmFjZQorICAgICAgICAvLyBJZiB0aGUgWFJJbnB1dFNvdXJjZSBi
ZWxvbmdzIHRvIGFuIFhSU2Vzc2lvbiB0aGF0IGhhcyBub3QgYmVlbiByZXF1ZXN0ZWQKKyAgICAg
ICAgLy8gd2l0aCB0aGUgImhhbmQtdHJhY2tpbmciIGZlYXR1cmUgZGVzY3JpcHRvciwgaGFuZCBN
VVNUIGJlIG51bGwuCisgICAgICAgIGlmICghbV9oYW5kICYmIHNlc3Npb24tPmlzSGFuZFRyYWNr
aW5nRW5hYmxlZCgpKQogICAgICAgICAgICAgbV9oYW5kID0gV2ViWFJIYW5kOjpjcmVhdGUoKnRo
aXMpOwotICAgIH0gZWxzZQotICAgICAgICBtX2hhbmQgPSBudWxscHRyOwotI2VuZGlmCiAKKyAg
ICAgICAgaWYgKG1faGFuZCkKKyAgICAgICAgICAgIG1faGFuZC0+dXBkYXRlRnJvbUlucHV0U291
cmNlKHNvdXJjZSk7CisKKyAgICAgICAgcmV0dXJuOworICAgIH0KKyNlbmRpZgogfQogCiBib29s
IFdlYlhSSW5wdXRTb3VyY2U6OnJlcXVpcmVzSW5wdXRTb3VyY2VDaGFuZ2UoY29uc3QgSW5wdXRT
b3VyY2UmIHNvdXJjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIv
V2ViWFJKb2ludFBvc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpv
aW50UG9zZS5jcHAKaW5kZXggNGI3ODNiMGM2NmJjZGQ3NTk2OTA5OGExMmUxZGEyN2I3NzEyMWE2
My4uZWQwNDViYjc0NmI2ZTJkNzRmZTM4ZTVlN2Q1MmExZGEzMThmZjI3YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5jcHAKQEAgLTM0LDEzICsz
NCwxNCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1Q
TChXZWJYUkpvaW50UG9zZSk7CiAKLVJlZjxXZWJYUkpvaW50UG9zZT4gV2ViWFJKb2ludFBvc2U6
OmNyZWF0ZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0
ZWRQb3NpdGlvbikKK1JlZjxXZWJYUkpvaW50UG9zZT4gV2ViWFJKb2ludFBvc2U6OmNyZWF0ZShS
ZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0ZWRQb3NpdGlv
biwgZmxvYXQgcmFkaXVzKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFdlYlhSSm9pbnRQ
b3NlKFdURk1vdmUodHJhbnNmb3JtKSwgZW11bGF0ZWRQb3NpdGlvbikpOworICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFdlYlhSSm9pbnRQb3NlKFdURk1vdmUodHJhbnNmb3JtKSwgZW11bGF0ZWRQ
b3NpdGlvbiwgcmFkaXVzKSk7CiB9CiAKLVdlYlhSSm9pbnRQb3NlOjpXZWJYUkpvaW50UG9zZShS
ZWY8V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0ZWRQb3NpdGlv
bikKK1dlYlhSSm9pbnRQb3NlOjpXZWJYUkpvaW50UG9zZShSZWY8V2ViWFJSaWdpZFRyYW5zZm9y
bT4mJiB0cmFuc2Zvcm0sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbiwgZmxvYXQgcmFkaXVzKQogICAg
IDogV2ViWFJQb3NlKFdURk1vdmUodHJhbnNmb3JtKSwgZW11bGF0ZWRQb3NpdGlvbikKKyAgICAs
IG1fcmFkaXVzKHJhZGl1cykKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkpvaW50UG9zZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4
ci9XZWJYUkpvaW50UG9zZS5oCmluZGV4IDFkN2M3NDFhM2FhNjRhNWY5ODU5ODVlY2FkN2UyOGZm
ZWE3Njg5OWQuLjdlYTE1Y2I1NWFkZGMzZGM1ZjJjMmMxN2E2YmE1MTIwYjAzNzgzNTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmgKQEAgLTM5LDEz
ICszOSwxMyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBXZWJYUkpvaW50UG9zZSA6IHB1
YmxpYyBXZWJYUlBvc2UgewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoV2ViWFJKb2ludFBv
c2UpOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8V2ViWFJKb2ludFBvc2U+IGNyZWF0ZShSZWY8
V2ViWFJSaWdpZFRyYW5zZm9ybT4mJiwgYm9vbCBlbXVsYXRlZFBvc2l0aW9uKTsKKyAgICBzdGF0
aWMgUmVmPFdlYlhSSm9pbnRQb3NlPiBjcmVhdGUoUmVmPFdlYlhSUmlnaWRUcmFuc2Zvcm0+JiYs
IGJvb2wgZW11bGF0ZWRQb3NpdGlvbiwgZmxvYXQgcmFkaXVzKTsKICAgICB+V2ViWFJKb2ludFBv
c2UoKSA9IGRlZmF1bHQ7CiAKICAgICBmbG9hdCByYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX3Jh
ZGl1czsgfQogCiBwcml2YXRlOgotICAgIFdlYlhSSm9pbnRQb3NlKFJlZjxXZWJYUlJpZ2lkVHJh
bnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRpb24pOworICAgIFdlYlhSSm9pbnRQb3NlKFJl
ZjxXZWJYUlJpZ2lkVHJhbnNmb3JtPiYmLCBib29sIGVtdWxhdGVkUG9zaXRpb24sIGZsb2F0IHJh
ZGl1cyk7CiAKICAgICBmbG9hdCBtX3JhZGl1cyB7IDAgfTsKIH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRQb3NlLmlkbCBiL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFBvc2UuaWRsCmluZGV4IDllYmQ4YmY1M2IyZjk4
NTllOTkwYjllZGY0NTVhOWFjNDgzNzU5NmEuLjczZWNhZWMyNDBkMGYyYjk3NzJlZjE0YjVlOGMw
N2Y5Y2Q3MzA5MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2Vi
WFJKb2ludFBvc2UuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJK
b2ludFBvc2UuaWRsCkBAIC0yNiw2ICsyNiw4IEBACiBbCiAgICAgQ29uZGl0aW9uYWw9V0VCWFJf
SEFORFMsCiAgICAgRW5hYmxlZEJ5U2V0dGluZz1XZWJYUkVuYWJsZWQmV2ViWFJIYW5kSW5wdXRN
b2R1bGVFbmFibGVkLAorICAgIEpTR2VuZXJhdGVUb0pTT2JqZWN0LAorICAgIEpTR2VuZXJhdGVU
b05hdGl2ZU9iamVjdCwKICAgICBTZWN1cmVDb250ZXh0LAogICAgIEV4cG9zZWQ9V2luZG93LAog
ICAgIEludGVyZmFjZU5hbWU9WFJKb2ludFBvc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmNwcAppbmRleCA5ZWU2NTBmZTA5MDhjYmM1MzdhOGVj
NzkzM2RhNmYwZTQ4ZjM1MGYwLi4zOGQyMjljYjY4MjRjZGY5N2Q5Yjc5YWEzNmFhZGJhM2YwYjZk
NzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRT
cGFjZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJYUkpvaW50U3Bh
Y2UuY3BwCkBAIC0yOCw2ICsyOCw4IEBACiAKICNpZiBFTkFCTEUoV0VCWFIpICYmIEVOQUJMRShX
RUJYUl9IQU5EUykKIAorI2luY2x1ZGUgIldlYlhSRnJhbWUuaCIKKyNpbmNsdWRlICJXZWJYUkhh
bmQuaCIKICNpbmNsdWRlICJXZWJYUlJpZ2lkVHJhbnNmb3JtLmgiCiAjaW5jbHVkZSA8d3RmL0lz
b01hbGxvY0lubGluZXMuaD4KIApAQCAtMzUsMjIgKzM3LDQ3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKFdlYlhSSm9pbnRTcGFjZSk7CiAKLVJl
ZjxXZWJYUkpvaW50U3BhY2U+IFdlYlhSSm9pbnRTcGFjZTo6Y3JlYXRlKERvY3VtZW50JiBkb2N1
bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKQorUmVmPFdlYlhSSm9pbnRTcGFjZT4gV2ViWFJK
b2ludFNwYWNlOjpjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUkhhbmQmIGhhbmQsIFhS
SGFuZEpvaW50IGpvaW50TmFtZSwgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZy
YW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ+JiYgam9pbnQpCiB7Ci0gICAgcmV0dXJuIGFk
b3B0UmVmKCpuZXcgV2ViWFJKb2ludFNwYWNlKGRvY3VtZW50LCBzZXNzaW9uKSk7CisgICAgcmV0
dXJuIGFkb3B0UmVmKCpuZXcgV2ViWFJKb2ludFNwYWNlKGRvY3VtZW50LCBoYW5kLCBqb2ludE5h
bWUsIFdURk1vdmUoam9pbnQpKSk7CiB9CiAKLVdlYlhSSm9pbnRTcGFjZTo6V2ViWFJKb2ludFNw
YWNlKERvY3VtZW50JiBkb2N1bWVudCwgV2ViWFJTZXNzaW9uJiBzZXNzaW9uKQorV2ViWFJKb2lu
dFNwYWNlOjpXZWJYUkpvaW50U3BhY2UoRG9jdW1lbnQmIGRvY3VtZW50LCBXZWJYUkhhbmQmIGhh
bmQsIFhSSGFuZEpvaW50IGpvaW50TmFtZSwgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZp
Y2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ+JiYgam9pbnQpCiAgICAgOiBXZWJY
UlNwYWNlKGRvY3VtZW50LCBXZWJYUlJpZ2lkVHJhbnNmb3JtOjpjcmVhdGUoKSkKLSAgICAsIG1f
c2Vzc2lvbihzZXNzaW9uKQorICAgICwgbV9oYW5kKGhhbmQpCisgICAgLCBtX2pvaW50TmFtZShq
b2ludE5hbWUpCisgICAgLCBtX2pvaW50KFdURk1vdmUoam9pbnQpKQogewogfQogCiBXZWJYUkpv
aW50U3BhY2U6On5XZWJYUkpvaW50U3BhY2UoKSA9IGRlZmF1bHQ7CiAKK3ZvaWQgV2ViWFJKb2lu
dFNwYWNlOjp1cGRhdGVGcm9tSm9pbnQoY29uc3Qgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpE
ZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ+JiBqb2ludCkKK3sKKyAgICBt
X2pvaW50ID0gam9pbnQ7Cit9CisKK2Jvb2wgV2ViWFJKb2ludFNwYWNlOjpoYW5kSGFzTWlzc2lu
Z1Bvc2VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gIW1faGFuZCB8fCBtX2hhbmQtPmhhc01pc3Np
bmdQb3NlcygpOworfQorCitXZWJYUlNlc3Npb24qIFdlYlhSSm9pbnRTcGFjZTo6c2Vzc2lvbigp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1faGFuZCA/IG1faGFuZC0+c2Vzc2lvbigpIDogbnVsbHB0
cjsKK30KKwogc3RkOjpvcHRpb25hbDxUcmFuc2Zvcm1hdGlvbk1hdHJpeD4gV2ViWFJKb2ludFNw
YWNlOjpuYXRpdmVPcmlnaW4oKSBjb25zdAogewotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgLy8gaHR0cHM6Ly9pbW1lcnNpdmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci1oYW5kLWlucHV0LyN4
cmpvaW50c3BhY2UtaW50ZXJmYWNlCisgICAgLy8gVGhlIG5hdGl2ZSBvcmlnaW4gb2YgdGhlIFhS
Sm9pbnRTcGFjZSBtYXkgb25seSBiZSByZXBvcnRlZCB3aGVuIG5hdGl2ZSBvcmlnaW5zIG9mCisg
ICAgLy8gYWxsIG90aGVyIFhSSm9pbnRTcGFjZXMgb24gdGhlIHNhbWUgaGFuZCBhcmUgYmVpbmcg
cmVwb3J0ZWQuIFdoZW4gYSBoYW5kIGlzIHBhcnRpYWxseQorICAgIC8vIG9ic2N1cmVkIHRoZSB1
c2VyIGFnZW50IE1VU1QgZWl0aGVyIGVtdWxhdGUgdGhlIG9ic2N1cmVkIGpvaW50cywgb3IgcmVw
b3J0IG51bGwgcG9zZXMKKyAgICAvLyBmb3IgYWxsIG9mIHRoZSBqb2ludHMuCisgICAgaWYgKGhh
bmRIYXNNaXNzaW5nUG9zZXMoKSB8fCAhbV9qb2ludCkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIHJldHVybiBXZWJYUkZyYW1lOjptYXRyaXhGcm9tUG9zZShtX2pvaW50LT5w
b3NlLnBvc2UpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dl
YnhyL1dlYlhSSm9pbnRTcGFjZS5oIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UkpvaW50U3BhY2UuaAppbmRleCA1MTI1N2JjYzVlNGI2NDRlMmIzNTJmZmYzNzE5NjY5Yjg4Nzc5
NjVmLi5hZTAwMTI0NTJhN2U3ZjVhMjhmMTdmYjc1MjlkYmQwNGY1ZDYwZjkwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFjZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNlLmgKQEAgLTI5LDMxICsy
OSwzOSBAQAogCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJQbGF0Zm9ybVhSLmgi
Ci0jaW5jbHVkZSAiV2ViWFJTZXNzaW9uLmgiCiAjaW5jbHVkZSAiV2ViWFJTcGFjZS5oIgogI2lu
Y2x1ZGUgIlhSSGFuZEpvaW50LmgiCiAjaW5jbHVkZSA8d3RmL0lzb01hbGxvYy5oPgogI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAotY2xhc3MgV2ViWFJKb2ludFNwYWNlIDogcHVibGljIFJlZkNvdW50ZWQ8V2ViWFJKb2lu
dFNwYWNlPiwgcHVibGljIFdlYlhSU3BhY2UgeworY2xhc3MgV2ViWFJIYW5kOworY2xhc3MgV2Vi
WFJTZXNzaW9uOworCitjbGFzcyBXZWJYUkpvaW50U3BhY2UgZmluYWw6IHB1YmxpYyBSZWZDb3Vu
dGVkPFdlYlhSSm9pbnRTcGFjZT4sIHB1YmxpYyBXZWJYUlNwYWNlIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKFdlYlhSSm9pbnRTcGFjZSk7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxX
ZWJYUkpvaW50U3BhY2U+IGNyZWF0ZShEb2N1bWVudCYsIFdlYlhSU2Vzc2lvbiYpOworICAgIHN0
YXRpYyBSZWY8V2ViWFJKb2ludFNwYWNlPiBjcmVhdGUoRG9jdW1lbnQmLCBXZWJYUkhhbmQmLCBY
UkhhbmRKb2ludCwgc3RkOjpvcHRpb25hbDxQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6
SW5wdXRTb3VyY2VIYW5kSm9pbnQ+JiYgPSBzdGQ6Om51bGxvcHQpOwogICAgIHZpcnR1YWwgfldl
YlhSSm9pbnRTcGFjZSgpOwogCiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUkpvaW50U3BhY2U+
OjpyZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxXZWJYUkpvaW50U3BhY2U+OjpkZXJlZjsKIAot
ICAgIFhSSGFuZEpvaW50IGpvaW50TmFtZSgpIGNvbnN0IHsgcmV0dXJuIFhSSGFuZEpvaW50OjpX
cmlzdDsgfQorICAgIFhSSGFuZEpvaW50IGpvaW50TmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fam9p
bnROYW1lOyB9CisKKyAgICBmbG9hdCByYWRpdXMoKSBjb25zdCB7IHJldHVybiBtX2pvaW50ID8g
bV9qb2ludC0+cmFkaXVzIDogMDsgfQorICAgIHZvaWQgdXBkYXRlRnJvbUpvaW50KGNvbnN0IHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlSGFu
ZEpvaW50PiYpOworICAgIGJvb2wgaGFuZEhhc01pc3NpbmdQb3NlcygpIGNvbnN0OworCisgICAg
V2ViWFJTZXNzaW9uKiBzZXNzaW9uKCkgY29uc3QgZmluYWw7CiAKIHByaXZhdGU6Ci0gICAgV2Vi
WFJKb2ludFNwYWNlKERvY3VtZW50JiwgV2ViWFJTZXNzaW9uJik7CisgICAgV2ViWFJKb2ludFNw
YWNlKERvY3VtZW50JiwgV2ViWFJIYW5kJiwgWFJIYW5kSm9pbnQsIHN0ZDo6b3B0aW9uYWw8UGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlSGFuZEpvaW50PiYmKTsKIAot
ICAgIFdlYlhSU2Vzc2lvbiogc2Vzc2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc2Vzc2lv
bi5nZXQoKTsgfTsKICAgICBzdGQ6Om9wdGlvbmFsPFRyYW5zZm9ybWF0aW9uTWF0cml4PiBuYXRp
dmVPcmlnaW4oKSBjb25zdCBmaW5hbDsKIAogICAgIHZvaWQgcmVmRXZlbnRUYXJnZXQoKSBmaW5h
bCB7IHJlZigpOyB9CkBAIC02MSw3ICs2OSw5IEBAIHByaXZhdGU6CiAKICAgICBib29sIGlzSm9p
bnRTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAotICAgIFdlYWtQdHI8V2Vi
WFJTZXNzaW9uPiBtX3Nlc3Npb247CisgICAgV2Vha1B0cjxXZWJYUkhhbmQ+IG1faGFuZDsKKyAg
ICBYUkhhbmRKb2ludCBtX2pvaW50TmFtZSB7IFhSSGFuZEpvaW50OjpXcmlzdCB9OworICAgIHN0
ZDo6b3B0aW9uYWw8UGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OklucHV0U291cmNlSGFu
ZEpvaW50PiBtX2pvaW50OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9k
dWxlcy93ZWJ4ci9XZWJYUkpvaW50U3BhY2UuaWRsIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93
ZWJ4ci9XZWJYUkpvaW50U3BhY2UuaWRsCmluZGV4IDAyNDE3ZTU2YWMyZmVlMjhlNzQ3ZGRkOGE5
MGYxNTIzNGRkZWViYmMuLmE5OGVjMDgzYzFkZjAxNzg1M2EwNzJmMTJkYzcwZDdmOGI0MTY4YjQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJKb2ludFNwYWNl
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSSm9pbnRTcGFjZS5p
ZGwKQEAgLTI2LDYgKzI2LDcgQEAKIFsKICAgICBDb25kaXRpb25hbD1XRUJYUl9IQU5EUywKICAg
ICBFbmFibGVkQnlTZXR0aW5nPVdlYlhSRW5hYmxlZCZXZWJYUkhhbmRJbnB1dE1vZHVsZUVuYWJs
ZWQsCisgICAgSlNHZW5lcmF0ZVRvSlNPYmplY3QsCiAgICAgSlNHZW5lcmF0ZVRvTmF0aXZlT2Jq
ZWN0LAogICAgIFNlY3VyZUNvbnRleHQsCiAgICAgRXhwb3NlZD1XaW5kb3csCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9Nb2R1bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5jcHAKaW5kZXggZjBjZTU4Y2MyMjUw
ZmY3ZDFmNGYwNGIzOWYzMGJiZjlmMDJlMjNiYi4uMmI4NGUwZTk4NzEyMDA3NTA5OGM5YzM4Zjg0
NGQ3OGZhNDllNGVkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9X
ZWJYUlNlc3Npb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJT
ZXNzaW9uLmNwcApAQCAtNjQ1LDYgKzY0NSwxNCBAQCBib29sIFdlYlhSU2Vzc2lvbjo6cG9zZXND
YW5CZVJlcG9ydGVkKGNvbnN0IERvY3VtZW50JiBkb2N1bWVudCkgY29uc3QKICAgICByZXR1cm4g
dHJ1ZTsKIH0KIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKK2Jvb2wgV2ViWFJTZXNzaW9uOjpp
c0hhbmRUcmFja2luZ0VuYWJsZWQoKSBjb25zdAoreworICAgIHJldHVybiBtX3JlcXVlc3RlZEZl
YXR1cmVzLmNvbnRhaW5zKFBsYXRmb3JtWFI6OlNlc3Npb25GZWF0dXJlOjpIYW5kVHJhY2tpbmcp
OworfQorI2VuZGlmCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFdFQlhSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy93ZWJ4ci9XZWJY
UlNlc3Npb24uaCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvd2VieHIvV2ViWFJTZXNzaW9uLmgK
aW5kZXggODYwYzZmNWJiODExZGI0NzE1OGQ0NTkzOTVmYTY0M2RhOWRjMDQzMy4uYTZjZmE4NGVh
YTJlYmIxNzRmZmU4MGEwMzE3ZWE5OTc4ZGU3ZDViNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy93ZWJ4ci9XZWJYUlNlc3Npb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1
bGVzL3dlYnhyL1dlYlhSU2Vzc2lvbi5oCkBAIC05OCw2ICs5OCwxMCBAQCBwdWJsaWM6CiAgICAg
Y29uc3QgUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGEmIGZyYW1lRGF0YSgpIGNvbnN0IHsg
cmV0dXJuIG1fZnJhbWVEYXRhOyB9CiAgICAgY29uc3QgV2ViWFJWaWV3ZXJTcGFjZSYgdmlld2Vy
UmVmZXJlbmNlU3BhY2UoKSBjb25zdCB7IHJldHVybiAqbV92aWV3ZXJSZWZlcmVuY2VTcGFjZTsg
fQogICAgIGJvb2wgcG9zZXNDYW5CZVJlcG9ydGVkKGNvbnN0IERvY3VtZW50JikgY29uc3Q7Cisg
ICAgCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorICAgIGJvb2wgaXNIYW5kVHJhY2tpbmdFbmFi
bGVkKCkgY29uc3Q7CisjZW5kaWYKIAogcHJpdmF0ZToKICAgICBXZWJYUlNlc3Npb24oRG9jdW1l
bnQmLCBXZWJYUlN5c3RlbSYsIFhSU2Vzc2lvbk1vZGUsIFBsYXRmb3JtWFI6OkRldmljZSYsIEZl
YXR1cmVMaXN0JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDY3ZDZjYzEzZDI4MmI1ZWI3MzcyM2I5OGYzNmM1MzdiN2UzYTI2
MWEuLjJjOGFhOWEzNGExNTBkOWZlMmI1ODQzMGEwYzIwY2VkNzAzOTBmOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE3NDcs
NiArMTc0Nyw3IEBACiAJCTUyNzNDQ0IyMjU2NDU3NkYwMDg1MDAwNyAvKiBKU0Zha2VYUkJ1dHRv
blN0YXRlSW5pdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1MjczQ0NBRDI1NjQ1NzZDMDA4NTAwMDcgLyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQu
Y3BwICovOyB9OwogCQk1MjczQ0NCMzI1NjQ1NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJSaWdpZFRy
YW5zZm9ybUluaXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTI3M0NDQUUyNTY0NTc2RDAwODUwMDA3IC8qIEpTRmFrZVhSUmlnaWRUcmFuc2Zvcm1J
bml0LmNwcCAqLzsgfTsKIAkJNTI3M0NDQjQyNTY0NTc2RjAwODUwMDA3IC8qIEpTRmFrZVhSVmll
d0luaXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NTI3M0NDQUYyNTY0NTc2RTAwODUwMDA3IC8qIEpTRmFrZVhSVmlld0luaXQuY3BwICovOyB9Owor
CQk1MkEwQkU2NjI3QzIyN0UxMDA0NjYxMUUgLyogSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MkEwQkU2NTI3
QzIyN0UwMDA0NjYxMUUgLyogSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHAgKi87IH07CiAJCTUy
QjBENEJFMUM1N0ZEMUUwMDc3Q0U1MyAvKiBQbGF0Zm9ybVZpZXcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjBENEJEMUM1N0ZEMUUwMDc3Q0U1MyAv
KiBQbGF0Zm9ybVZpZXcuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQk1MkIwRDRDMDFDNTdGRDY2MDA3N0NFNTMgLyogVmlkZW9GdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDUyQjBENEJGMUM1N0ZENjYwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTUyQjBENEMyMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyQjBENEMx
MUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwpAQCAtMTAwNzIsNiArMTAw
NzMsOCBAQAogCQk1MUZCNjdEOTFBRTZCNUU0MDBEMDZDNUEgLyogQ29udGVudEV4dGVuc2lvblN0
eWxlU2hlZXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQ29udGVu
dEV4dGVuc2lvblN0eWxlU2hlZXQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MUZCNjdEQTFBRTZCNUU0MDBEMDZDNUEgLyogQ29udGVudEV4dGVuc2lvblN0eWxlU2hlZXQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ29udGVudEV4dGVuc2lvblN0eWxlU2hl
ZXQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTIxMzFFNUExQzRGMTU2MTAwMzNG
ODAyIC8qIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTI2M0JGMjAyN0MxQjUzODAwODUyNTBDIC8qIEZh
a2VYUkpvaW50U3RhdGVJbml0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZha2VYUkpvaW50U3RhdGVJbml0
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNjNCRjIyMjdDMUI1M0IwMDg1MjUw
QyAvKiBGYWtlWFJKb2ludFN0YXRlSW5pdC5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRmFrZVhSSm9pbnRTdGF0ZUluaXQu
aWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3MjRGMTFDQjJGREY2MDA3NTk3
NEQgLyogVGV4dFRyYWNrUmVwcmVzZW50YXRpb25Db2NvYS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNjcyNEYyMUNCMkZERjYwMDc1OTc0RCAvKiBU
ZXh0VHJhY2tSZXByZXNlbnRhdGlvbkNvY29hLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFRleHRUcmFja1JlcHJlc2VudGF0aW9uQ29jb2EuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNTI2ODhBQTMyN0Q2QTdEQTAwMzU3N0EyIC8qIFJlc2lkZW50S2V5UmVxdWly
ZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVzaWRlbnRLZXlSZXF1aXJlbWVudC5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTAwODcsNiArMTAwOTAsNyBAQAogCQk1MjczQ0NBRDI1
NjQ1NzZDMDA4NTAwMDcgLyogSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNGYWtlWFJCdXR0b25TdGF0ZUluaXQuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjczQ0NBRTI1NjQ1NzZEMDA4NTAwMDcgLyog
SlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gSlNGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1MjczQ0NBRjI1NjQ1NzZFMDA4NTAwMDcgLyogSlNGYWtlWFJWaWV3
SW5pdC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0Zha2VYUlZp
ZXdJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNTJBMEJFNjUyN0MyMjdF
MDAwNDY2MTFFIC8qIEpTRmFrZVhSSm9pbnRTdGF0ZUluaXQuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBuYW1lID0gSlNGYWtlWFJKb2ludFN0YXRlSW5pdC5jcHA7IHBhdGggPSBK
U0Zha2VYUkpvaW50U3RhdGVJbml0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
NTJCMEQ0QkQxQzU3RkQxRTAwNzdDRTUzIC8qIFBsYXRmb3JtVmlldy5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBQbGF0Zm9ybVZpZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTJCMEQ0QkYxQzU3RkQ2NjAwNzdDRTUzIC8qIFZpZGVvRnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyQjBE
NEMxMUM1N0ZGOTEwMDc3Q0U1MyAvKiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFj
Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMTE4OSw2ICsyMTE5Myw4IEBACiAJ
CQkJRTE4RDgzRTMyNDNGNzFDRjAwOTI0N0Q2IC8qIEZha2VYUkJ1dHRvblN0YXRlSW5pdC5pZGwg
Ki8sCiAJCQkJRTE4RDgzRUEyNDNGNzFENDAwOTI0N0Q2IC8qIEZha2VYUklucHV0U291cmNlSW5p
dC5oICovLAogCQkJCUUxOEQ4M0RDMjQzRjcxQ0IwMDkyNDdENiAvKiBGYWtlWFJJbnB1dFNvdXJj
ZUluaXQuaWRsICovLAorCQkJCTUyNjNCRjIwMjdDMUI1MzgwMDg1MjUwQyAvKiBGYWtlWFJKb2lu
dFN0YXRlSW5pdC5oICovLAorCQkJCTUyNjNCRjIyMjdDMUI1M0IwMDg1MjUwQyAvKiBGYWtlWFJK
b2ludFN0YXRlSW5pdC5pZGwgKi8sCiAJCQkJRTE4RDgzRTUyNDNGNzFEMTAwOTI0N0Q2IC8qIEZh
a2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5oICovLAogCQkJCUUxOEQ4M0U2MjQzRjcxRDEwMDkyNDdE
NiAvKiBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuaWRsICovLAogCQkJCUUxOEQ4M0RGMjQzRjcx
Q0QwMDkyNDdENiAvKiBGYWtlWFJWaWV3SW5pdC5oICovLApAQCAtMjEyODQsNiArMjEyOTAsNyBA
QAogCQkJCTUyNzNDQ0FDMjU2NDU3NkMwMDg1MDAwNyAvKiBKU0Zha2VYUkJvdW5kc1BvaW50LmNw
cCAqLywKIAkJCQk1MjczQ0NBRDI1NjQ1NzZDMDA4NTAwMDcgLyogSlNGYWtlWFJCdXR0b25TdGF0
ZUluaXQuY3BwICovLAogCQkJCTUyNzNDQ0FBMjU2NDU3NkIwMDg1MDAwNyAvKiBKU0Zha2VYUklu
cHV0U291cmNlSW5pdC5jcHAgKi8sCisJCQkJNTJBMEJFNjUyN0MyMjdFMDAwNDY2MTFFIC8qIEpT
RmFrZVhSSm9pbnRTdGF0ZUluaXQuY3BwICovLAogCQkJCTUyNzNDQ0FFMjU2NDU3NkQwMDg1MDAw
NyAvKiBKU0Zha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdC5jcHAgKi8sCiAJCQkJNTI3M0NDQUYyNTY0
NTc2RTAwODUwMDA3IC8qIEpTRmFrZVhSVmlld0luaXQuY3BwICovLAogCQkJCTUxNzE0RUFFMUNG
NjY1NEEwMDQ3MjNDNCAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwICovLApAQCAtMzg4NzIsNiArMzg4
NzksNyBAQAogCQkJCTUyNzNDQ0IxMjU2NDU3NkYwMDg1MDAwNyAvKiBKU0Zha2VYUkJvdW5kc1Bv
aW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzNDQ0IyMjU2NDU3NkYwMDg1MDAwNyAvKiBK
U0Zha2VYUkJ1dHRvblN0YXRlSW5pdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MjczQ0NCMDI1
NjQ1NzZGMDA4NTAwMDcgLyogSlNGYWtlWFJJbnB1dFNvdXJjZUluaXQuY3BwIGluIFNvdXJjZXMg
Ki8sCisJCQkJNTJBMEJFNjYyN0MyMjdFMTAwNDY2MTFFIC8qIEpTRmFrZVhSSm9pbnRTdGF0ZUlu
aXQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNTI3M0NDQjMyNTY0NTc2RjAwODUwMDA3IC8qIEpT
RmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTUyNzNDQ0I0
MjU2NDU3NkYwMDg1MDAwNyAvKiBKU0Zha2VYUlZpZXdJbml0LmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCURFNUY4NjEyMUZBMjM5RTcwMDZEQjYzQSAvKiBKU0dDT2JzZXJ2YXRpb24uY3BwIGluIFNv
dXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9y
bVhSLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS94ci9QbGF0Zm9ybVhSLmgKaW5kZXggOTNk
MDNmOGFjOWEyMmUzNDdhOGIzZjY0MDNmMTJmODRiMTdhZWM1Zi4uNTRkMmViNzI4MmMzOTQ4NzU2
YmQ4NTJhYTk2YmUzMTNiMTc0OTdkNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0veHIvUGxhdGZvcm1YUi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3hyL1BsYXRm
b3JtWFIuaApAQCAtMTYzLDcgKzE2Myw3IEBAIGlubGluZSBTdHJpbmcgc2Vzc2lvbkZlYXR1cmVE
ZXNjcmlwdG9yKFNlc3Npb25GZWF0dXJlIHNlc3Npb25GZWF0dXJlKQogI2lmIEVOQUJMRShXRUJY
Ul9IQU5EUykKIAogZW51bSBjbGFzcyBIYW5kSm9pbnQgOiB1bnNpZ25lZCB7Ci0gICAgV3Jpc3Qs
CisgICAgV3Jpc3QgPSAwLAogICAgIFRodW1iTWV0YWNhcnBhbCwKICAgICBUaHVtYlBoYWxhbnhQ
cm94aW1hbCwKICAgICBUaHVtYlBoYWxhbnhEaXN0YWwsCkBAIC0xODcsNyArMTg3LDggQEAgZW51
bSBjbGFzcyBIYW5kSm9pbnQgOiB1bnNpZ25lZCB7CiAgICAgUGlua3lGaW5nZXJQaGFsYW54UHJv
eGltYWwsCiAgICAgUGlua3lGaW5nZXJQaGFsYW54SW50ZXJtZWRpYXRlLAogICAgIFBpbmt5Rmlu
Z2VyUGhhbGFueERpc3RhbCwKLSAgICBQaW5reUZpbmdlclRpcAorICAgIFBpbmt5RmluZ2VyVGlw
LAorICAgIENvdW50CiB9OwogCiAjZW5kaWYKQEAgLTMxMyw2ICszMTQsMTggQEAgcHVibGljOgog
ICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4gc3RhdGljIHN0ZDo6b3B0aW9uYWw8
SW5wdXRTb3VyY2VQb3NlPiBkZWNvZGUoRGVjb2RlciYpOwogICAgICAgICB9OwogCisjaWYgRU5B
QkxFKFdFQlhSX0hBTkRTKQorICAgICAgICBzdHJ1Y3QgSW5wdXRTb3VyY2VIYW5kSm9pbnQgewor
ICAgICAgICAgICAgSW5wdXRTb3VyY2VQb3NlIHBvc2U7CisgICAgICAgICAgICBmbG9hdCByYWRp
dXMgeyAwIH07CisKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+IHZvaWQgZW5j
b2RlKEVuY29kZXImKSBjb25zdDsKKyAgICAgICAgICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElucHV0U291cmNlSGFuZEpvaW50PiBkZWNvZGUoRGVjb2Rl
ciYpOworICAgICAgICB9OworCisgICAgICAgIHVzaW5nIEhhbmRKb2ludHNWZWN0b3IgPSBWZWN0
b3I8c3RkOjpvcHRpb25hbDxJbnB1dFNvdXJjZUhhbmRKb2ludD4+OworI2VuZGlmCisKICAgICAg
ICAgc3RydWN0IElucHV0U291cmNlIHsKICAgICAgICAgICAgIElucHV0U291cmNlSGFuZGxlIGhh
bmRsZSB7IDAgfTsKICAgICAgICAgICAgIFhSSGFuZGVkbmVzcyBoYW5kZW5lc3MgeyBYUkhhbmRl
ZG5lc3M6Ok5vbmUgfTsKQEAgLTMyMyw4ICszMzYsNyBAQCBwdWJsaWM6CiAgICAgICAgICAgICBW
ZWN0b3I8SW5wdXRTb3VyY2VCdXR0b24+IGJ1dHRvbnM7CiAgICAgICAgICAgICBWZWN0b3I8Zmxv
YXQ+IGF4ZXM7CiAjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQotICAgICAgICAgICAgLy8gRklYTUU6
IEFjdHVhbGx5IGhvbGQgc29tZSBoYW5kIGRhdGEuCi0gICAgICAgICAgICBib29sIHNpbXVsYXRl
SGFuZCB7IGZhbHNlIH07CisgICAgICAgICAgICBzdGQ6Om9wdGlvbmFsPEhhbmRKb2ludHNWZWN0
b3I+IGhhbmRKb2ludHM7CiAjZW5kaWYKIAogICAgICAgICAgICAgdGVtcGxhdGU8Y2xhc3MgRW5j
b2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0OwpAQCAtNjI0LDYgKzYzNiwyOSBAQCBz
dGQ6Om9wdGlvbmFsPERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZVBvc2U+IERldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZQogICAgIHJldHVybiBpbnB1dFNvdXJjZVBvc2U7CiB9CiAK
KyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCit0ZW1wbGF0ZTxjbGFzcyBFbmNvZGVyPgordm9pZCBE
ZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VIYW5kSm9pbnQ6OmVuY29kZShFbmNvZGVyJiBl
bmNvZGVyKSBjb25zdAoreworICAgIGVuY29kZXIgPDwgcG9zZTsKKyAgICBlbmNvZGVyIDw8IHJh
ZGl1czsKK30KKwordGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KK3N0ZDo6b3B0aW9uYWw8RGV2aWNl
OjpGcmFtZURhdGE6OklucHV0U291cmNlSGFuZEpvaW50PiBEZXZpY2U6OkZyYW1lRGF0YTo6SW5w
dXRTb3VyY2VIYW5kSm9pbnQ6OmRlY29kZShEZWNvZGVyJiBkZWNvZGVyKQoreworICAgIHN0ZDo6
b3B0aW9uYWw8SW5wdXRTb3VyY2VQb3NlPiBwb3NlOworICAgIGRlY29kZXIgPj4gcG9zZTsKKyAg
ICBpZiAoIXBvc2UpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3RkOjpvcHRp
b25hbDxmbG9hdD4gcmFkaXVzOworICAgIGRlY29kZXIgPj4gcmFkaXVzOworICAgIGlmICghcmFk
aXVzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHJldHVybiB7IHsgV1RGTW92
ZSgqcG9zZSksICpyYWRpdXMgfSB9OworfQorI2VuZGlmCisKIHRlbXBsYXRlPGNsYXNzIEVuY29k
ZXI+CiB2b2lkIERldmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZTo6ZW5jb2RlKEVuY29kZXIm
IGVuY29kZXIpIGNvbnN0CiB7CkBAIC02MzUsNiArNjcwLDkgQEAgdm9pZCBEZXZpY2U6OkZyYW1l
RGF0YTo6SW5wdXRTb3VyY2U6OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAogICAgIGVu
Y29kZXIgPDwgZ3JpcE9yaWdpbjsKICAgICBlbmNvZGVyIDw8IGJ1dHRvbnM7CiAgICAgZW5jb2Rl
ciA8PCBheGVzOworI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAgICBlbmNvZGVyIDw8IGhhbmRK
b2ludHM7CisjZW5kaWYKIH0KIAogdGVtcGxhdGU8Y2xhc3MgRGVjb2Rlcj4KQEAgLTY1Nyw2ICs2
OTUsMTAgQEAgc3RkOjpvcHRpb25hbDxEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2U+IERl
dmljZTo6RnJhbWVEYXRhOjpJbnB1dFNvdXJjZTo6ZGUKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNvdXJjZS5heGVzKSkKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZShzb3VyY2UuaGFuZEpvaW50cykpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisjZW5kaWYKICAgICByZXR1cm4gc291cmNlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5oIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9GYWtlWFJJbnB1dFNvdXJjZUluaXQuaAppbmRleCAxNjA3NjJkN2Q0NzdhYmY2NGQw
NTI0NjRmZWI5ZGQyMDU1MDlkYWFlLi45YTRhZTMzYTZiZDkwOGE3NGZhNzAzZjBmNTNhNGRiYWRm
ZTk1NjQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291
cmNlSW5pdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJ
bml0LmgKQEAgLTM0LDYgKzM0LDEwIEBACiAjaW5jbHVkZSAiWFJUYXJnZXRSYXlNb2RlLmgiCiAj
aW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQorI2luY2x1
ZGUgIkZha2VYUkpvaW50U3RhdGVJbml0LmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBzdHJ1Y3QgRmFrZVhSSW5wdXRTb3VyY2VJbml0IHsKQEAgLTQ2LDcgKzUwLDcgQEAgc3Ry
dWN0IEZha2VYUklucHV0U291cmNlSW5pdCB7CiAgICAgVmVjdG9yPEZha2VYUkJ1dHRvblN0YXRl
SW5pdD4gc3VwcG9ydGVkQnV0dG9uczsKICAgICBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgZ3Jp
cE9yaWdpbjsKICNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCi0gICAgYm9vbCBzaW11bGF0ZUhhbmQg
eyBmYWxzZSB9OworICAgIFZlY3RvcjxGYWtlWFJKb2ludFN0YXRlSW5pdD4gaGFuZEpvaW50czsK
ICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJJ
bnB1dFNvdXJjZUluaXQuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9GYWtlWFJJbnB1dFNv
dXJjZUluaXQuaWRsCmluZGV4IDEwMTY2NWNkZDNmODI4NjRlNDhjODVmMzBmMzM2NGRlNjdhMjU3
NWEuLmM3NTA2MmJlYzc3NDYyMjkzZTJjNWFjZjY3MjkyZDczNmIyM2UxMWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvRmFrZVhSSW5wdXRTb3VyY2VJbml0LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0Zha2VYUklucHV0U291cmNlSW5pdC5pZGwKQEAgLTQzLDUg
KzQzLDUgQEAKICAgICBGYWtlWFJSaWdpZFRyYW5zZm9ybUluaXQgZ3JpcE9yaWdpbjsKICAgICAv
LyBPcHRpb25hbCBoYW5kIGlucHV0LiBGb3Igbm93IHdlIGRvbid0IGNhcmUgYWJvdXQgdGhlIGFj
dHVhbAogICAgIC8vIGRhdGEuIFdlJ3JlIGp1c3QgY3JlYXRpbmcgdGhlIG9iamVjdCBmb3IgdGVz
dGluZy4KLSAgICBbQ29uZGl0aW9uYWw9V0VCWFJfSEFORFNdIGJvb2xlYW4gc2ltdWxhdGVIYW5k
ID0gZmFsc2U7CisgICAgW0NvbmRpdGlvbmFsPVdFQlhSX0hBTkRTXSBzZXF1ZW5jZTxGYWtlWFJK
b2ludFN0YXRlSW5pdD4gaGFuZEpvaW50czsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0Zha2VYUkpvaW50U3RhdGVJbml0LmggYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0Zha2VYUkpvaW50U3RhdGVJbml0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODFkMjM1MTUwYjc2ZGNkZDE1MTMz
MjJiZTUwZDYwNTgzYjk4YTNmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIyIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoV0VCWFJfSEFORFMpCisKKyNpbmNsdWRlICJG
YWtlWFJSaWdpZFRyYW5zZm9ybUluaXQuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitzdHJ1
Y3QgRmFrZVhSSm9pbnRTdGF0ZUluaXQgeworICAgIEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBw
b3NlOworICAgIGZsb2F0IHJhZGl1czsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIEVOQUJMRShXRUJYUl9IQU5EUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9GYWtlWFJKb2ludFN0YXRlSW5pdC5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGIwMTQyMDlmZjg0YzkzZmNl
YTFkNjYzMDU2MTI3OGRiMzY5OGI1NgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvRmFrZVhSSm9pbnRTdGF0ZUluaXQuaWRsCkBAIC0wLDAgKzEsMzMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjIgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisvLyBVc2VkIHRvIHVwZGF0ZSB0aGUgcG9zZSBhbmQgcmFkaXVzIG9mIGEgam9pbnQK
K1sKKyAgICBFbmFibGVkQnlTZXR0aW5nPVdlYlhSRW5hYmxlZCZXZWJYUkhhbmRJbnB1dE1vZHVs
ZUVuYWJsZWQsCisgICAgQ29uZGl0aW9uYWw9V0VCWFJfSEFORFMsCitdIGRpY3Rpb25hcnkgRmFr
ZVhSSm9pbnRTdGF0ZUluaXQgeworICAgIEZha2VYUlJpZ2lkVHJhbnNmb3JtSW5pdCBwb3NlOwor
ICAgIGZsb2F0IHJhZGl1cyA9IDAuMDsKK307CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5jcHAKaW5kZXggNTIyNGQyOGUwNzI2M2Q4OGMz
YmRhYzVkYmQ4YmFkZjUwMDQ5ZDlkMy4uMjZkNDM1YTMzODIwNmEzY2FhNjQ2ZjVlOTUwNTMxMGYw
NDg4OWY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1
dENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5w
dXRDb250cm9sbGVyLmNwcApAQCAtMjgsNiArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFdFQlhSKQog
I2luY2x1ZGUgIldlYkZha2VYUkRldmljZS5oIgorI2luY2x1ZGUgIlhSSGFuZEpvaW50LmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMzYsNiArMzcsMTEgQEAgdXNpbmcgSW5wdXRTb3Vy
Y2VCdXR0b24gPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SW5wdXRTb3VyY2VCdXR0
b247CiB1c2luZyBJbnB1dFNvdXJjZVBvc2UgPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0
YTo6SW5wdXRTb3VyY2VQb3NlOwogdXNpbmcgQnV0dG9uVHlwZSA9IEZha2VYUkJ1dHRvblN0YXRl
SW5pdDo6VHlwZTsKIAorI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKK3VzaW5nIEhhbmRKb2ludHNW
ZWN0b3IgPSBQbGF0Zm9ybVhSOjpEZXZpY2U6OkZyYW1lRGF0YTo6SGFuZEpvaW50c1ZlY3RvcjsK
K3VzaW5nIElucHV0U291cmNlSGFuZEpvaW50ID0gUGxhdGZvcm1YUjo6RGV2aWNlOjpGcmFtZURh
dGE6OklucHV0U291cmNlSGFuZEpvaW50OworI2VuZGlmCisKIC8vIGh0dHBzOi8vaW1tZXJzaXZl
LXdlYi5naXRodWIuaW8vd2VieHItZ2FtZXBhZHMtbW9kdWxlLyN4ci1zdGFuZGFyZC1nYW1lcGFk
LW1hcHBpbmcKIGNvbnN0ZXhwciBzdGQ6OmFycmF5PEJ1dHRvblR5cGUsIDU+IFhSX1NUQU5EQVJE
X0JVVFRPTlMgPSB7IEJ1dHRvblR5cGU6OkdyaXAsIEJ1dHRvblR5cGU6OlRvdWNocGFkLCBCdXR0
b25UeXBlOjpUaHVtYnN0aWNrLCBCdXR0b25UeXBlOjpPcHRpb25hbEJ1dHRvbiwgQnV0dG9uVHlw
ZTo6T3B0aW9uYWxUaHVtYnN0aWNrIH07CiAKQEAgLTUxLDEzICs1NywxMyBAQCBXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OldlYkZha2VYUklucHV0Q29udHJvbGxlcihQbGF0Zm9ybVhSOjpJbnB1
dFNvdXJjZUhhbmRsZQogICAgICwgbV9wcm9maWxlcyhpbml0LnByb2ZpbGVzKQogICAgICwgbV9w
cmltYXJ5U2VsZWN0ZWQoaW5pdC5zZWxlY3Rpb25TdGFydGVkKQogICAgICwgbV9zaW11bGF0ZVNl
bGVjdChpbml0LnNlbGVjdGlvbkNsaWNrZWQpCi0jaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQotICAg
ICwgbV9zaW11bGF0ZUhhbmQoaW5pdC5zaW11bGF0ZUhhbmQpCi0jZW5kaWYKIHsKICAgICBzZXRQ
b2ludGVyT3JpZ2luKGluaXQucG9pbnRlck9yaWdpbiwgZmFsc2UpOwogICAgIHNldEdyaXBPcmln
aW4oaW5pdC5ncmlwT3JpZ2luLCBmYWxzZSk7CiAgICAgc2V0U3VwcG9ydGVkQnV0dG9ucyhpbml0
LnN1cHBvcnRlZEJ1dHRvbnMpOworI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKKyAgICB1cGRhdGVI
YW5kSm9pbnRzKGluaXQuaGFuZEpvaW50cyk7CisjZW5kaWYKIH0KIAogdm9pZCBXZWJGYWtlWFJJ
bnB1dENvbnRyb2xsZXI6OnNldEdyaXBPcmlnaW4oRmFrZVhSUmlnaWRUcmFuc2Zvcm1Jbml0IGdy
aXBPcmlnaW4sIGJvb2wgZW11bGF0ZWRQb3NpdGlvbikKQEAgLTExMCw3ICsxMTYsNyBAQCBJbnB1
dFNvdXJjZSBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6OmdldEZyYW1lRGF0YSgpCiAgICAgc3Rh
dGUucG9pbnRlck9yaWdpbiA9IG1fcG9pbnRlck9yaWdpbjsKICAgICBzdGF0ZS5ncmlwT3JpZ2lu
ID0gbV9ncmlwT3JpZ2luOwogI2lmIEVOQUJMRShXRUJYUl9IQU5EUykKLSAgICBzdGF0ZS5zaW11
bGF0ZUhhbmQgPSBtX3NpbXVsYXRlSGFuZDsKKyAgICBzdGF0ZS5oYW5kSm9pbnRzID0gbV9oYW5k
Sm9pbnRzOwogI2VuZGlmCiAKICAgICBpZiAobV9zaW11bGF0ZVNlbGVjdCkKQEAgLTE4Miw2ICsx
ODgsMjggQEAgV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyOjpCdXR0b25PclBsYWNlaG9sZGVyIFdl
YkZha2VYUklucHV0Q29udHJvbGxlcjo6Z2V0QnV0dG8KICAgICByZXR1cm4gcmVzdWx0OwogfQog
CisjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQordm9pZCBXZWJGYWtlWFJJbnB1dENvbnRyb2xsZXI6
OnVwZGF0ZUhhbmRKb2ludHMoY29uc3QgVmVjdG9yPEZha2VYUkpvaW50U3RhdGVJbml0PiYgaGFu
ZEpvaW50cykKK3sKKyAgICBpZiAoaGFuZEpvaW50cy5pc0VtcHR5KCkgfHwgaGFuZEpvaW50cy5z
aXplKCkgIT0gc3RhdGljX2Nhc3Q8c2l6ZV90PihYUkhhbmRKb2ludDo6Q291bnQpKSB7CisgICAg
ICAgIG1faGFuZEpvaW50cyA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgIEhhbmRKb2ludHNWZWN0b3IgdXBkYXRlZEpvaW50czsKKyAgICBmb3IgKGF1dG8gaGFu
ZEpvaW50IDogaGFuZEpvaW50cykgeworICAgICAgICBhdXRvIHRyYW5zZm9ybSA9IFdlYkZha2VY
UkRldmljZTo6cGFyc2VSaWdpZFRyYW5zZm9ybShoYW5kSm9pbnQucG9zZSk7CisgICAgICAgIGlm
ICh0cmFuc2Zvcm0uaGFzRXhjZXB0aW9uKCkpIHsKKyAgICAgICAgICAgIHVwZGF0ZWRKb2ludHMu
YXBwZW5kKHN0ZDo6bnVsbG9wdCk7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfQor
ICAgICAgICAKKyAgICAgICAgdXBkYXRlZEpvaW50cy5hcHBlbmQoSW5wdXRTb3VyY2VIYW5kSm9p
bnQgeyBJbnB1dFNvdXJjZVBvc2UgeyB0cmFuc2Zvcm0ucmVsZWFzZVJldHVyblZhbHVlKCksIGZh
bHNlIH0sIGhhbmRKb2ludC5yYWRpdXMgfSk7CisgICAgfQorICAgIG1faGFuZEpvaW50cyA9IFdU
Rk1vdmUodXBkYXRlZEpvaW50cyk7Cit9CisjZW5kaWYgLy8gRU5BQkxFKFdFQlhSX0hBTkRTKQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoV0VCWFIpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5o
IGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtlWFJJbnB1dENvbnRyb2xsZXIuaAppbmRl
eCA0ZDY5MGZhNzNlNTFlZDI2NWI5OTY5OTlhYWY3Yzg3NmQ1OTdhYzNhLi5jYTIwYTY5NDI5NmVl
ZWMyODlmNzI2NWQ2NmY5M2Y1NTk4ODdlYmJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVyLmgKQEAgLTM3LDYgKzM3LDEwIEBACiAjaW5j
bHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBF
TkFCTEUoV0VCWFJfSEFORFMpCisjaW5jbHVkZSAiRmFrZVhSSm9pbnRTdGF0ZUluaXQuaCIKKyNl
bmRpZgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIFdlYkZha2VYUklucHV0Q29udHJv
bGxlciBmaW5hbCA6IHB1YmxpYyBSZWZDb3VudGVkPFdlYkZha2VYUklucHV0Q29udHJvbGxlcj4g
ewpAQCAtNTcsNiArNjEsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2V0U3VwcG9ydGVkQnV0dG9u
cyhjb25zdCBWZWN0b3I8RmFrZVhSQnV0dG9uU3RhdGVJbml0PiYpOwogICAgIHZvaWQgdXBkYXRl
QnV0dG9uU3RhdGUoY29uc3QgRmFrZVhSQnV0dG9uU3RhdGVJbml0Jik7CiAgICAgYm9vbCBpc0Nv
bm5lY3RlZCgpIGNvbnN0IHsgcmV0dXJuIG1fY29ubmVjdGVkOyB9CisgICAgCisjaWYgRU5BQkxF
KFdFQlhSX0hBTkRTKQorICAgIHZvaWQgdXBkYXRlSGFuZEpvaW50cyhjb25zdCBWZWN0b3I8RmFr
ZVhSSm9pbnRTdGF0ZUluaXQ+Jik7CisjZW5kaWYKIAogICAgIFBsYXRmb3JtWFI6OkRldmljZTo6
RnJhbWVEYXRhOjpJbnB1dFNvdXJjZSBnZXRGcmFtZURhdGEoKTsKIApAQCAtODAsNyArODgsNyBA
QCBwcml2YXRlOgogICAgIGJvb2wgbV9wcmltYXJ5U2VsZWN0ZWQgeyBmYWxzZSB9OwogICAgIGJv
b2wgbV9zaW11bGF0ZVNlbGVjdCB7IGZhbHNlIH07CiAjaWYgRU5BQkxFKFdFQlhSX0hBTkRTKQot
ICAgIGJvb2wgbV9zaW11bGF0ZUhhbmQgeyBmYWxzZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8UGxh
dGZvcm1YUjo6RGV2aWNlOjpGcmFtZURhdGE6OkhhbmRKb2ludHNWZWN0b3I+IG1faGFuZEpvaW50
czsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJG
YWtlWFJJbnB1dENvbnRyb2xsZXIuaWRsIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJGYWtl
WFJJbnB1dENvbnRyb2xsZXIuaWRsCmluZGV4IGE5OWEyNjFlODc3ZjgwZWYwY2I3ZTg4YTVmYTU4
YWEyMTdmMjJmNDUuLmQ5YzU4Nzk1ZDA0ZmNjYjdiYzhjNGMwMGE0MmEzZWE3Yjk4YjAyYjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViRmFrZVhSSW5wdXRDb250cm9sbGVy
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYkZha2VYUklucHV0Q29udHJvbGxl
ci5pZGwKQEAgLTczLDQgKzczLDYgQEAKICAgICAvLyBVc2VkIHRvIHVwZGF0ZSB0aGUgc3RhdGUg
b2YgYSBidXR0b24gY3VycmVudGx5IHN1cHBvcnRlZCBieSB0aGUgaW5wdXQgc291cmNlCiAgICAg
Ly8gV2lsbCBub3QgYWRkIHN1cHBvcnQgZm9yIHRoYXQgYnV0dG9uIGlmIGl0IGlzIG5vdCBjdXJy
ZW50bHkgc3VwcG9ydGVkLgogICAgIHVuZGVmaW5lZCB1cGRhdGVCdXR0b25TdGF0ZShGYWtlWFJC
dXR0b25TdGF0ZUluaXQgYnV0dG9uU3RhdGUpOworICAgIAorICAgIFtDb25kaXRpb25hbD1XRUJY
Ul9IQU5EU10gdW5kZWZpbmVkIHVwZGF0ZUhhbmRKb2ludHMoc2VxdWVuY2U8RmFrZVhSSm9pbnRT
dGF0ZUluaXQ+IGhhbmRKb2ludHMpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rl
c3RpbmcvV2ViWFJUZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmNw
cAppbmRleCA1NDdjZGJjYzdmMTA3NTVlN2RjNjJiZjdmMWE0MDMzN2Q1MWZlNzM4Li4zZDY2MmYx
MGM0MzIyNDYwNjgzNjc2MWJmYTM5ODQ0YmQ1MjNiMmQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS90ZXN0aW5nL1dlYlhSVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9X
ZWJYUlRlc3QuY3BwCkBAIC0zOSw2ICszOSwxOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdl
YlhSVGVzdDo6fldlYlhSVGVzdCgpID0gZGVmYXVsdDsKIAorc3RhdGljIFBsYXRmb3JtWFI6OkRl
dmljZTo6RmVhdHVyZUxpc3QgcGFyc2VGZWF0dXJlcyhjb25zdCBWZWN0b3I8SlNDOjpKU1ZhbHVl
PiYgZmVhdHVyZUxpc3QsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQpCit7CisgICAg
UGxhdGZvcm1YUjo6RGV2aWNlOjpGZWF0dXJlTGlzdCBmZWF0dXJlczsKKyAgICBpZiAoYXV0byog
Z2xvYmFsT2JqZWN0ID0gY29udGV4dC5nbG9iYWxPYmplY3QoKSkgeworICAgICAgICBmb3IgKGF1
dG8mIGZlYXR1cmUgOiBmZWF0dXJlTGlzdCkgeworICAgICAgICAgICAgYXV0byBmZWF0dXJlU3Ry
aW5nID0gZmVhdHVyZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgaWYg
KGF1dG8gc2Vzc2lvbkZlYXR1cmUgPSBQbGF0Zm9ybVhSOjpwYXJzZVNlc3Npb25GZWF0dXJlRGVz
Y3JpcHRvcihmZWF0dXJlU3RyaW5nKSkKKyAgICAgICAgICAgICAgICBmZWF0dXJlcy5hcHBlbmQo
KnNlc3Npb25GZWF0dXJlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gZmVhdHVyZXM7
Cit9CisKIHZvaWQgV2ViWFJUZXN0OjpzaW11bGF0ZURldmljZUNvbm5lY3Rpb24oU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmFrZVhSRGV2aWNlSW5pdCYgaW5pdCwgV2Vi
RmFrZVhSRGV2aWNlUHJvbWlzZSYmIHByb21pc2UpCiB7CiAgICAgLy8gaHR0cHM6Ly9pbW1lcnNp
dmUtd2ViLmdpdGh1Yi5pby93ZWJ4ci10ZXN0LWFwaS8jZG9tLXhydGVzdC1zaW11bGF0ZWRldmlj
ZWNvbm5lY3Rpb24KQEAgLTQ4LDE2ICs2MSwxMiBAQCB2b2lkIFdlYlhSVGVzdDo6c2ltdWxhdGVE
ZXZpY2VDb25uZWN0aW9uKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0CiAK
ICAgICAgICAgZGV2aWNlLT5zZXRWaWV3cyhpbml0LnZpZXdzKTsKIAotICAgICAgICBQbGF0Zm9y
bVhSOjpEZXZpY2U6OkZlYXR1cmVMaXN0IGZlYXR1cmVzOwotICAgICAgICBpZiAoaW5pdC5zdXBw
b3J0ZWRGZWF0dXJlcykgewotICAgICAgICAgICAgaWYgKGF1dG8qIGdsb2JhbE9iamVjdCA9IGNv
bnRleHQuZ2xvYmFsT2JqZWN0KCkpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGF1dG8mIGZlYXR1
cmUgOiBpbml0LnN1cHBvcnRlZEZlYXR1cmVzLnZhbHVlKCkpIHsKLSAgICAgICAgICAgICAgICAg
ICAgYXV0byBmZWF0dXJlU3RyaW5nID0gZmVhdHVyZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3Qp
OwotICAgICAgICAgICAgICAgICAgICBpZiAoYXV0byBzZXNzaW9uRmVhdHVyZSA9IFBsYXRmb3Jt
WFI6OnBhcnNlU2Vzc2lvbkZlYXR1cmVEZXNjcmlwdG9yKGZlYXR1cmVTdHJpbmcpKQotICAgICAg
ICAgICAgICAgICAgICAgICAgZmVhdHVyZXMuYXBwZW5kKCpzZXNzaW9uRmVhdHVyZSk7Ci0gICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIFBsYXRmb3Jt
WFI6OkRldmljZTo6RmVhdHVyZUxpc3Qgc3VwcG9ydGVkRmVhdHVyZXM7CisgICAgICAgIGlmIChp
bml0LnN1cHBvcnRlZEZlYXR1cmVzKQorICAgICAgICAgICAgc3VwcG9ydGVkRmVhdHVyZXMgPSBw
YXJzZUZlYXR1cmVzKGluaXQuc3VwcG9ydGVkRmVhdHVyZXMudmFsdWUoKSwgY29udGV4dCk7Cisg
ICAgICAgIFBsYXRmb3JtWFI6OkRldmljZTo6RmVhdHVyZUxpc3QgZW5hYmxlZEZlYXR1cmVzOwor
ICAgICAgICBpZiAoaW5pdC5lbmFibGVkRmVhdHVyZXMpCisgICAgICAgICAgICBlbmFibGVkRmVh
dHVyZXMgPSBwYXJzZUZlYXR1cmVzKGluaXQuZW5hYmxlZEZlYXR1cmVzLnZhbHVlKCksIGNvbnRl
eHQpOwogCiAgICAgICAgIGlmIChpbml0LmJvdW5kc0Nvb3JkaW5hdGVzKSB7CiAgICAgICAgICAg
ICBpZiAoaW5pdC5ib3VuZHNDb29yZGluYXRlcy0+c2l6ZSgpIDwgMykgewpAQCAtODQsOCArOTMs
MTAgQEAgdm9pZCBXZWJYUlRlc3Q6OnNpbXVsYXRlRGV2aWNlQ29ubmVjdGlvbihTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdAogICAgICAgICAgICAgICAgIHN1cHBvcnRlZE1v
ZGVzLmFwcGVuZChYUlNlc3Npb25Nb2RlOjpJbW1lcnNpdmVWcik7CiAgICAgICAgIH0KIAotICAg
ICAgICBmb3IgKGF1dG8mIG1vZGUgOiBzdXBwb3J0ZWRNb2RlcykKLSAgICAgICAgICAgIHNpbXVs
YXRlZERldmljZS5zZXRTdXBwb3J0ZWRGZWF0dXJlcyhtb2RlLCBmZWF0dXJlcyk7CisgICAgICAg
IGZvciAoYXV0byYgbW9kZSA6IHN1cHBvcnRlZE1vZGVzKSB7CisgICAgICAgICAgICBzaW11bGF0
ZWREZXZpY2Uuc2V0U3VwcG9ydGVkRmVhdHVyZXMobW9kZSwgc3VwcG9ydGVkRmVhdHVyZXMpOwor
ICAgICAgICAgICAgc2ltdWxhdGVkRGV2aWNlLnNldEVuYWJsZWRGZWF0dXJlcyhtb2RlLCBlbmFi
bGVkRmVhdHVyZXMpOworICAgICAgICB9CiAKICAgICAgICAgbV9jb250ZXh0LT5yZWdpc3RlclNp
bXVsYXRlZFhSRGV2aWNlRm9yVGVzdGluZyhzaW11bGF0ZWREZXZpY2UpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5oIGIvU291cmNlL1dlYkNvcmUvdGVz
dGluZy9XZWJYUlRlc3QuaAppbmRleCBiMWNjM2RiM2FlNGYzMDlkMThlODA4ZmQ3NzEyYmExYjIy
YjcwNzUxLi42MDI5NzU1YzlhYTc4MGI3NWUyM2ZhNmMxYTYxNWIxZWY2NGJjMjJmIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvV2ViWFJUZXN0LmgKQEAgLTQ2LDYgKzQ2LDcgQEAgcHVibGljOgogICAgICAg
ICBWZWN0b3I8RmFrZVhSVmlld0luaXQ+IHZpZXdzOwogCiAgICAgICAgIHN0ZDo6b3B0aW9uYWw8
VmVjdG9yPEpTQzo6SlNWYWx1ZT4+IHN1cHBvcnRlZEZlYXR1cmVzOworICAgICAgICBzdGQ6Om9w
dGlvbmFsPFZlY3RvcjxKU0M6OkpTVmFsdWU+PiBlbmFibGVkRmVhdHVyZXM7CiAKICAgICAgICAg
c3RkOjpvcHRpb25hbDxWZWN0b3I8RmFrZVhSQm91bmRzUG9pbnQ+PiBib3VuZHNDb29yZGluYXRl
czsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaWRsIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9XZWJYUlRlc3QuaWRsCmluZGV4IDhkMGIwNmIwM2FlNjdh
YTY1NGUyZWFjMTc5ODE5ODYyOTg5NmY5YmMuLmU2NjczOWI2OWNlYjgzMmU3Y2Y4YjVlNTdlOTFi
NmM5OTZkN2RmMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvV2ViWFJUZXN0
LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL1dlYlhSVGVzdC5pZGwKQEAgLTYxLDYg
KzYxLDEwIEBACiAgICAgLy8gTk9URTogVGhpcyBpcyBtZWFudCB0byBlbXVsYXRlIGhhcmR3YXJl
IHN1cHBvcnQsIG5vdCB3aGV0aGVyIGEgZmVhdHVyZSBpcwogICAgIC8vIGN1cnJlbnRseSBhdmFp
bGFibGUgKGUuZy4gYm91bmRzIG5vdCBiZWluZyB0cmFja2VkIHBlciBiZWxvdykKICAgICBzZXF1
ZW5jZTxhbnk+IHN1cHBvcnRlZEZlYXR1cmVzOworICAgIAorICAgIC8vIFRoZSBsaXN0IG9mIGZl
YXR1cmVzIHRoYXQgYXJlIGF1dG9tYXRpY2FsbHkgZW5hYmxlZCBhbmQgZG8KKyAgICAvLyBub3Qg
bmVlZCBmdXJ0aGVyIGV4cGxpY2l0IGNvbnNlbnQuCisgICAgc2VxdWVuY2U8YW55PiBlbmFibGVk
RmVhdHVyZXM7CiAKICAgICAvLyBUaGUgYm91bmRzIGNvb3JkaW5hdGVzLiBJZiBlbXB0eSwgbm8g
Ym91bmRlZCByZWZlcmVuY2Ugc3BhY2UgaXMgY3VycmVudGx5IHRyYWNrZWQuCiAgICAgLy8gSWYg
bm90LCBtdXN0IGhhdmUgYXQgbGVhc3QgdGhyZWUgZWxlbWVudHMuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9YUi9YUkRldmljZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1hSL1hSRGV2aWNlUHJveHkuY3BwCmluZGV4IDgwZjA4NTMyMTBjNmQ0YmMyNDJkYTNhYWU4
ZmRlMGIwYjFkNmZmN2UuLjBmYTc2MGI5MmI4NjcyZTQ5NDg3YzU1ODA2N2FmZjJmM2FkM2M4MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1hSL1hSRGV2aWNlUHJveHkuY3BwCkBAIC02OCw4ICs2
OCwyMSBAQCB2b2lkIFhSRGV2aWNlUHJveHk6OmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmlu
ZyhQbGF0Zm9ybVhSOjpTZXNzaW9uTW9kZSBzZXNzaQogICAgIGlmIChzZXNzaW9uTW9kZSAhPSBQ
bGF0Zm9ybVhSOjpTZXNzaW9uTW9kZTo6SW1tZXJzaXZlVnIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX3hyU3lzdGVtKQotICAgICAgICBtX3hyU3lzdGVtLT5pbml0aWFsaXplVHJhY2tp
bmdBbmRSZW5kZXJpbmcoKTsKKyAgICBpZiAoIW1feHJTeXN0ZW0pCisgICAgICAgIHJldHVybjsK
KworICAgIG1feHJTeXN0ZW0tPmluaXRpYWxpemVUcmFja2luZ0FuZFJlbmRlcmluZygpOworCisg
ICAgLy8gVGhpcyBpcyBjYWxsZWQgZnJvbSB0aGUgY29uc3RydWN0b3Igb2YgV2ViWFJTZXNzaW9u
LiBTaW5jZSBzZXNzaW9uRGlkSW5pdGlhbGl6ZUlucHV0U291cmNlcygpCisgICAgLy8gZW5kcyB1
cCBjYWxsaW5nIHF1ZXVlVGFza0tlZXBpbmdPYmplY3RBbGl2ZSgpIHdoaWNoIHJlZnMgdGhlIFdl
YlhSU2Vzc2lvbiBvYmplY3QsIHdlCisgICAgLy8gc2hvdWxkIGRlbGF5IHRoaXMgY2FsbCBhZnRl
ciB0aGUgV2ViWFJTZXNzaW9uIGhhcyBmaW5pc2hlZCBjb25zdHJ1Y3Rpb24uCisgICAgY2FsbE9u
TWFpblJ1bkxvb3AoW3RoaXMsIHdlYWtUaGlzID0gV2Vha1B0ciB7ICp0aGlzIH1dKCkgeworICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGlmICh0
cmFja2luZ0FuZFJlbmRlcmluZ0NsaWVudCgpKQorICAgICAgICAgICAgdHJhY2tpbmdBbmRSZW5k
ZXJpbmdDbGllbnQoKS0+c2Vzc2lvbkRpZEluaXRpYWxpemVJbnB1dFNvdXJjZXMoeyB9KTsKKyAg
ICB9KTsgICAgCiB9CiAKIHZvaWQgWFJEZXZpY2VQcm94eTo6c2h1dERvd25UcmFja2luZ0FuZFJl
bmRlcmluZygpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggMGUxNjRmZWU5YzQyY2RhMDNjOWE4YzUyOWY1MTI3MjcwNmFhYTgx
My4uYjY1Zjk0YTI1MGU5YTIyMGQ3MTMwNmNiYjZhZDFlOWJjOTI1ZTU4OCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDMzIEBACisyMDIyLTA0LTA3ICBBZGEgQ2hhbiAgPGFkYWNoYW5AYXBwbGUuY29tPgorCisg
ICAgICAgIFtXZWJYUl0gSW1wbGVtZW50IHRoZSBXZWJYUkZyYW1lIG1ldGhvZHMgZm9yIGdldHRp
bmcgam9pbnRzJyBwb3NlcyBhbmQgcmFkaWkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIzODk2OAorCisgICAgICAgIFJldmlld2VkIGJ5IERlYW4gSmFj
a3Nvbi4KKworICAgICAgICBBZGQgbW9yZSBjb25zdGFudHMgZm9yIGEgdmFsaWQgam9pbnQgdmFs
dWUgYW5kIGRldmljZSBpbml0IGRpY3Rpb25hcnkKKyAgICAgICAgdGhhdCByZXByZXNlbnRzIGEg
ZGV2aWNlIHdpdGggaGFuZCB0cmFja2luZyBzdXBwb3J0IGVuYWJsZWQuCisKKyAgICAgICAgQWRk
IG5ldyB0ZXN0cyBmb3IgdGVzdGluZyBoYW5kIGlucHV0IHJlbGF0ZWQgbWV0aG9kcyBpbiBYUkZy
YW1lLgorCisgICAgICAgICogaHR0cC93cHQvd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29u
c3RhbnRzX3NpbmdsZV92aWV3LmpzOgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhyL3hyRnJhbWVf
ZmlsbEpvaW50UmFkaWktZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93
ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAv
d3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9p
bnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93
cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy5odG1sOiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pvaW50X3Bvc2UtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQ
b3Nlc19taXNzaW5nX2pvaW50X3Bvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
d2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sOiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bv
c2UtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC93ZWJ4ci94ckZyYW1l
X2dldEpvaW50UG9zZV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbDogQWRkZWQuCisgICAgICAgICog
aHR0cC93cHQvd2VieHIveHJIYW5kLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvd2VieHIveHJIYW5kLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3dlYnhy
L3hySGFuZElucHV0X2djLmh0bWw6CisgICAgICAgICogcGxhdGZvcm0vd2luL1Rlc3RFeHBlY3Rh
dGlvbnM6IFNraXAgb3RoZXIgZm9sZGVycyB3aXRoIFdlYlhSIHRlc3RzCisKIDIwMjItMDQtMDYg
IEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBleHBlY3RlZCwg
YWN0dWFsIGxpbmtzIGZvciB2YXJpYW50LWJhc2VkIGltcG9ydGVkIHdwdCB0ZXN0cwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIvcmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29u
c3RhbnRzX3NpbmdsZV92aWV3LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIvcmVzb3Vy
Y2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92aWV3LmpzCmluZGV4IGNiOGJkZmQ5OWYx
YTBiMTIyMjFlODA0YTg1NDE1MDM2MGY2NzY2MzYuLmEwOWRjYzE0Mjg2YjE5ZjEyYTk3NDQ0ZjM5
NzJkZGE2N2YyODJhNjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3Jl
c291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50c19zaW5nbGVfdmlldy5qcworKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xl
X3ZpZXcuanMKQEAgLTQ3LDYgKzQ3LDc0IEBAIGNvbnN0IFZBTElEX0dSSVBfVFJBTlNGT1JNID0g
ewogICAgIG9yaWVudGF0aW9uOiBbMCwgMCwgMCwgMV0KIH07CiAKK2NvbnN0IEpPSU5UX0NPVU5U
ID0gMjU7Citjb25zdCBURVNUX0hBTkRfSk9JTlRfUkFESVVTID0gMC4wMjsKKworY29uc3QgVkFM
SURfSEFORF9KT0lOVCA9IHsKKyAgICBwb3NlOiBWQUxJRF9QT1NFX1RSQU5TRk9STSwKKyAgICBy
YWRpdXM6IFRFU1RfSEFORF9KT0lOVF9SQURJVVMKK307CisKK2NvbnN0IFZBTElEX0hBTkRfSk9J
TlRTID0gWworICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAg
ICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFO
RF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisg
ICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hB
TkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAor
ICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9I
QU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwK
KyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURf
SEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQs
CisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElE
X0hBTkRfSk9JTlQKK107CisKK2NvbnN0IElOVkFMSURfSEFORF9KT0lOVCA9IHsKKworfTsKKwor
Y29uc3QgSEFORF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCA9IFsKKyAgICBWQUxJRF9IQU5EX0pP
SU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBW
QUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9K
T0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAg
VkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRf
Sk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAg
IFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBWQUxJRF9IQU5E
X0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFORF9KT0lOVCwKKyAg
ICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisgICAgVkFMSURfSEFO
RF9KT0lOVCwKKyAgICBWQUxJRF9IQU5EX0pPSU5ULAorICAgIFZBTElEX0hBTkRfSk9JTlQsCisg
ICAgVkFMSURfSEFORF9KT0lOVCwKKyAgICBJTlZBTElEX0hBTkRfSk9JTlQKK107CisKIC8vIEEg
dmFsaWQgaW5wdXQgcG9pbnRlciBvZmZzZXQgZm9yICB3aGVuIHdlIGRvbid0IGNhcmUgYWJvdXQg
c3BlY2lmaWMgdmFsdWVzCiBjb25zdCBWQUxJRF9QT0lOVEVSID0gWzEsIDAsIDAsIDAsCiAgICAg
ICAgICAgICAgICAgICAgICAgIDAsIDEsIDAsIDAsCkBAIC0xNjAsNiArMjI4LDE3IEBAIGNvbnN0
IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRSA9IHsKICAgICBpbnRlcmFjdGlvbk1vZGU6ICJ3b3Js
ZC1zcGFjZSIKIH07CiAKK2NvbnN0IFRSQUNLRURfSU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRf
VFJBQ0tJTkcgPSB7CisgICAgc3VwcG9ydHNJbW1lcnNpdmU6IHRydWUsCisgICAgc3VwcG9ydGVk
TW9kZXM6IFsgImlubGluZSIsICJpbW1lcnNpdmUtdnIiXSwKKyAgICB2aWV3czogVkFMSURfVklF
V1MsCisgICAgdmlld2VyT3JpZ2luOiBJREVOVElUWV9UUkFOU0ZPUk0sCisgICAgc3VwcG9ydGVk
RmVhdHVyZXM6IEFMTF9GRUFUVVJFUywKKyAgICBlbmFibGVkRmVhdHVyZXM6IFsgImhhbmQtdHJh
Y2tpbmciIF0sCisgICAgZW52aXJvbm1lbnRCbGVuZE1vZGU6ICJvcGFxdWUiLAorICAgIGludGVy
YWN0aW9uTW9kZTogIndvcmxkLXNwYWNlIgorfTsKKwogY29uc3QgVFJBQ0tFRF9JTU1FUlNJVkVf
REVWSUNFX05PX0hBTkRfVFJBQ0tJTkcgPSB7CiAgICAgc3VwcG9ydHNJbW1lcnNpdmU6IHRydWUs
CiAgICAgc3VwcG9ydGVkTW9kZXM6IFsgImlubGluZSIsICJpbW1lcnNpdmUtdnIiXSwKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkt
ZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9p
bnRSYWRpaS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDAyYmIwMWJiZmRiZTc1NDM5OTY0OWI5
YTk5N2QzM2NhMGQ0NWVlOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWktZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBA
QAorCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSAtIHdlYmdsCitQQVNTIFRlc3Qg
WFJGcmFtZS5maWxsSm9pbnRSYWRpaSAtIHdlYmdsMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpLmh0bWwKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MzQ1YWEyNThjZGM2MjAwYzAxZjEzODZkNjAxNGE2ZGQ3MTM3YTE4YQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWkuaHRt
bApAQCAtMCwwICsxLDUyIEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2Vi
eHJfdXRpbC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3Rf
Y29uc3RhbnRzX3NpbmdsZV92aWV3LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi93
ZWJ4ci9yZXNvdXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKworPHNjcmlw
dD4KK2xldCB0ZXN0TmFtZSA9ICJUZXN0IFhSRnJhbWUuZmlsbEpvaW50UmFkaWkiOworCitsZXQg
ZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5E
X1RSQUNLSU5HOworCitsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURl
dmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJj
ZSA9IGZha2VEZXZpY2VDb250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsK
KyAgICBoYW5kZWRuZXNzOiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9p
bnRlciIsCisgICAgcG9pbnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAg
cHJvZmlsZXM6IFtdLAorICAgIGhhbmRKb2ludHM6IFZBTElEX0hBTkRfSk9JTlRTLAorICB9KTsK
KworICByZXR1cm4gc2Vzc2lvbi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAu
dGhlbigocmVmZXJlbmNlU3BhY2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAg
ICAgIGZ1bmN0aW9uIG9uRnJhbWUodGltZSwgeHJGcmFtZSkgeworICAgICAgICBhc3NlcnRfbm90
X2VxdWFscyhzZXNzaW9uLmlucHV0U291cmNlcy5sZW5ndGgsIDApOworICAgICAgICBsZXQgaGFu
ZCA9IHNlc3Npb24uaW5wdXRTb3VyY2VzWzBdLmhhbmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVh
bHMoaGFuZCwgbnVsbCk7CisKKyAgICAgICAgYXNzZXJ0X3Rocm93c19qcyhUeXBlRXJyb3IsIGZ1
bmN0aW9uKCkgeworICAgICAgICAgICAgbGV0IHJhZGlpQXJyYXlXaXRoV3JvbmdTaXplID0gbmV3
IEZsb2F0MzJBcnJheShKT0lOVF9DT1VOVCAtIDEpOworICAgICAgICAgICAgeHJGcmFtZS5maWxs
Sm9pbnRSYWRpaShoYW5kLnZhbHVlcygpLCByYWRpaUFycmF5V2l0aFdyb25nU2l6ZSk7CisgICAg
ICAgIH0pOworCisgICAgICAgIGxldCByYWRpaSA9IG5ldyBGbG9hdDMyQXJyYXkoSk9JTlRfQ09V
TlQpOworICAgICAgICBsZXQgYWxsVmFsaWQgPSB4ckZyYW1lLmZpbGxKb2ludFJhZGlpKGhhbmQu
dmFsdWVzKCksIHJhZGlpKTsKKyAgICAgICAgYXNzZXJ0X3RydWUoYWxsVmFsaWQpOworICAgICAg
ICBmb3IgKHJhZGl1cyBvZiByYWRpaSkgeworICAgICAgICAgICAgYXNzZXJ0X2FwcHJveF9lcXVh
bHMocmFkaXVzLCBURVNUX0hBTkRfSk9JTlRfUkFESVVTLCBGTE9BVF9FUFNJTE9OKTsKKyAgICAg
ICAgfQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICAgIHNlc3Npb24ucmVxdWVz
dEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4cl9zZXNzaW9uX3Byb21p
c2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMs
ICdpbW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsiaGFuZC10cmFja2luZyJdIH0p
OworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hy
RnJhbWVfZmlsbEpvaW50UmFkaWlfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbEpvaW50UmFkaWlfbWlzc2luZ19q
b2ludF9wb3NlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzFmN2NkMzdjNmRiY2E4NmY2YmY2
YmY0MTJjMjQ5OTkxNTQ3YzU1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0
ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRp
aSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSAtIHdlYmdsCitQQVNT
IFRlc3QgWFJGcmFtZS5maWxsSm9pbnRSYWRpaSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Np
bmcgam9pbnQgcG9zZSAtIHdlYmdsMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dw
dC93ZWJ4ci94ckZyYW1lX2ZpbGxKb2ludFJhZGlpX21pc3Npbmdfam9pbnRfcG9zZS5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5n
X2pvaW50X3Bvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MDkxNWVjODFiODkzYTVhYzU3ZGNiZjVlYmM4
Mjc2OGU0ZmZhYzk0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
eHIveHJGcmFtZV9maWxsSm9pbnRSYWRpaV9taXNzaW5nX2pvaW50X3Bvc2UuaHRtbApAQCAtMCww
ICsxLDQ4IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5q
cyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRz
X3NpbmdsZV92aWV3LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi93ZWJ4ci9yZXNv
dXJjZXMvd2VieHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4KK2xldCB0
ZXN0TmFtZSA9ICJUZXN0IFhSRnJhbWUuZmlsbEpvaW50UmFkaWkgd2hlcmUgdGhlIGhhbmQgaGFz
IG9uZSBtaXNzaW5nIGpvaW50IHBvc2UiOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMgPSBU
UkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5HOworCitsZXQgdGVzdEZ1
bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNlc3Np
b25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250cm9sbGVy
LnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5kZWRuZXNzOiAibm9uZSIs
CisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisgICAgcG9pbnRlck9yaWdp
bjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdLAorICAgIGhhbmRK
b2ludHM6IEhBTkRfSk9JTlRTX1dJVEhfT05FX0lOVkFMSUQsCisgIH0pOworCisgIHJldHVybiBz
ZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50aGVuKChyZWZlcmVu
Y2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKworICAgICAgZnVuY3Rpb24g
b25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHNlc3Np
b24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5kID0gc2Vzc2lvbi5p
bnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhoYW5kLCBudWxs
KTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhoYW5kLnNpemUsIEpPSU5UX0NPVU5UKTsKKworICAg
ICAgICBsZXQgcmFkaWkgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NPVU5UKTsKKyAgICAgICAg
bGV0IGFsbFZhbGlkID0geHJGcmFtZS5maWxsSm9pbnRSYWRpaShoYW5kLnZhbHVlcygpLCByYWRp
aSk7CisgICAgICAgIGFzc2VydF9mYWxzZShhbGxWYWxpZCk7CisgICAgICAgIGZvciAocmFkaXVz
IG9mIHJhZGlpKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKHJhZGl1cywgTmFOKTsKKyAg
ICAgICAgfQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICAgIHNlc3Npb24ucmVx
dWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4cl9zZXNzaW9uX3By
b21pc2VfdGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJh
bXMsICdpbW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsiaGFuZC10cmFja2luZyJd
IH0pOworCis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhy
L3hyRnJhbWVfZmlsbFBvc2VzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dl
YnhyL3hyRnJhbWVfZmlsbFBvc2VzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xNzEwMGIyOTA5
Mjc0NzQ0NTdkZDgzOGRmYWU3NDQ1M2I2MmNkZjc2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFtZV9maWxsUG9zZXMtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsUG9zZXMgLSB3ZWJnbAorUEFTUyBU
ZXN0IFhSRnJhbWUuZmlsbFBvc2VzIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3N2IyMTI5MTc2
ZTcwOTBlZmJjYTY2MmRhNGNkNWIzOGQyNGEyZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlcy5odG1sCkBAIC0wLDAgKzEsNTcg
QEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQu
anMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl91dGlsLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVzdF9jb25zdGFudHNfc2luZ2xl
X3ZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3dlYnhyL3Jlc291cmNlcy93
ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorbGV0IHRlc3ROYW1l
ID0gIlRlc3QgWFJGcmFtZS5maWxsUG9zZXMiOworCitsZXQgZmFrZURldmljZUluaXRQYXJhbXMg
PSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5HOworCitsZXQgdGVz
dEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQsIHNl
c3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250cm9s
bGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5kZWRuZXNzOiAibm9u
ZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisgICAgcG9pbnRlck9y
aWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdLAorICAgIGhh
bmRKb2ludHM6IFZBTElEX0hBTkRfSk9JTlRTLAorICB9KTsKKworICByZXR1cm4gc2Vzc2lvbi5y
ZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhlbigocmVmZXJlbmNlU3BhY2Up
ID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1bmN0aW9uIG9uRnJhbWUo
dGltZSwgeHJGcmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLmlucHV0
U291cmNlcy5sZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9IHNlc3Npb24uaW5wdXRTb3Vy
Y2VzWzBdLmhhbmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZCwgbnVsbCk7CisKKyAg
ICAgICAgY29uc3QgZmxvYXRzUGVyVHJhbnNmb3JtID0gMTY7CisgICAgICAgIGFzc2VydF90aHJv
d3NfanMoVHlwZUVycm9yLCBmdW5jdGlvbigpIHsKKyAgICAgICAgICAgIGxldCB0cmFuc2Zvcm1z
QXJyYXlXaXRoV3JvbmdTaXplID0gbmV3IEZsb2F0MzJBcnJheShKT0lOVF9DT1VOVCAqIGZsb2F0
c1BlclRyYW5zZm9ybSAtIDEpOworICAgICAgICAgICAgeHJGcmFtZS5maWxsUG9zZXMoaGFuZC52
YWx1ZXMoKSwgdHJhbnNmb3Jtc0FycmF5V2l0aFdyb25nU2l6ZSk7CisgICAgICAgIH0pOworCisg
ICAgICAgIGxldCB0cmFuc2Zvcm1zID0gbmV3IEZsb2F0MzJBcnJheShKT0lOVF9DT1VOVCAqIGZs
b2F0c1BlclRyYW5zZm9ybSk7CisgICAgICAgIGxldCBhbGxWYWxpZCA9IHhyRnJhbWUuZmlsbFBv
c2VzKGhhbmQudmFsdWVzKCksIHJlZmVyZW5jZVNwYWNlLCB0cmFuc2Zvcm1zKTsKKyAgICAgICAg
YXNzZXJ0X3RydWUoYWxsVmFsaWQpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBKT0lOVF9DT1VOVDsgKytpKSB7CisgICAgICAgICAgICBsZXQgdHJhbnNmb3JtU3RhcnRJ
bmRleCA9IGkgKiBmbG9hdHNQZXJUcmFuc2Zvcm07CisgICAgICAgICAgICBmb3IgKHZhciBqID0g
MDsgaiA8IGZsb2F0c1BlclRyYW5zZm9ybTsgKytqKSB7CisgICAgICAgICAgICAgICAgYXNzZXJ0
X2FwcHJveF9lcXVhbHModHJhbnNmb3Jtc1t0cmFuc2Zvcm1TdGFydEluZGV4ICsgal0sIFZBTElE
X1BPU0VfTUFUUklYW2pdLCBGTE9BVF9FUFNJTE9OKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIHJlc29sdmUoKTsKKyAgICAgIH0KKyAgICAgIHNlc3Npb24ucmVxdWVzdEFu
aW1hdGlvbkZyYW1lKG9uRnJhbWUpOworICB9KSk7Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2Vf
dGVzdCgKKyAgdGVzdE5hbWUsIHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMsICdp
bW1lcnNpdmUtdnInLCB7IG9wdGlvbmFsRmVhdHVyZXM6IFsiaGFuZC10cmFja2luZyJdIH0pOwor
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJh
bWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pvaW50X3Bvc2UtZXhw
ZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0Mjk0NDg3NGY4NjVjZDQ2MWZiZmM1YjhjMWJjYzI3ZDQx
NDg0MTUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZy
YW1lX2ZpbGxQb3Nlc19taXNzaW5nX2pvaW50X3Bvc2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEs
NCBAQAorCitQQVNTIFRlc3QgWFJGcmFtZS5maWxsUG9zZXMgd2hlcmUgdGhlIGhhbmQgaGFzIG9u
ZSBtaXNzaW5nIGpvaW50IHBvc2UgLSB3ZWJnbAorUEFTUyBUZXN0IFhSRnJhbWUuZmlsbFBvc2Vz
IHdoZXJlIHRoZSBoYW5kIGhhcyBvbmUgbWlzc2luZyBqb2ludCBwb3NlIC0gd2ViZ2wyCisKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21p
c3Npbmdfam9pbnRfcG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJGcmFt
ZV9maWxsUG9zZXNfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTNlNzU4ZTAx
OGFkM2YyNGQzYThiOTJhN2YxMTZkMjUwMzRmNGE2NwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZmlsbFBvc2VzX21pc3Npbmdfam9pbnRfcG9z
ZS5odG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy93ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJf
dGVzdF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4u
Ly4uL3dlYnhyL3Jlc291cmNlcy93ZWJ4cl90ZXN0X2Fzc2VydHMuanMiPjwvc2NyaXB0PgorCis8
c2NyaXB0PgorbGV0IHRlc3ROYW1lID0gIlRlc3QgWFJGcmFtZS5maWxsUG9zZXMgd2hlcmUgdGhl
IGhhbmQgaGFzIG9uZSBtaXNzaW5nIGpvaW50IHBvc2UiOworCitsZXQgZmFrZURldmljZUluaXRQ
YXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5HOworCits
ZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIs
IHQsIHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VD
b250cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5kZWRuZXNz
OiAibm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisgICAgcG9p
bnRlck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdLAor
ICAgIGhhbmRKb2ludHM6IEhBTkRfSk9JTlRTX1dJVEhfT05FX0lOVkFMSUQsCisgIH0pOworCisg
IHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZlcmVuY2VTcGFjZSgnbG9jYWwnKQorICAgIC50aGVu
KChyZWZlcmVuY2VTcGFjZSkgPT4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHsKKworICAgICAg
ZnVuY3Rpb24gb25GcmFtZSh0aW1lLCB4ckZyYW1lKSB7CisgICAgICAgIGFzc2VydF9ub3RfZXF1
YWxzKHNlc3Npb24uaW5wdXRTb3VyY2VzLmxlbmd0aCwgMCk7CisgICAgICAgIGxldCBoYW5kID0g
c2Vzc2lvbi5pbnB1dFNvdXJjZXNbMF0uaGFuZAorICAgICAgICBhc3NlcnRfbm90X2VxdWFscyho
YW5kLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyhoYW5kLnNpemUsIEpPSU5UX0NPVU5U
KTsKKworICAgICAgICBjb25zdCBmbG9hdHNQZXJUcmFuc2Zvcm0gPSAxNjsKKyAgICAgICAgbGV0
IHRyYW5zZm9ybXMgPSBuZXcgRmxvYXQzMkFycmF5KEpPSU5UX0NPVU5UICogZmxvYXRzUGVyVHJh
bnNmb3JtKTsKKyAgICAgICAgbGV0IGFsbFZhbGlkID0geHJGcmFtZS5maWxsUG9zZXMoaGFuZC52
YWx1ZXMoKSwgcmVmZXJlbmNlU3BhY2UsIHRyYW5zZm9ybXMpOworICAgICAgICBhc3NlcnRfZmFs
c2UoYWxsVmFsaWQpOworICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBKT0lO
VF9DT1VOVCAqIGZsb2F0c1BlclRyYW5zZm9ybTsgKytpKSB7CisgICAgICAgICAgICBhc3NlcnRf
ZXF1YWxzKHRyYW5zZm9ybXNbaV0sIE5hTik7CisgICAgICAgIH0KKworICAgICAgICByZXNvbHZl
KCk7CisgICAgICB9CisgICAgICBzZXNzaW9uLnJlcXVlc3RBbmltYXRpb25GcmFtZShvbkZyYW1l
KTsKKyAgfSkpOworfTsKKworeHJfc2Vzc2lvbl9wcm9taXNlX3Rlc3QoCisgIHRlc3ROYW1lLCB0
ZXN0RnVuY3Rpb24sIGZha2VEZXZpY2VJbml0UGFyYW1zLCAnaW1tZXJzaXZlLXZyJywgeyBvcHRp
b25hbEZlYXR1cmVzOiBbImhhbmQtdHJhY2tpbmciXSB9KTsKKworPC9zY3JpcHQ+CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9z
ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODkyNGYwNTFmMjllYTUwNzY2ZTk5ZDRhZDM1NWNj
MGJjM2NmZWM2YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhy
L3hyRnJhbWVfZ2V0Sm9pbnRQb3NlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFT
UyBUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIC0gd2ViZ2wKK1BBU1MgVGVzdCBYUkZyYW1lLmdl
dEpvaW50UG9zZSAtIHdlYmdsMgorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC93
ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZS5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2Vi
eHIveHJGcmFtZV9nZXRKb2ludFBvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMDc4ZDhmZmQ2MTIzMzE5
NTA5ZWY4MWIzZWQ4Njk1MjIyZGI5Mjk5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2UuaHRtbApAQCAtMCwwICsxLDQ4IEBA
Cis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdXRpbC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3Rlc3RfY29uc3RhbnRzX3NpbmdsZV92
aWV3LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi93ZWJ4ci9yZXNvdXJjZXMvd2Vi
eHJfdGVzdF9hc3NlcnRzLmpzIj48L3NjcmlwdD4KKworPHNjcmlwdD4KK2xldCB0ZXN0TmFtZSA9
ICJUZXN0IFhSRnJhbWUuZ2V0Sm9pbnRQb3NlIjsKKworbGV0IGZha2VEZXZpY2VJbml0UGFyYW1z
ID0gVFJBQ0tFRF9JTU1FUlNJVkVfREVWSUNFX1dJVEhfSEFORF9UUkFDS0lORzsKKworbGV0IHRl
c3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVyLCB0LCBz
ZXNzaW9uT2JqZWN0cykgeworCisgIGxldCBpbnB1dF9zb3VyY2UgPSBmYWtlRGV2aWNlQ29udHJv
bGxlci5zaW11bGF0ZUlucHV0U291cmNlQ29ubmVjdGlvbih7CisgICAgaGFuZGVkbmVzczogIm5v
bmUiLAorICAgIHRhcmdldFJheU1vZGU6ICJ0cmFja2VkLXBvaW50ZXIiLAorICAgIHBvaW50ZXJP
cmlnaW46IFZBTElEX1BPSU5URVJfVFJBTlNGT1JNLAorICAgIHByb2ZpbGVzOiBbXSwKKyAgICBo
YW5kSm9pbnRzOiBWQUxJRF9IQU5EX0pPSU5UUywKKyAgfSk7CisKKyAgcmV0dXJuIHNlc3Npb24u
cmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRoZW4oKHJlZmVyZW5jZVNwYWNl
KSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAgICBmdW5jdGlvbiBvbkZyYW1l
KHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoc2Vzc2lvbi5pbnB1
dFNvdXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQgPSBzZXNzaW9uLmlucHV0U291
cmNlc1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGhhbmQsIG51bGwpOworICAg
ICAgICAKKyAgICAgICAgbGV0IGpvaW50U3BhY2UgPSBoYW5kLmdldCgid3Jpc3QiKTsKKyAgICAg
ICAgYXNzZXJ0X25vdF9lcXVhbHMoam9pbnRTcGFjZSwgbnVsbCk7CisgICAgICAgIAorICAgICAg
ICBsZXQgam9pbnRQb3NlID0geHJGcmFtZS5nZXRKb2ludFBvc2Uoam9pbnRTcGFjZSwgcmVmZXJl
bmNlU3BhY2UpOworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhqb2ludFBvc2UsIG51bGwpOwor
ICAgICAgICBhc3NlcnRfYXBwcm94X2VxdWFscyhqb2ludFBvc2UucmFkaXVzLCBURVNUX0hBTkRf
Sk9JTlRfUkFESVVTLCBGTE9BVF9FUFNJTE9OKTsKKyAgICAgICAgYXNzZXJ0X21hdHJpeF9hcHBy
b3hfZXF1YWxzKGpvaW50UG9zZS50cmFuc2Zvcm0ubWF0cml4LCBWQUxJRF9QT1NFX01BVFJJWCwg
RkxPQVRfRVBTSUxPTik7CisKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQorICAgICAgc2Vz
c2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7CisgIH0pKTsKK307CisKK3hyX3Nl
c3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBmYWtlRGV2aWNl
SW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJlczogWyJoYW5kLXRy
YWNraW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2ludF9wb3NlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21p
c3Npbmdfam9pbnRfcG9zZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjE5ZDc5YjAzYTNlNjg5
NzQ4ZWVjZDViZDdiZDA1NTJjYTc2OWVmNgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3dlYnhyL3hyRnJhbWVfZ2V0Sm9pbnRQb3NlX21pc3Npbmdfam9pbnRfcG9zZS1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSw0IEBACisKK1BBU1MgVGVzdCBYUkZyYW1lLmdldEpvaW50
UG9zZSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1pc3Npbmcgam9pbnQgcG9zZSAtIHdlYmdsCitQ
QVNTIFRlc3QgWFJGcmFtZS5nZXRKb2ludFBvc2Ugd2hlcmUgdGhlIGhhbmQgaGFzIG9uZSBtaXNz
aW5nIGpvaW50IHBvc2UgLSB3ZWJnbDIKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93
cHQvd2VieHIveHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckZyYW1lX2dldEpvaW50UG9zZV9taXNzaW5nX2pv
aW50X3Bvc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMzNlMWIxZWI5NjI0NmNjMGMzNzc4ZjVlNzc2YWQ5
NmJlOGUxODM5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIv
eHJGcmFtZV9nZXRKb2ludFBvc2VfbWlzc2luZ19qb2ludF9wb3NlLmh0bWwKQEAgLTAsMCArMSw0
OSBAQAorPCFET0NUWVBFIGh0bWw+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9y
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnhyX3V0aWwuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93ZWJ4cl90ZXN0X2NvbnN0YW50c19zaW5n
bGVfdmlldy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vd2VieHIvcmVzb3VyY2Vz
L3dlYnhyX3Rlc3RfYXNzZXJ0cy5qcyI+PC9zY3JpcHQ+CisKKzxzY3JpcHQ+CitsZXQgdGVzdE5h
bWUgPSAiVGVzdCBYUkZyYW1lLmdldEpvaW50UG9zZSB3aGVyZSB0aGUgaGFuZCBoYXMgb25lIG1p
c3Npbmcgam9pbnQgcG9zZSI7CisKK2xldCBmYWtlRGV2aWNlSW5pdFBhcmFtcyA9IFRSQUNLRURf
SU1NRVJTSVZFX0RFVklDRV9XSVRIX0hBTkRfVFJBQ0tJTkc7CisKK2xldCB0ZXN0RnVuY3Rpb24g
PSBmdW5jdGlvbihzZXNzaW9uLCBmYWtlRGV2aWNlQ29udHJvbGxlciwgdCwgc2Vzc2lvbk9iamVj
dHMpIHsKKworICBsZXQgaW5wdXRfc291cmNlID0gZmFrZURldmljZUNvbnRyb2xsZXIuc2ltdWxh
dGVJbnB1dFNvdXJjZUNvbm5lY3Rpb24oeworICAgIGhhbmRlZG5lc3M6ICJub25lIiwKKyAgICB0
YXJnZXRSYXlNb2RlOiAidHJhY2tlZC1wb2ludGVyIiwKKyAgICBwb2ludGVyT3JpZ2luOiBWQUxJ
RF9QT0lOVEVSX1RSQU5TRk9STSwKKyAgICBwcm9maWxlczogW10sCisgICAgaGFuZEpvaW50czog
SEFORF9KT0lOVFNfV0lUSF9PTkVfSU5WQUxJRCwKKyAgfSk7CisKKyAgcmV0dXJuIHNlc3Npb24u
cmVxdWVzdFJlZmVyZW5jZVNwYWNlKCdsb2NhbCcpCisgICAgLnRoZW4oKHJlZmVyZW5jZVNwYWNl
KSA9PiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4geworCisgICAgICBmdW5jdGlvbiBvbkZyYW1l
KHRpbWUsIHhyRnJhbWUpIHsKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoc2Vzc2lvbi5pbnB1
dFNvdXJjZXMubGVuZ3RoLCAwKTsKKyAgICAgICAgbGV0IGhhbmQgPSBzZXNzaW9uLmlucHV0U291
cmNlc1swXS5oYW5kCisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKGhhbmQsIG51bGwpOworICAg
ICAgICBhc3NlcnRfZXF1YWxzKGhhbmQuc2l6ZSwgSk9JTlRfQ09VTlQpOworCisgICAgICAgIGxl
dCB3cmlzdEpvaW50U3BhY2UgPSBoYW5kLmdldCgid3Jpc3QiKTsKKyAgICAgICAgYXNzZXJ0X25v
dF9lcXVhbHMod3Jpc3RKb2ludFNwYWNlLCBudWxsKTsKKyAgICAgICAgYXNzZXJ0X2VxdWFscyh4
ckZyYW1lLmdldEpvaW50UG9zZSh3cmlzdEpvaW50U3BhY2UsIHJlZmVyZW5jZVNwYWNlKSwgbnVs
bCk7CisKKyAgICAgICAgbGV0IHBpbmt5VGlwSm9pbnRTcGFjZSA9IGhhbmQuZ2V0KCJwaW5reS1m
aW5nZXItdGlwIik7CisgICAgICAgIGFzc2VydF9ub3RfZXF1YWxzKHBpbmt5VGlwSm9pbnRTcGFj
ZSwgbnVsbCk7CisgICAgICAgIGFzc2VydF9lcXVhbHMoeHJGcmFtZS5nZXRKb2ludFBvc2UocGlu
a3lUaXBKb2ludFNwYWNlLCByZWZlcmVuY2VTcGFjZSksIG51bGwpOworCisgICAgICAgIHJlc29s
dmUoKTsKKyAgICAgIH0KKyAgICAgIHNlc3Npb24ucmVxdWVzdEFuaW1hdGlvbkZyYW1lKG9uRnJh
bWUpOworICB9KSk7Cit9OworCit4cl9zZXNzaW9uX3Byb21pc2VfdGVzdCgKKyAgdGVzdE5hbWUs
IHRlc3RGdW5jdGlvbiwgZmFrZURldmljZUluaXRQYXJhbXMsICdpbW1lcnNpdmUtdnInLCB7IG9w
dGlvbmFsRmVhdHVyZXM6IFsiaGFuZC10cmFja2luZyJdIH0pOworCis8L3NjcmlwdD4KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZC1leHBlY3RlZC50eHQgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjNkNWEwZjI0MDY1ZTk2NTU1OTNkYThlYjZiMTJmOGUwN2RiNGQ3NzEKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsNCBAQAorCitQQVNTIFRlc3QgdGhlIFhSSGFuZCBBUEkgLSB3ZWJnbAorUEFTUyBUZXN0
IHRoZSBYUkhhbmQgQVBJIC0gd2ViZ2wyCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnhyL3hySGFuZC5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5k
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZWJmMzYyNmU0Yjc2NjZlNjM1MTU1YzM0NWUxMzhhOTdlZTAwNThi
NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3dlYnhyL3hySGFuZC5o
dG1sCkBAIC0wLDAgKzEsNTAgQEAKKzwhRE9DVFlQRSBodG1sPgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy93
ZWJ4cl91dGlsLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvd2VieHJfdGVz
dF9jb25zdGFudHNfc2luZ2xlX3ZpZXcuanMiPjwvc2NyaXB0PgorCis8c2NyaXB0PgorbGV0IHRl
c3ROYW1lID0gIlRlc3QgdGhlIFhSSGFuZCBBUEkiOworCitsZXQgZmFrZURldmljZUluaXRQYXJh
bXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5EX1RSQUNLSU5HOworCitsZXQg
dGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURldmljZUNvbnRyb2xsZXIsIHQs
IHNlc3Npb25PYmplY3RzKSB7CisKKyAgbGV0IGlucHV0X3NvdXJjZSA9IGZha2VEZXZpY2VDb250
cm9sbGVyLnNpbXVsYXRlSW5wdXRTb3VyY2VDb25uZWN0aW9uKHsKKyAgICBoYW5kZWRuZXNzOiAi
bm9uZSIsCisgICAgdGFyZ2V0UmF5TW9kZTogInRyYWNrZWQtcG9pbnRlciIsCisgICAgcG9pbnRl
ck9yaWdpbjogVkFMSURfUE9JTlRFUl9UUkFOU0ZPUk0sCisgICAgcHJvZmlsZXM6IFtdLAorICAg
IGhhbmRKb2ludHM6IFZBTElEX0hBTkRfSk9JTlRTLAorICB9KTsKKworICByZXR1cm4gc2Vzc2lv
bi5yZXF1ZXN0UmVmZXJlbmNlU3BhY2UoJ2xvY2FsJykKKyAgICAudGhlbigocmVmZXJlbmNlU3Bh
Y2UpID0+IG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7CisKKyAgICAgIGZ1bmN0aW9uIG9uRnJh
bWUodGltZSwgeHJGcmFtZSkgeworICAgICAgICBhc3NlcnRfbm90X2VxdWFscyhzZXNzaW9uLmlu
cHV0U291cmNlcy5sZW5ndGgsIDApOworICAgICAgICBsZXQgaGFuZCA9IHNlc3Npb24uaW5wdXRT
b3VyY2VzWzBdLmhhbmQKKyAgICAgICAgYXNzZXJ0X25vdF9lcXVhbHMoaGFuZCwgbnVsbCk7Cisg
ICAgICAgIGFzc2VydF9lcXVhbHMoaGFuZC5zaXplLCAyNSk7CisgICAgICAgIAorICAgICAgICBs
ZXQgd3Jpc3RKb2ludFNwYWNlID0gaGFuZC5nZXQoIndyaXN0Iik7CisgICAgICAgIGFzc2VydF9l
cXVhbHMod3Jpc3RKb2ludFNwYWNlLmpvaW50TmFtZSwgIndyaXN0Iik7CisKKyAgICAgICAgdmFy
IGNvdW50ID0gMDsKKyAgICAgICAgZm9yIChjb25zdCBbam9pbnROYW1lLCBqb2ludFNwYWNlXSBv
ZiBoYW5kKSB7CisgICAgICAgICAgICBhc3NlcnRfZXF1YWxzKGpvaW50U3BhY2Uuam9pbnROYW1l
LCBqb2ludE5hbWUpOworICAgICAgICAgICAgY291bnQrKzsKKyAgICAgICAgfQorICAgICAgICBh
c3NlcnRfZXF1YWxzKGNvdW50LCAyNSk7CisKKyAgICAgICAgcmVzb2x2ZSgpOworICAgICAgfQor
ICAgICAgc2Vzc2lvbi5yZXF1ZXN0QW5pbWF0aW9uRnJhbWUob25GcmFtZSk7CisgIH0pKTsKK307
CisKK3hyX3Nlc3Npb25fcHJvbWlzZV90ZXN0KAorICB0ZXN0TmFtZSwgdGVzdEZ1bmN0aW9uLCBm
YWtlRGV2aWNlSW5pdFBhcmFtcywgJ2ltbWVyc2l2ZS12cicsIHsgb3B0aW9uYWxGZWF0dXJlczog
WyJoYW5kLXRyYWNraW5nIl0gfSk7CisKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvd2VieHIveHJIYW5kSW5wdXRfZ2MuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAv
d3B0L3dlYnhyL3hySGFuZElucHV0X2djLmh0bWwKaW5kZXggNzcyODJmNmY0MTY2Mzg4NTM4MjE5
YzE0NDY1NmYwYzA5YjZlZGYwZS4uYjU2MTU5NDdjNWQwYmJmMTkyOWUwZGNlMTRjMDlkN2Q0NDE3
YzllOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvd2VieHIveHJIYW5kSW5wdXRf
Z2MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC93ZWJ4ci94ckhhbmRJbnB1dF9nYy5o
dG1sCkBAIC0xNyw3ICsxNyw3IEBAIGZ1bmN0aW9uIGdjKCkKIAogbGV0IHRlc3ROYW1lID0gIlRl
c3Qgb2JqZWN0IGxpZmV0aW1lIG9mIEhhbmQgSW5wdXQgbW9kdWxlIjsKIAotbGV0IGZha2VEZXZp
Y2VJbml0UGFyYW1zID0gVFJBQ0tFRF9JTU1FUlNJVkVfU0lOR0xFX1ZJRVdERVZJQ0U7CitsZXQg
ZmFrZURldmljZUluaXRQYXJhbXMgPSBUUkFDS0VEX0lNTUVSU0lWRV9ERVZJQ0VfV0lUSF9IQU5E
X1RSQUNLSU5HOwogCiBsZXQgdGVzdEZ1bmN0aW9uID0gZnVuY3Rpb24oc2Vzc2lvbiwgZmFrZURl
dmljZUNvbnRyb2xsZXIsIHQsIHNlc3Npb25PYmplY3RzKSB7CiAKQEAgLTI2LDcgKzI2LDcgQEAg
bGV0IHRlc3RGdW5jdGlvbiA9IGZ1bmN0aW9uKHNlc3Npb24sIGZha2VEZXZpY2VDb250cm9sbGVy
LCB0LCBzZXNzaW9uT2JqZWN0cykgewogICAgIHRhcmdldFJheU1vZGU6ICJ0cmFja2VkLXBvaW50
ZXIiLAogICAgIHBvaW50ZXJPcmlnaW46IFZBTElEX1BPSU5URVJfVFJBTlNGT1JNLAogICAgIHBy
b2ZpbGVzOiBbXSwKLSAgICBzaW11bGF0ZUhhbmQ6IHRydWUsCisgICAgaGFuZEpvaW50czogVkFM
SURfSEFORF9KT0lOVFMsCiAgIH0pOwogCiAgIHJldHVybiBzZXNzaW9uLnJlcXVlc3RSZWZlcmVu
Y2VTcGFjZSgnbG9jYWwnKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luL1Rl
c3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9u
cwppbmRleCBhMzhjNGRiNGJhN2RkMzJkNmE0MTkyYjkyMDRjZTk2YTY3ZGVhZGYyLi5hZTFjNWMz
MTlkNmVmOWI3N2I2MGI1Y2UxNjA1ZmYwODU4ZThkMzQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS93aW4vVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS93aW4vVGVzdEV4cGVjdGF0aW9ucwpAQCAtNDkwMCw2ICs0OTAwLDggQEAgc3RvcmFnZS9pbmRl
eGVkZGIvc3RydWN0dXJlZC1jbG9uZS1pbWFnZS1kYXRhLWRpc3BsYXktcDMuaHRtbCBbIFNraXAg
XQogCiAjIFdlYlhSIGlzIG5vdCBlbmFibGVkIG9uIHdpbmRvd3MuCiB3ZWJ4ciBbIFNraXAgXQor
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy93ZWJ4ciBbIFNraXAgXQoraHR0cC93cHQv
d2VieHIgWyBTa2lwIF0KIAogIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MjI2OTcwCiBmYXN0L2Nzcy9wYXJzZS1ib3JkZXItaW1hZ2UtcmVwZWF0LW51bGwtY3Jhc2gu
aHRtbCBbIEZhaWx1cmUgXQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>